2009年3月14日星期六

Psiphon2试用

在网上翻到Psiphon2,没仔细看究竟是啥玩意儿,就发了封信到english@sesawe.net(写英文)要邀请。不曾想才过半个小时,就收到了Freerk Ohling的回信。那个时候加拿大应该是半夜才对,莫非Freerk也是宅男夜猫子?

具体怎么用,请到这里去看吧,很简单,我就只说说一天来的使用感想好了。

Psiphon2跟go2一样,其实就是一个在线代理。比如你被分配到的代理地址是https://xx.xx.xx.xx/xxx/,若要访问被墙了的http://fackgfw.cn,那就可以这样用:https://xx.xx.xx.xx/xxx/http://fackgfw.cn。

在线代理有的缺陷Psiphon2自然都有,如只支持http和https协议,以及访问采用AJAX技术的网站可能会有问题等等。优点则是不需要修改系统或浏览器的任何设置,也就是说网吧等地方也能用。

Psiphon2跟别的在线代理相比,最大的不同应该就是速度。我试着从一个被墙的日本网站下载文件,最快能达到30KB/S左右,很不错了已经。而且Psiphon2没有广告,如果能一直维持这样的速度,我会非常非常感恩的。

虽然就目前的使用状况来看,我对Psiphon2挺满意,不过该说的还是要说。基于在线代理的运行机制,你通过Psiphon2所进行的任何操作,对Psiphon2服务器来说都是可见的,Psiphon2完全有能力收集你的访问记录和某些帐户信息。

当然了,用某门某界翻墙同样有类似的问题。被蹂躏了这么久,我个人真是觉得能用就好。而且相比跟某功某志扯上关系的某门某界,Psiphon2或许还更值得信赖一点点。

以下是一些Psiphon2使用小贴士。

javascript:(function(){var proxy = 'https://xx.xx.xx.xx/xxx/';location.href = proxy + location.href;})()

将以上代码存为一个Bookmarklet(记得修改服务器地址),遇到被墙的网站点一下就会自动调用Psiphon2访问。

<script language="JavaScript">
if (document.title == '503 - Connect failed (Privoxy@localhost)') {
  var proxy = 'https://xx.xx.xx.xx/xxx/';
  location.href = proxy + location.href;
}
</script>

上面这个更好一点,存为Maxthon的按钮插件并设置自动运行,或存为Opera、Firefox的用户脚本,被墙时可以自动调用Psiphon2。

上述代码用的是Title来判断是否被墙,因为Javascript似乎没办法获得HTTP Response Code。我用Privoxy,所以判断语句才长这样,不同浏览器不同环境要依据实际情况修改才行。

Update:

还没爽快多久,我被分配到的地址就不能用了。搜了一下发现,中文网络上关于P2的信息突然多出来不少,连我写的这点东西都有人“转载”,甚至还有人直接贴出自己被分配的地址(跟我的一样)。别的no comments,没想到我这里也不如我想象的那么冷清,有那么点意外。

发现问题后给Ohling又写了封信,回信还是一如既往的快,并告诉我说,过几天我就会收到一个新地址。不过那已经是一周以前的事了,到今天我也什么都没收到。以现状来看,P2所掌握的资源估计有限。

除了P2本身出问题,其运行的安全性建立在两个前提之上:一是没人故意捣乱;二是没有小白泄漏地址。仔细想想这两条都难以保证,就不知道P2是不是真的栽在其中之一上。

2009年3月8日星期日

纠结

我很爱EmEditor,从Windows 98时代开始一直用到现在。每次打开机器我肯定都会用到他,也因此Ctrl+Alt+M这个系统级热键被其占据已经很多年了。

前些日子,我发现了EmEditor简体中文语言包一处莫名其妙的翻译:菜单栏上,工具、自定义、窗口,“切换到下一个文档命令最后使用的文档”。换成英文一看,原来是“Switch to Last Used Document for Next Document Command”。

查看info.ini,汉化者是莫尼卡,版本为8.00。完美主义作祟,于是跑到EmEditor官方网站下了一个语言包,发布日是2008年12月12日,作者为“逐浪清风”。谁知装上后再看,仍然是“切换到下一个文档命令最后使用的文档”。

对的一样还情有可原,翻错了还一样?我检查了两个文件的MD5值,都是21FB5484522A03ED6078F44100323C77,这根本就是同一个文件。

因为经过了若干次升级安装,我也无法说清包含作者信息的INI文件和资源文件的原始来源。于是为了弄清真相,我从汉化新世纪找了若干个EmEditor v8的汉化版来进行对比。结果发现,我果然还是弄错了。在我硬盘上的那个资源文件的制作和发布者并非莫尼卡,而是tracky。

那么接下来的问题是,tracky和逐浪清风谁抄了谁,或者这两个名字其实是同一个人?

通过搜索,我找到了tracky的blog,在其发布EmEditor v8.01汉化版的页面上,我看到了这么一条留言:

再点击用户名,查看该用户的信息:

“个人主页”跟EmEditor官方网站上的一样,此“逐浪清风”就是彼“逐浪清风”。

连稍作修改用以遮掩都免了,直接向官方提交别人编译好的二进制文件,换来一个署名,一个链接,还有一个目前售价39.99美金的EmEditor Professional版授权。坦白说,我真的很想用“无耻”来形容这个人,我觉得他当得起。

本来,我应该告知tracky,并且向EmEditor说明此事。然而仔细想想之后,我却悲哀地发现,不能这么做。

tracky的劳动成果被剽窃,这件事上他是受害者。可是他将EmEditor重新打包发布,同样也违反了EmEditor的用户协议。更不要说,tracky的发布页面上还提供了一个EmEditor的注册码。

剽窃和盗版其实是两个不同的问题,而且在我个人的道德观中,前者远远要比后者恶劣,但我却无法否认盗版的非正当性。

于是在这件事上,我只好什么都不做。

2009年3月6日星期五

用脚本控制Tor更换IP

不多说,直接看代码吧,虽然我觉得用得上这个脚本的地方都很无聊。

require 'net/telnet'
require 'net/http'
require 'uri'
require 'time'

def torNewIP()
  tor_addr = '127.0.0.1'
  tor_ctrl = 9051
  
  host = Net::Telnet.new(
    'Host' => tor_addr,
    'Port' => tor_ctrl,
    'Prompt' => /\n/n)
  r = host.cmd('AUTHENTICATE')
  return false if r != "250 OK\n"
  r = host.cmd('signal NEWNYM')
  return false if r != "250 OK\n"
  return true
end

def doLoop(url, proxy_addr, proxy_port, sleeptime)
  n = 0
  uri = URI.parse(url)
  while true
    req = Net::HTTP::Get.new(uri.request_uri)
    req['User-Agent'] = 'Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Trident/4.0)'
    req['Referer'] = 'http://otnth.blogspot.com'
    
    http = Net::HTTP.new(uri.host, uri.port, proxy_addr, proxy_port)
    res = http.request(req)
    n += 1
    yield(n, res)
    torNewIP
    sleep(sleeptime)
  end
end

url = 'http://otnth.blogspot.com'

proxy_addr = '127.0.0.1'
proxy_port = 8118

sec = 10

doLoop(url, proxy_addr, proxy_port, sec) do |n, res|
  puts "#{Time.now.iso8601.to_s} #{n}: #{res.code} #{res.msg}"
end

2009年3月5日星期四

Tips of Hotspot Shield

Hotspot Shield是架还不错的翻墙梯,至少速度还不错。只是广告很烦人,要装客户端也很烦人,而且默认情况下连接成功后所有网络请求都会走Hotspot Shield的线路,没什么必要。

曾试着用Windows自带的拨号工具代替Hotspot Shield客户端,只是没找到怎么样才能向服务器提交CA证书通过IPSec验证,所以尝试失败,客户端还是得装。不过另外两个问题,倒是有办法解决。

先说说比较简单的广告问题。最直接的法子当然是过滤,可是也太麻烦了些。实际上有人发现,使用Opera的时候Hotspot Shield不会添加广告。所以这个问题可以通过伪造User-Agent来实现,比如你要是也用Privoxy的话,可以这样写:

{ +hide-user-agent{Opera/9.64 (Windows NT 5.1; U; Edition IBIS; zh-cn) Presto/2.1.1} }

另外,据说Hotspot Shield针对免费用户也是有流量限制的,每个月3GB,而这个限制可以通过修改网卡的MAC地址绕过。我个人倒是没遇到过流量超限的情况,顺便提一句备用吧。

想实现只有发往特定服务器的请求才使用Hotspot Shield的功能则比较麻烦,需要去设置路由表。

打开C:\Program Files\Hotspot Shield\config\config.hvpn,将“;route-noexec”行最前端的分号去掉并保存。这一设置能让Hotspot Shield在连接成功后不去修改路由表,方便我们自己处理。

执行Hotspot Shield Launch连接服务器并纪录IP地址,该地址可以从Launch弹出的IE窗口中获得。例如某次连接分配到的地址是10.55.160.44,那对应的网关就是将最后一位改为1,即10.55.160.1。

假设现在en.wikipedia.org无法访问,我们先在网上随便找一个可以进行域名解析的网站,例如http://www.hostip.info/,填入域名提交并获得en.wikipedia.org对应的IP地址为208.80.152.2。

打开一个命令提示行窗口,执行该命令:route add 208.80.152.0 mask 255.255.255.0 10.55.160.1

管理路由表还是有点麻烦,而且貌似也没有简单方便的GUI工具可以代劳,想要自动化一点只能自己写脚本,这也是我更喜欢代理服务器的原因。