首页 > 代码库 > 使用twisted.web实现代理服务器
使用twisted.web实现代理服务器
简单的实现谷歌的代理:
架构就是下面这么简单。
=================
my server outside GFW | <----------------------> your browser visit my server at port 8080
=================
代码如下:
#coding=utf-8from twisted.web import resource, serverfrom twisted.internet import reactor,endpointsfrom twisted.python import logimport urllib2import urllibimport syslog.startLogging(sys.stdout)class router(resource.Resource): def getChild(self, path, request): url = r‘https://www.google.com‘ if path=="": return Index(url) else: return Index(url+ request.uri)class Index(resource.Resource): def __init__(self, url): self.url = url def render_GET(self, request): req = urllib2.Request(self.url) res = urllib2.urlopen(req) return res.read()rsc = router()f = server.Site(rsc)endpoints.serverFromString(reactor, ‘tcp:8001‘).listen(f)reactor.run()
使用上面代码有一个问题,谷歌对于被爬是不爽的。因此需要伪装下,加上一个headers参数给request请求。
headers = {‘User-Agent‘:‘Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.1.6) Gecko/20091201 Firefox/3.5.6‘} req = urllib2.Request(self.url, headers=headers)
这样就解决了403问题。那么接下来只要变成一个系统后台任务就可以了。
使用twisted.web实现代理服务器
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。