码迷,mamicode.com
首页 > Web开发 > 详细

使用twisted.web实现代理服务器

时间:2014-11-18 13:14:41      阅读:234      评论:0      收藏:0      [点我收藏+]

标签:blog   http   ar   使用   sp   div   on   art   问题   

简单的实现谷歌的代理:

架构就是下面这么简单。

=================

 my server outside GFW  |    <----------------------> your browser  visit my server at port 8080

=================

代码如下:

#coding=utf-8
from twisted.web import resource, server
from twisted.internet import reactor,endpoints
from twisted.python import log
import urllib2
import urllib
import sys
log.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实现代理服务器

标签:blog   http   ar   使用   sp   div   on   art   问题   

原文地址:http://www.cnblogs.com/Tommy-Yu/p/4105393.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!