[转载]用google.cn作proxy访问Google的服务

 Jan. 29, 2011, 4:33 p.m.   1 comment    Google GAE GFW

前两天为了能够访问appspot上网查找了很多资料,无意中找到了这篇文章,觉得很有价值,可以作为将来在Google服务无法使用且没有V6环境时的一个可选途径。

简单的说,Google的所有服务都是可以通过一个相同的服务器访问到,Google根据请求的URL当中的域名来决定应该定向到哪个服务。www.google.cn一样可以访问到所有的服务,例如App Engine。但是因为DNS服务器的原因,appengine.google.com会被定向到Google美国的服务器,不会去连接www.google.cn。但是事实上,如果我们能够向www.google.cn发送一个HTTP请求,其中的URL是指向appengine.google.com的,服务器一样能够帮我们中转请求,并把结果会传给我们。

要达到这个目的有两个方法,一个是修改hosts,让appengine.google.com和.appspot.com指向到www.google.cn的IP地址。这个有两个劣势,一个是www.google.cn其实有很多个地址做负载均衡,一旦加上了hosts条目,就失去了负载均衡的好处;另一个劣势是hosts文件不支持.appspot.com这种语法,所以只能把自己知道的appspot上的应用统统添加。

另一个方法则相对好一点,就是把www.google.cn:80设置成访问appengine.google.com的代理服务器。这种方法很好用,但是需要写PAC文件(Proxy Auto-Config,代理服务器自动配置文件)。所幸这个文件语法相当简单,因此可以直接写下面一段:

function FindProxyForURL(url, host) {
  if (shExpMatch(host,"*.appspot.com")) {
    return "PROXY <a href="http://www.google.cn/" rel="nofollow" target="_blank">www.google.cn:80</a>";
}
  if (shExpMatch(host,"appengine.google.com")) {
    return "PROXY <a href="http://www.google.cn/" rel="nofollow" target="_blank">www.google.cn:80</a>";
}
  return "DIRECT";
}

然后保存成一个proxy.pac文件。在浏览器的配置当中,把“自动浏览器配置脚本”的配置项指到这里即可。

比如你把proxy.pac放在C盘根目录下,然后在firefox的“首选项”菜单中,打开“连接设置”对话框,选择“自动代理配置URL”,在后面的输入框中,填入配置文件地址,我这个就是file:///C:/proxy.pac对于IE浏览器,打开浏览器,选择“工具/Internet选项/连接/局域网配置”,随后勾选“使用自动脚本配置”项,最后输入自动配置脚本所存在地址即可file://C:proxy.pac

注意,一个是三个/,一个是两个/

附:   代理服务器自动配置脚本(.PAC)的网络写法综述

今天水木新软俱乐部讨论起这个 这里就提一下自动配置脚本的配置写法

  1. 网络写法 兼容性最好 如http://proxy.ipcn.org/ipcn.pac

  2. 本地文件写法 file:// IE两个/就行 firefox需要三个/

file:///c:/proxy/ipcn.pac   file://c:/proxy/ipcn.pac  

如果遇到不行的情况 可以在自动配置脚本ipcn.pac里面加入 alert(”test”); 便于测试

原文链接:http://www.douban.com/group/topic/9181172/


Veezy

Veezy Jan. 30, 2011, 7:36 p.m. Reply

mark到evernote。。。