Win10環境下的Scrapy結合Tor進行匿名爬取


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

在使用Scrapy的時候,一旦進行高頻率的爬取就容易被封IP,此時可以通過使用TOR來進行匿名爬取,同時要安裝Polipo代理服務器

 

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

 

安裝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

有時候連接不成功,就要再申請新的網橋來嘗試


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM