- 15
- Feb
自从前天发现GAppProxy后,还没怎么去琢磨它。今天大致研究了下它是怎么实现的,然后改造了一下,让它不代理本地的请求。
我主要看了本地端,服务端和本地端可能差不多,是个反转的过程。而且本地端的代码还比服务端多呢。
本地端使用了SocketServer.ThreadingMixIn和BaseHTTPServer.HTTPServer来进行多线程的请求,也就是说,你同时打开几个网页,它都能一起处理。
具体地处理代码在LocalProxyHandler这个类中,把do_GET、do_HEAD和do_POST都定位于统一的do_METHOD,进行http处理。
原理也不是很复杂,主要是把request解析,再重编码(主要是加上压缩特性?)后,发往fetchServer,从fetchServer取得请求数据,然后再写回response中。这应该也是一般代理服务器的运行过程吧。
然后,把下面的代码加到#do path check后面,让它跳过有关向本地内容的请求:
if netloc.startswith('127.0.0.1') or netloc.startswith('localhost'):
self.wfile.write(urllib2.urlopen(self.path).read())
return
这样弄好后,就可以一直开着Proxy了。在运行本地Web的同时,也可以畅通无阻的上网了。
我记得利用FoxyProxy的Patterns就行了……当然不用Firefox的就只能这样了
一直没搞定,哪位帮帮忙啊?