2009年10月21日星期三

教你把免费空间如何变成代理服务器—翻墙利器


-[随笔]
camsonjame 发表于 2008年11月06日 6 评论

在四驱动博客上见到一好文,考虑到有时候还真的得翻墙看些东西,把教材转载下来了,再次感谢作者的分享。

原文如下:

不 在网上查资料还真的不知道,中国互联网墙(G.F.W)真的太伟大太牛了!你想要看的网站一个个被堵在墙后,无法浏览。其实各国都一样,互联网墙无处不 在,前一段时间还有欧洲一个国家居然把w3c.org列入不适合儿童浏览的网站而被墙了,汗~!于是乎,有了代理服务器,各种代理软件,为了我们要得手的 优秀资源,我们翻墙~!网上的免费代理服务器不是因为广告太多、速度太慢等原因不能让人满意,这里我们要讨论的是,利用网络上大量的免费空间来构建自己的 代理服务器。


首先看要求,该免费空间必须处于国外,当然最好是美国,然后该服务器必须支持php,因为我们的代理软件程序就是基于php的,服务器的各种环境配置必须 支持,这个可以用php探针来检测,最好服务器要支持openssl。当然,一般的美国免费空间的环境都是支持的,没有问题。

第一种,构建Surrogafier的Web Proxy,在线代理。
前几天在网上逛,看到了这个程序(Surrogafier),单文件的web proxy,经过我的修改和美化,基本上浏览正常的http和https都没有太多的问题,而且只要你选用的空间速度足够快,那么你翻墙的速度就越快。我 已经美化成live的样式,不喜欢的可以用原版。

该程序演示地址 http://igohsy.site88.net/phproxy.php

下载地址(Surrogafier.zip):http://gohsy.com/down/index.php?act=category&id=6

Surrogafier项目的主页:http://bcable.net/

优缺点:使用简单、方便。能够访问绝大多数被墙的网站,仅对于个别加密网站会出现个别问题。

第二种,用phpproxy搭建本地local代理。
这个方法我个人还是比较喜欢的,前几天在网上逛,看到了phpproxy,注意该phpproxy不同于这个phproxy,前者是我们现在要讨论的,后者是网上常见的代理服务器程序,后者也略同于第一种方法,属于web代理形式的。我们来说前者。

在phpproxy的readme中有关于原理的讲解。

首先看看http请求的流程可以帮助你正确的使用PHPProxy,如下:

| 1    你的浏览器

| 2   PHPProxy客户端模块(phpproxy.py)

| [3] 可能存在的客户端代理(比如你本来就是使用代理上网的,公司的代理等等)

| 4   PHP空间 + PHPProxy服务端模块(phpproxy.php)

| [5] 可能存在的服务器端代理(比如你的PHP空间也是用代理上网的)

| 6   目标资源

说明:

首 先浏览器(1)发送http请求到PHPProxy(2),phpproxy.py(2)将这个http请求压缩到另一个http请求中,然后以表单参数 的形式直接或通过可能存在在代理[3]发送到phpproxy.php(4),phpproxy(4)收到请求后,解压出原始的http请求,直接或通过 可能存在的proxy[5]发送到目标资源(6)。

原理讲完了,再看看具体怎样操作。

安装:

服务器端:下载 phpproxy-0.6.tar.gz,解压,打开phpproxy.php,此文件的原版有问题,已经过我修改。默认所有IP都具备访问权限,此时一 定要注意保密proxy地址,否则大家都来用这个proxy的话,空间的流量会让你吃不消的。要只想让自己用,把第7行里的1.2.3.4改成你的IP, 并去掉行第7行和第20行的行首的"#"字符,这样就只有你才可以使用这个代理。

上传整个文件夹到你的空间中,记下它的路径,如http://example/phpproxy/phpproxy.php

客户端:下载phpproxy.py.exe-0.6.zip,解压到本机文件夹,打开phpproxy.py.conf,定位到14行,把phpproxy的值设置成http://example/phpproxy/phpproxy.php要设置成你空间中的phpproxy.php的url地址。

phpproxy.py.conf如下图修改。

 

使用:

 

运 行client文件夹中的phpproxy.py.exe,保持命令窗口一直打开,把浏览器的代理地理设置成127.0.0.1:8888,(这里的 8888是上面在phpproxy.py.conf中设置的端口号,可以自己改)OK了,试试被墙的googlepage,windows live skydrive ……

该程序下载地址(phpproxy.zip):http://gohsy.com/down/index.php?act=category&id=6

注意:
该文章出自 《四驱动™ Blog of gohsy》 ,原文链接:http://blog.gohsy.com/topics/proxy-by-self.html转载时间是: 2008-11-05 15:53:16 请保留此链接,尊重原创!谢谢!



--
Roley Zhang from Gmail

G1隐藏的Proxy设置及Market一不能下载问题解决 | 于仁颇黎@机器人

G1隐藏的Proxy设置及Market一不能下载问题解决 | 于仁颇黎@机器人: "纯属记录一笔,以防止下次忘记。

1.G1隐藏的proxy设置
G1 Proxy

其实作为一个最具智能的手机操作系统,android继承了linux的诸多优点,自然也不会少了proxy设置这一个最为关键的功能,但是这个功能我们在setting里面并没有找到,事实上这是一个隐藏的功能。需要使用”语音呼叫“功能,也就是长按”通话“键,然后对着手机说“proxy”,等待一会儿,就会有一个proxy setting的选项出来,填上你要设置的IP和端口就可以使用了"

2009年10月19日星期一

[转帖]不用代理直接访问youtube - 电脑数码 - - 上海大学乐乎论坛

[转帖]不用代理直接访问youtube - 电脑数码 - - 上海大学乐乎论坛: "例如添加下面2个:
  
203.208.39.104 www.youtube.com
203.208.33.100 gdata.youtube.com
  
   需要上传视频的用户添加下面这个:
  
203.208.39.99 upload.youtube.com
  
   可选:
  
203.208.39.99 insight.youtube.com
203.208.39.160 help.youtube.com
203.208.39.104 youtube.com



建议用搜索到的新ip地址,不要用这个帖子里默认的,毕竟大家用一样的终归不太好。

搜索方法如下:







开始->运行 输入cmd

再输入:

nslookup www.google.cn

可获得几个IP都可以使用(不要用国外DNS,获得的是国外IP)"

g1 翻墙

74.125.93.113 android.clients.google.com
209.85.229.139 android.clients.google.com
209.85.229.101 android.clients.google.com
64.233.189.102 android.clients.google.com

下面是一些常用的被封网站的HOST IP地址,最近一段时间应该很有用。包含...

下面是一些常用的被封网站的HOST IP地址,最近一段时间应该很有用。包含...: "# 下面是一些常用的被封网站的 HOST IP 地址,最近一段时间应该很有用。包含了 Google.com youtube.com twitter.com facebook.com 。至于 blogger 被封了 IP 地址,修改 HOST 文件无效,就 不多折腾了,需要的话可以直接用在线代理或者翻墙工具。 #Google 64.233.189.147 www.google.com 64.233.189.104 www.google.com 64.233.189.99 www.google.com 64.233.189.147 www.l.google.com 209.85.147.109 pop.gmail.com 209.85.147.109 smtp.gmail.com 64.233.189.18 mail.google.com 64.233.189.19 mail.google.com 64.233.189.83 mail.google.com 64.233.189.18 www.gmail.com 64.233.189.19 www.gmail.com 64.233.189.83 www.gmail.com 64.233.189.19 googlemail.l.google.com 64.233.189.101 writely-china.l.google.com 64.233.189.101 writely.l.google.com 64.233.189.102 docs.google.com 64.233.189.101 docs.google.com 64.233.189.100 docs.google.com 64.233.189.104 map.google.com 64.233.189.99 map.google.com
# 64.233.189.147 map.google.com 64.233.189.104 maps.google.com 64.233.189.99 maps.google.com 64.233.189.147 maps.google.com 64.233.189.99 maps.gstatic.com 203.208.39.93 khm.google.com 203.208.39.91 mt0.google.com 203.208.39.93 mt1.google.com 203.208.39.91 mt2.google.com 203.208.39.91 mt.l.google.com 64.233.189.99 maps.l.google.com 64.233.189.99 scholar.google.com 64.233.189.104 scholar.google.com 64.233.189.147 scholar.google.com 64.233.189.104 scholar.l.google.com 64.233.189.102 groups.google.com 64.233.189.100 groups.google.com 64.233.189.101 groups.google.com 64.233.189.101 groups.l.google.com 64.233.189.101 id.google.com 64.233.189.102 id.google.com 64.233.189.100 id.google.com 64.233.189.100 id.l.google.com #youtube
# 203.208.39.104 www.youtube.com 203.208.39.160 gdata.youtube.com 203.208.39.99 youtube.com 203.208.39.104 upload.youtube.com 203.208.39.160 insight.youtube.com 203.208.39.99 help.youtube.com 203.208.39.104 www.youtube.com 203.208.39.160 gdata.youtube.com 203.208.39.99 youtube.com 203.208.39.104 upload.youtube.com 203.208.39.160 insight.youtube.com 203.208.39.99 help.youtube.com #twitter 128.121.146.228 twitter.com 128.121.146.228 www.twitter.com 128.121.146.101 assets0.twitter.com 128.121.146.101 assets1.twitter.com 128.121.146.101 static.twitter.com 128.121.146.229 assets2.twitter.com 128.121.146.229 assets3.twitter.com 65.74.185.41 twitter.zendesk.com 65.74.185.41 help.twitter.com #Facebook 124.40.42.105 www.facebook.com
# 69.63.180.173 login.facebook.com 69.192.34.110 s-static.ak.facebook.com 69.63.176.69 secure-profile.facebook.com 69.63.176.59 secure-media-sf2p.facebook.com 69.63.178.13 ssl.facebook.com 96.6.122.57 profile.ak.facebook.com 64.211.21.152 b.static.ak.facebook.com 以上文本请根据: window 用户复制到:C:WINDOWSsystem32driversetc Linux 用户复制到:/ect/hosts 其他操作系统的用户我不太清楚,麻烦自行解决。Thank you. 关于自己折腾这些 IP 地址: 1/用自由门这个工具上面的 IP 地址解析工具解析被封的网址; 2/用 Http://0bad.com/ 解析被封网址的 A 记录; 3/用 OpenDNS 缓存工具查询: http://www.opendns.com/support/cache ; 4/随时关注其他被封网站的 HOST IP 地址; 5/方法不只上面几种,大家可以举一反三; 6/有些被封了 IP 地址的网站用 HOST 方法也是不行的,只能翻墙了; 注意:
# 1/请低调传播本文档,保证只给值得信任和身边的朋友的原则; 2/我会定期更新本文档的 HOST ip 地址,可以收藏; 3/大家可以联系我提供最新的 HOST IP 地址大全; 联系: E-MAIL: ellck.m@gmail.com Twitter: https://twitter.com/eLlck 再次提醒:低调传播... Edit this page (if you have permission) | Google Docs -- Web word processing, presentations and spreadsheets."

2009年10月18日星期日

SQLAlchemy & sqlite3

SQLAlchemy 支持多种数据库,有SQLite, Postgres, MySQL, and Oracle,看到它的许多例子都以 Sqlite 为例,我很高兴,因为我喜欢使用 Sqlite 这个小型的数据库。我想它对 sqlite 的支持应该很好。以后的学习都以 sqlite 为主。

  创建一个数据引擎

  from SQLAlchemy import *

  sqlite_engine = create_engine('sqlite://filename=d:/test.db')

 这是使用了近似协议的描述方式。还可以传入字典方式:

  from sqlalchemy import *

  sqlite_engine = create_engine('sqlite', {'filename':'d:/test.db'})

  这是最简单的。还可以带参数:

  echo=True 表示输出调试结果,缺省为stdout

  logger为一个类文件对象(不是一个文件名),当echo=True时用来输出。缺省为stdout

  还有其它几个参数,暂时用不上就不管它了。

  然后就是表结构的描述了。

  使用MetaData进行描述表结构



--
Roley Zhang from Gmail

2009年10月16日星期五

emacs cvs manual


http://www.donews.net/raoqn/archive/.../04/59395.aspx

Emacs 提供了一个功能齐全的 CVS 界面 PCL-CVS,使得 CVS 的工作基本可以单
键完成,此外,Emacs 的 VC 也非常方便。下面简单介绍 PCL-CVS 的使用,之后再
简要介绍 VC 的方便之处。

1. 当然,先用命令行 check out 出源码拷贝

$ cd ~/work
$ cvs -d server:user@host:/path/to/repository co MODULE

2. 从 Emacs 开始

几个命令都可以进入 PCL-CVS 中,例如用 cvs-examine:

M-x cvs-examine RET path/to/MODULE RET

RET 表示回车键;path/to/MODULE,源码复本的目录,cvs-examine 缺省为当前
目录。此时 Emacs 打开名为 *cvs* 的缓冲,就是 PCL-CVS 的主界面。

PCL-CVS 只是命令行 cvs 的前端界面。在 *cvs* 缓冲中的命令,基本只需要按
一两下键盘,Emacs 将其翻译为 cvs 控制命令。每执行一次,Emacs 会在缓冲
底部显示对应的 cvs 命令,以供参考。

3. 在 cvs 缓冲中常用的命令

n, p 移动光标。

f, o, RET 打开当前文件。

M-s 列出所有文件的当前状态。
x 在缓冲中去掉所有是 Up-To-Date 的状态的文件,这样比较干净。

M-u 更新本地拷贝。

U 放弃所做的改动,小心别把你没有提交的工作弄没了。

m 标记文件,用于对多个文件同时操作。u 去掉标记并下移;Backspace
去掉标记并上移;M-Backspace 同时去掉 buffer 中所有标记。% 用正
则表达式标记文件。

c 准备提交所做的改动,会*出一个 *cvs-commit* 缓冲,用来写修改的
日志,写完完按 C-c C-c,执行提交。如果有标记,同时对所标记的所
有文件相库提交。

C 和 c 类似,但是清除上次提交时留在 *cvs-commit* 缓冲中的内容,不
过如果当前目录里的 ChangeLog 文件中有相关内容,会自动插入。

d 有一个提示,询问用哪种方式 diff。此时常用的可能是:

d d 或 d =,比较文件,本地拷贝和最后一次提交时的修订版;
d h 比较本地拷贝和当前源码库中最新版;
d b 比较本地拷贝和该文件的备份;
d e 用 ediff 比较文件,本地拷贝和最后一次提交时的修订版。
d y 和前一天的比较

r 删除文件,从当前拷贝的工作目录中删除,需要提交。

a 添加文件,添加到当前拷贝的工作目录中,需要提交。

i 把某个文件的名字添加到 .cvsignore 文件,这样在运行 cvs 命令时,
cvs 不再理会此文件。编辑 .cvsignore 文件,每一行一个或一类文件。
下面是一个 .cvsignore 文件的例子。有些类型的文件 cvs 缺省就是忽
略的,比如 .o 文件。

t 设置 tag,提示输入 tag 名字。

l 查看一个文件,所标记的多个文件,或目录文件的 log 信息。

s 通过 cvs status 命令查看文件或目录的状态,会*出一个漂亮的
*cvs-info* 缓冲,列出文件的状态信息。

z, q 关闭 *cvs* 缓冲。

4. cvs buffer 中几种状态的说明(括号中是此时可能需要用到的命令):

cvs buffer 中按一下 M-s 可以列出所有文件。每个一行,分别列出了当前的
CVS 状态、修订版和文件名。

"Up-to-date" 文件和库中文件一致,也就是说,目前是最新的修订版,而且没
有被改动过。(按 f 或 RET,进入文件进行编辑,l 看修改历史,+ 看 tag 信
息)

"Need-Update" 文件相对于源码库,不是最新的,需要更新。(M-u 更新,d h
比较当前文件和源码库中的区别)

"Modified" 文件已经被改动过,但还没有提交到源码库。(c/C 提交,d d 比
较,d e 用 ediff 比较,U 放弃修改,小心使用)

"Added" 用 cvs add 命令新添加的文件,添加了新文件只在本地有效,需要提
交到源码库。(c/C 提交)

"Removed" 用 cvs 的 remove 命令删除的文件,同 add 一样,需要提交到源码
库。(c/C 提交)

"Needs-Merge" 你编辑文件的时候,别人又向源码库提交过,因此本地的改动,
和源码库中的需要合并。(先 M-u 更新,如果发生冲突,手工修改,再 c/C 提
交,d b 和原来的备份比较,d h 和库中比较)

"Conflict" 你的提交和源码库中当前的状态有冲突,需要手工修改,并再提交
一次。(手工修改,再 c/C 提交)

"Unknown" 源码库中没有该文件,这或许不是你想要的,或许是刚刚新建的。
(如果想让 cvs 忽略此文件,按 i;想添加到源码库,按 a,再提交;用 r 删
除)

"Missing" 源码库中有,可是本地拷贝中却没有了。(M-u 更新,可以从新从源
码库得到拷贝)

5. 用 Emacs 的前缀参数修改 cvs 命令的选项

很多 cvs 命令可以给一个前缀参数,改变缺省的行为。多数的前缀参数都是
C-u,而多数改变的行为,就是修改传递给 cvs 的默认选项。

每执行一次操作,pcl-cvs 的 *cvs* 缓冲底部都会显示实际执行的 cvs 命令,
这些命令往往带有一些参数,如何修改这些参数呢?就通过给 pcl-cvs 的命令
加前缀 C-u。一般的,一个 C-u 只改变当前命令所用的 cvs 选项,如果前缀两
个 C-u,则是永久改变所用选项。

例如,d d 缺省比较当前拷贝和库中你check out时的修订版。

如果用 C-u d d 会提示输入 cvs 的选项,此时你可以给任意的 cvs diff
选项,用以进行各种各样灵活的比较。比如,输入 -r1.10 -r2.3 RET,此
次比较的就是源码库中当前文件修订版 1.10 和 2.3 之间的区别。

如果 C-u C-u d d,输入 -r1.10 RET,以后的 d d 命令都会带着 -r1.10
仿佛永久修改了默认选项。当然,可以再 C-u C-u d d 修改回去。

再如,cvs add 命令添加二进制文件需要 -kb 选项,用 C-u a 则提示输入cvs
add flags,输入 -kb RET,OK。

6. 查看一些信息

在一个文件或目录上,或标记了一些文件,按 l 可以在 *cvs-info* 缓冲中看
到这些文件的 log 信息,就是提交到源码库中的更新日志;按 s 可以看到状态
信息;按 + 也是状态信息,但是 tag 表为树型结构。

按 l 查看 log 信息时,*cvs-info* 缓冲的状态为 (Log-View CVS)。此时,有
很多方便的操作,比如比较两个修订版之间的不同,修改源码库中的 log 信息,
打开某个文件任意的修订版。比如,在 *cvs* 的某个目录上面按了 l,然后转
到 *cvs-info* 缓冲中,这里面列出的时该目录中所有文件的 log 信息,此时
的常用命令如下。

n, p 移动光标,在一个文件内的不同修订版之间
N, P 移动光标,在不同的文件之间,M-n, M-p 同样

m 设置 mark
d 和设置 mark 的那个修订版进行 diff

e 修改当前 log,编辑完,C-c C-c 提交

f, o, RET
这几个都是打开当前的修订版,稍有区别。用 f 的时候如果提示
vc-find-version 没有定义,手工加载一下 vc 库
M-x load-library RET vc RET。

z 关闭该缓冲

如果在 *cvs* 的目录里按 s,此时的 *cvs-info* 缓冲为(CVS-Status CVS)状
态,在这个缓冲中,也可以做类似的一些操作:

N, P 在文件之间移动, M-n, M-p 同样
n, p 上一行,下一行

f, o, RET
把光标移动到某个 tag 的名字上,则可以直接打开那个 tag 所在
的修订版

T, t 把每个文件所列的 tag 表转为树型结构,T 为横向的树,t 为竖向
的树

diff 命令产生的 *cvs-diff* 缓冲中也类似,N/P 在文件之间移动,n/p 在不
同的 diff 之间移动。此外,在任何一行代码的未知按 o 或 RET 可以直接转到
文件中的实际未知,很方便的。

7. Emacs 的 VC 的方便之处

在 PCL-CVS 中,几乎可以做任何 CVS 相关的操作。但有时候未免有些麻烦,配
合 Emacs 的 VC (Version Control) 会方便很多。

Emacs 的 VC 模式的作者就是著名的 Eric S. Raymond。VC 的功能很强大,而
且方便灵活。可以使用在三种版本管理系统中:RCS、CVS、SCCS,操作方式一致。
和 PCL-CVS 不同的是,VC 使用 C-x v 前缀完成大部分功能,不像PCL-CVS 使
用一个主界面,这使 VC 显得更方便。

几个主要的命令:

C-x v v vc-next-action
顾名思义,执行下一个动作,下一个动作是什么就执行什么,如果
是 Unknown 就 cvs add,如果是 Modified 就 commit,如果是
Up-to-date 就什么都不用做了。最方便的是只需在当前 buffer 中
执行。

C-x v m vc-merge
将库中别人所做的改动与本地的改动合并,和库中的版本保持一致。

C-x v a vc-update-change-log
更新更改日志文件 ChangeLog。如果源码库或本地拷贝中还没有,
试一下这个,它会根据 cvs 的提交日志,自动产生 ChangeLog,如
果已经有了,但已经有一段时间没有更新过,它会自动更新
ChangeLog 文件到最新的一条记录。

C-x v ~ vc-version-other-window
PCL-CVS 也可以方便的查看某个历史版本,不过都需要转到相应的
控制界面(*cvs* 或 *cvs-info* buffer)中。而 VC 的这个命令可
以在当前缓冲中用,会提示输入版本号,然后显示在另一个窗口中,
并保存在当前目录,文件名为 FILENAME.~REV~。

有时候,用 CVS 管理的东西不需要整体的控制,比如自己的笔记、随笔之类,
用 Emacs 设置上 bookmark,打开就写点,写完马上就提交,往往不必打开
PCL-CVS,恰恰 VC 这些灵活的命令非常合适。

继续了解 VC:

C-x v = vc-diff
比较文件。如果用了前缀参数,会询问和哪个文件的哪个版本比较。

C-x v u vc-revert-buffer
放弃没有提交的改动,恢复原状,也就是你的本地拷贝的版本,并
不管库中的最新改动。如果想同时和库中别人所做的改动保持一致,
用 C-u 作为前缀参数。

C-x v g vc-annotate
看看你的每行代码的状态(编辑历史)。每行的颜色用来表示这行代
码的新旧程度,蓝色的时间最长,红色的最短,其他的居中。默认
的最长时间为一年,超过一年的都显示为蓝色。用前缀参数可以修
改所显示的版本和默认最长时间。

这个缓冲中还有一些有趣的功能,可以直接转到某个修订版。每行
的最前面为当前行最后一次修改的修订版,在这行上按 J,整个缓
冲中的内容全都替换为这个修订版;按 N (或 P) 为缓冲中当前的
后一个(前一个)修订版;按 A 转到当前行上次被修改的版本。N/P
按修订版历史浏览,A 按当前行修改历史浏览,J 跳转该行所指修
订版,W 回到该文件的当前修订版。注意,模式行上文件名的后面
标注了缓冲当前内容的修订版。另外,D 可以比较当前行上的修订
版和前一修订版的区别,N/P 可以使用前缀参数。

C-x v d vc-directory
打开一个带版本控制功能的 Dired buffer,功能和 pcl-cvs 的
*cvs* buffer 有些类似。或许对非 CVS 的版本管理比较有用。

8. 相关配置

由 CVS 管理的模块中都有 "CVS" 目录,打开 cvs-dired-use-hook 时,在
"CVS" 目录上按 F,直接进入该模块的 *cvs* buffer:
(setq cvs-dired-use-hook 'always)

给 cvs-examine 一个方便的绑定:
(define-key global-map "\C-xve" 'cvs-examine) 绑定到 C-x v e。


--
Roley Zhang from Gmail