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

Posted kylinlin

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Win10环境下的Scrapy结合Tor进行匿名爬取相关的知识,希望对你有一定的参考价值。

本文内容来源:http://blog.privatenode.in/torifying-scrapy-project-on-ubuntu/

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

 

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

 

安装TOR

下载地址:https://www.torproject.org/download/download.html.en

Image 003

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

Image 007

Image 006

 

点击启动Tor

Image 009

过一阵子后显示连接成功

Image 010

 

下载安装Polipo

下载地址:http://www.pps.univ-paris-diderot.fr/~jch/software/files/polipo/

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

socksParentProxy = "localhost:9050"

socksProxyType = socks5

diskCacheRoot = ""

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

Image 011

打开edge浏览器,设置代理

Image 013

 

然后在浏览器中访问:https://check.torproject.org/

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

Image 014

 

配置Scrapy

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

#More comprehensive list can be found at

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

USER_AGENT_LIST = [

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

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

    \'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\',

    ]

HTTP_PROXY = \'http://127.0.0.1:8123\'

DOWNLOADER_MIDDLEWARES = {

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

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

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

}

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

import random

from scrapy.conf import settings

from scrapy import log

class RandomUserAgentMiddleware(object):

    def process_request(self, request, spider):

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

        if ua:

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

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

            spider.log(

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

                level=log.DEBUG

            )

class ProxyMiddleware(object):

    def process_request(self, request, spider):

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

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

 

配置Tor浏览器

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

Image 015

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

Image 016

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

Image 017

 

获取网桥:https://bridges.torproject.org/options

Image 018

 

Image 019

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

Image 020

Image 022

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

以上是关于Win10环境下的Scrapy结合Tor进行匿名爬取的主要内容,如果未能解决你的问题,请参考以下文章

恢复爬网后无法再次登录。恢复scrapy后cookies不粘

Scrapy分布式爬虫打造搜索引擎- 伯乐在线爬取所有文章

scrapy学习笔记

python库: scrapy (深坑未填)

scrapy框架爬虫爬取糗事百科 之 Python爬虫从入门到放弃第不知道多少天

win10虚拟环境安装scrapy