专栏名称: 编程派
Python程序员都在看的公众号,跟着编程派一起学习Python,看最新国外教程和资源!
目录
相关文章推荐
Python爱好者社区  ·  72k,直接封神! ·  3 天前  
Python爱好者社区  ·  20个python3大项目开发源代码(附源码) ·  4 天前  
Python爱好者社区  ·  11月,终于跨过了5W这个坎!! ·  6 天前  
Python开发者  ·  太荒谬了!千人公司一刀切禁用 ... ·  6 天前  
51好读  ›  专栏  ›  编程派

Win10环境下的Scrapy结合Tor进行匿名爬取

编程派  · 公众号  · Python  · 2017-05-26 11:31

正文

原文:http://www.cnblogs.com/kylinlin/p/5242266.html

在使用Scrapy的时候,一旦进行高频率的爬取就容易被封IP,此时可以通过使用TOR来进行匿名爬取,同时要安装Polipo代理服务器。

注意:要进行下面的操作的前提是,你能FQ

安装TOR

下载地址:

下载Expert Bundle并解压到一个目录下,例如:D:Tor,这个版本并没有一个图形化的操作界面,要修改配置十分麻烦,可以通过下载Vidalia来使用TOR,Vidalia的下载地址: ,下载该页面的最下面那个即可:vidalia-standalone-0.2.21-win32-1_zh-CN.exe,安装完成之后,以管理员权限运行Start Vidalia.exe,进行下面的设定

点击启动Tor

过一阵子后显示连接成功

下载安装Polipo

下载地址:

选择polipo-1.1.0-win32.zip,下载并解压,然后编辑解压后的文件config.sample,在文件的开头加上以下配置

  1. socksParentProxy = "localhost:9050"

  2. socksProxyType = socks5

  3. diskCacheRoot = ""

使用cmd命令运行该目录下的程序:polipo.exe -c config.sample

打开edge浏览器,设置代理

然后在浏览器中访问:

看到以下的界面意味着配置成功

配置Scrapy

在settings.py文件中加入下面的内容

  1. #More comprehensive list can be found at

  2. #http://techpatterns.com/forums/about304.html

  3. USER_AGENT_LIST = [

  4.    'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/535.7 (KHTML, like Gecko) Chrome/16.0.912.36 Safari/535.7',

  5.    'Mozilla/5.0 (Windows NT 6.2; Win64; x64; rv:16.0) Gecko/16.0 Firefox/16.0',

  6.    'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_3) AppleWebKit/534.55.3 (KHTML, like Gecko) Version/5.1.3 Safari/534.53.10',

  7.    ]

  8. HTTP_PROXY = 'http://127.0.0.1:8123'

  9. DOWNLOADER_MIDDLEWARES = {

  10.    'myspider.middlewares.RandomUserAgentMiddleware': 400, # 修改这里的myspider为项目名称

  11.    'myspider.middlewares.ProxyMiddleware': 410, # 同上

  12.    'scrapy.contrib.downloadermiddleware.useragent.UserAgentMiddleware': None,

  13. }

在scrapy项目的根目录新建一个middlewares.py文件,并输入以下内容

  1. import random

  2. from scrapy.conf import settings

  3. from scrapy import log

  4. class RandomUserAgentMiddleware(object):

  5.    def process_request(self, request, spider):

  6.        ua = random.choice(settings.get('USER_AGENT_LIST'))

  7.        if ua:

  8.            request.headers.setdefault('User-Agent', ua)

  9.            #this is just to check which user agent is being used for request

  10.            spider.log(

  11.                u'User-Agent: {} {}'.format(request.headers.get('User-Agent'), request),

  12.                level=log.DEBUG

  13.            )

  14. class ProxyMiddleware(object):

  15.    def process_request(self, request, spider):

  16.        request.meta['proxy'] = settings.get('HTTP_PROXY')

至此,scrapy与tro的整合完成了,本文不对任何人使用这个方法所造成的后果负责

配置Tor浏览器

下面的内容与上面无关,只是记录一下如何使用Tor浏览器,在我们下载tor的页面上,还有一个下载选项(第一个就是一个浏览器,通过该浏览器可以匿名访问网页,Tor Browser会自动通过Tor网络启动Tor的后台进程连接网络。一旦关闭程序的便会自动删除隐私敏感数据,如HTTP cookie和浏览历史记录,以避免窃听并保留在互联网上的隐私)

下载了第一个Tor Browser并安装后,进行下面的配置

由于Tor的连接被墙掉了,所以要配置网桥

获取网桥:

将网桥复制下来,粘贴到tor浏览器上

有时候连接不成功,就要再申请新的网桥来尝试


题图:pexels,CC0 授权。

点击阅读原文,查看更多 Python 教程和资源。