前两天Google的*.appspot.com被和谐后,广大墙友的GappProxy就用不了了,不过通过自己绑定域名的GAE却可以正常访问,所以我想,通过自定绑定的域名来使用GAppProxy应该也是可以的,待我使用最新版的GAppProxy2时,却无情的收到404错误:
Error response
Error code 404.
Message: Local proxy error, Fetchserver not found at the URL you specified, please check it..
Error code explanation: 404 = Nothing matches the given URI.
但是从理论上来说使用自己的域名和使用appspot.com,结果应该都是一样的,不过这毕竟是程序的返回结果,所以我决定看能不能从代码中找到解决方法(连Python语法都不熟的俺去从代码里找问题根源,是不是有点自不量力了~_~,不过你别喷俺,这也是一种学习方法不是?)...
... ...
嘿,功夫不负有心人哈,还真让俺逮着了~
在proxy.py的199行处有这么一段代码:
if local_proxy != "":
proxy_handler = urllib2.ProxyHandler({"http": local_proxy})
else:
proxy_handler = urllib2.ProxyHandler(google_proxy)
opener = urllib2.build_opener(proxy_handler)
# set the opener as the default opener
urllib2.install_opener(opener)
而且之后就是"resp = urllib2.urlopen(request, params)"进行打开连接,也正是在这一步抛出了404异常,当然,凭这点代码还不足判断出错误的根源来,所以我只能一步步的查找这些代码的句义(菜鸟的无奈~).
最后通过ProxyHandler这个方法名,及local_proxy这个从配置文件中读取出来的变量,猜想ProxyHandler这个方法是不是应该是设置代理的意思?Google一下,果真是这么个方法,然后又通过测试google_proxy变量,在这一步时:
google_proxy={'http': 'www.google.cn:80'}
这就让我纳闷了,这个代理地址是在common.py里设置的
GOOGLE_PROXY = 'www.google.cn:80'
但是为什么把google作为代理地址就不得而知了.
知道了错误原因,解决方法就多了...我的方法是去掉else里的代码:
if local_proxy != "":
proxy_handler = urllib2.ProxyHandler({"http": local_proxy})
opener = urllib2.build_opener(proxy_handler)
# set the opener as the default opener
urllib2.install_opener(opener)
即未配置代理时,不运行这几行代码.
保存,运行...一切OK!
下面是我打包exe后的proxy.exe,你若使用localproxy-2.0.0-win又不想自己打包,就下载这个吧:
http://commondatastorage.googleapis.com/oncereply/myproxy.zip
本人Python菜鸟,此方法只是临时解决,期待GAppProxy给出更完美的方法.
转自:答复哈