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

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

 

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

 

安装TOR

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

下载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,进行下面的设定

 

点击启动Tor

过一阵子后显示连接成功

 

下载安装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

打开edge浏览器,设置代理

 

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

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

 

配置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和浏览历史记录,以避免窃听并保留在互联网上的隐私)

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

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

 

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

 

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

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

Win10环境下的Scrapy结合Tor进行匿名爬取的更多相关文章

  1. win10环境下使用苹果虚拟机不要开多线程应用下载文件

    win10环境下使用苹果虚拟机开多线程应用下载文件时候卡死,网络老掉. 8GB内存不够用?2.5mb网速不够用? 开的百度网盘下载个电影 结果虚拟机卡的不行 关了 网盘 挂起虚拟机 然后再 继续运行客 ...

  2. win10环境下如何运行debug

    在学习汇编的时候,会需要用到debug调试程序,但是现在win10默认已经移除了这个插件,我们需要手动安装,下面就告诉大家如何在win10环境下安装debug. 1:准备工具 1.1 DOSBox 1 ...

  3. 在win10环境下搭建 solr 开发环境

    在win10环境下搭建 solr 开发环境 2017年05月30日 09:19:32 SegaChen0130 阅读数:1050   在win10环境下搭建 solr 开发环境 安装环境  Windo ...

  4. win10环境下安装Ubantu双系统(超详解)

    win10环境下安装Ubantu双系统 1.准备工作: 先去ubantu官网(https://www.ubuntu.com/download)去下载ubantu镜像.根据自己的实际情况选择32位的或者 ...

  5. win10环境下MySql(5.7.21版本)安装过程

    windows10上安装mysql(详细步骤) 2016年09月06日 08:09:34 阅读数:60405 环境:windwos 10(1511) 64bit.mysql 5.7.14 时间:201 ...

  6. 在 win10 环境下,设置自己写的 程序 开机自动 启动的方法

    原文:在 win10 环境下,设置自己写的 程序 开机自动 启动的方法 1.是登录自己用户时才能开机启 C:\Users\username\AppData\Roaming\Microsoft\Wind ...

  7. win10环境下VS2019配置NTL库

    win10环境下VS2019配置NTL库 1.下载 WINNTL库文件     https://www.shoup.net/ntl/download.html 2.创建静态库 文件->新建-&g ...

  8. YApi——手摸手,带你在Win10环境下安装YApi可视化接口管理平台

    手摸手,带你在Win10环境下安装YApi可视化接口管理平台 YApi YApi 是高效.易用.功能强大的 api 管理平台,旨在为开发.产品.测试人员提供更优雅的接口管理服务.可以帮助开发者轻松创建 ...

  9. Window7环境下安装Scrapy 方法

    Window7环境下安装Scrapy Scrapy在CPython(默认Python实现)和PyPy(从PyPy 5.9开始)下运行Python 2.7和Python 3.4或更高版本. 如果您使用的 ...

随机推荐

  1. OC之protocol监听器的实现

    画图 图解 代码 总结 一.画图 本人画了一个图(字体和画图水平请忽略) 二.图解 1.首先我们上边是一个按钮的类,按钮当中包括了一条线,这个线是什么呢? 其实难理解就难理解到这条线上了 1⃣️这条线 ...

  2. 条件控制(if ) ( case)

    一:IF应用格式 (1) (2) (3) IF 条件 THEN IF 条件 THEN IF 条件1 THEN --代码块        --代码块    --代码块1 commit; commit; ...

  3. CentOS 7 使用外部邮箱 发送邮件和附件—mail,mailx

    1.查看软件包是否安装 [root@localhost ~]# rpm -qa|grep mail mailx-12.5-12.el7_0.x86_64 javamail-1.4.6-8.el7.no ...

  4. Ubuntu16.04安装VMware Tools问题

    *************************************************************************** 问题:客户机操作系统已将 CD-ROM 门锁定, ...

  5. 【转】驱动中的类class和节点

    原文出处:http://blog.chinaunix.net/uid-23036581-id-2230558.html 一个类是一个设备的高级视图, 它抽象出低级的实现细节. 驱动可以见到一个SCSI ...

  6. Python-Networkx

    import networkx #建图 G = networkx.Graph() #节点数: len(G) #边数 G.number_of_edges() #节点表 G.nodes() #边表 G.e ...

  7. Codevs 1287 矩阵乘法&&Noi.cn 09:矩阵乘法(矩阵乘法练手题)

    1287 矩阵乘法  时间限制: 1 s  空间限制: 128000 KB  题目等级 : 黄金 Gold 题解  查看运行结果     题目描述 Description 小明最近在为线性代数而头疼, ...

  8. MongoDB - The mongo Shell, Write Scripts for the mongo Shell

    You can write scripts for the mongo shell in JavaScript that manipulate data in MongoDB or perform a ...

  9. Handler发送Message

    用Handler更新UI package activity.cyq.handlermessage; import android.content.res.Resources; import andro ...

  10. vs 2015密钥

    专业版:HMGNV-WCYXV-X7G9W-YCX63-B98R2企业版:HM6NR-QXX7C-DFW2Y-8B82K-WTYJV