1. 程式人生 > >如何讓你的scrapy爬蟲不再被ban

如何讓你的scrapy爬蟲不再被ban

  • 動態設定user agent
  • 禁用cookies
  • 設定延遲下載
  • 使用IP地址池( Tor project 、VPN和代理IP)

由於Google cache受國內網路的影響,你懂得;Crawlera的分散式下載,我們可以在下次用一篇專門的文章進行講解。所以本文主要從動態隨機設定user agent、禁用cookies、設定延遲下載和使用代理IP這幾個方式。好了,入正題:

1、建立middlewares.py

scrapy代理IP、user agent的切換都是通過DOWNLOADER_MIDDLEWARES進行控制,下面我們建立middlewares.py檔案。

[root@bogon cnblogs]#
vi cnblogs/middlewares.py
import random import base64 from settings import PROXIES class RandomUserAgent(object):"""Randomly rotate user agents based on a list of predefined ones""" def __init__(self, agents): self.agents = agents @classmethod def from_crawler(cls, crawler):return cls(crawler.settings.getlist('
USER_AGENTS')) def process_request(self, request, spider):#print "**************************" + random.choice(self.agents) request.headers.setdefault('User-Agent', random.choice(self.agents)) class ProxyMiddleware(object):def process_request(self, request, spider): proxy = random.choice(PROXIES) if proxy['
user_pass'] is not None: request.meta['proxy'] = "http://%s" % proxy['ip_port'] encoded_user_pass = base64.encodestring(proxy['user_pass']) request.headers['Proxy-Authorization'] = 'Basic ' + encoded_user_pass print "**************ProxyMiddleware have pass************" + proxy['ip_port'] else: print "**************ProxyMiddleware no pass************" + proxy['ip_port'] request.meta['proxy'] = "http://%s" % proxy['ip_port']

類RandomUserAgent主要用來動態獲取user agent,user agent列表USER_AGENTS在settings.py中進行配置。

類ProxyMiddleware用來切換代理,proxy列表PROXIES也是在settings.py中進行配置 。

2、修改settings.py配置USER_AGENTS和PROXIES

a):新增USER_AGENTS

USER_AGENTS = [
"Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; AcooBrowser; .NET CLR 1.1.4322; .NET CLR 2.0.50727)",
"Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; Acoo Browser; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; .NET CLR 3.0.04506)",
"Mozilla/4.0 (compatible; MSIE 7.0; AOL 9.5; AOLBuild 4337.35; Windows NT 5.1; .NET CLR 1.1.4322; .NET CLR 2.0.50727)",
"Mozilla/5.0 (Windows; U; MSIE 9.0; Windows NT 9.0; en-US)",
"Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Win64; x64; Trident/5.0; .NET CLR 3.5.30729; .NET CLR 3.0.30729; .NET CLR 2.0.50727; Media Center PC 6.0)",
"Mozilla/5.0 (compatible; MSIE 8.0; Windows NT 6.0; Trident/4.0; WOW64; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; .NET CLR 1.0.3705; .NET CLR 1.1.4322)",
"Mozilla/4.0 (compatible; MSIE 7.0b; Windows NT 5.2; .NET CLR 1.1.4322; .NET CLR 2.0.50727; InfoPath.2; .NET CLR 3.0.04506.30)",
"Mozilla/5.0 (Windows; U; Windows NT 5.1; zh-CN) AppleWebKit/523.15 (KHTML, like Gecko, Safari/419.3) Arora/0.3 (Change: 287 c9dfb30)",
"Mozilla/5.0 (X11; U; Linux; en-US) AppleWebKit/527+ (KHTML, like Gecko, Safari/419.3) Arora/0.6",
"Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.2pre) Gecko/20070215 K-Ninja/2.1.1",
"Mozilla/5.0 (Windows; U; Windows NT 5.1; zh-CN; rv:1.9) Gecko/20080705 Firefox/3.0 Kapiko/3.0",
"Mozilla/5.0 (X11; Linux i686; U;) Gecko/20070322 Kazehakase/0.4.5",
"Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.8) Gecko Fedora/1.9.0.8-1.fc10 Kazehakase/0.5.6",
"Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/535.11 (KHTML, like Gecko) Chrome/17.0.963.56 Safari/535.11",
"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_3) AppleWebKit/535.20 (KHTML, like Gecko) Chrome/19.0.1036.7 Safari/535.20",
"Opera/9.80 (Macintosh; Intel Mac OS X 10.6.8; U; fr) Presto/2.9.168 Version/11.52",
]

b):新增代理IP設定PROXIES

PROXIES = [
{'ip_port': '111.11.228.75:80', 'user_pass': ''},
{'ip_port': '120.198.243.22:80', 'user_pass': ''},
{'ip_port': '111.8.60.9:8123', 'user_pass': ''},
{'ip_port': '101.71.27.120:80', 'user_pass': ''},
{'ip_port': '122.96.59.104:80', 'user_pass': ''},
{'ip_port': '122.224.249.122:8088', 'user_pass': ''},
]

代理IP可以網上搜索一下,上面的代理IP獲取自:http://www.xici.net.co/。

c):禁用cookies

COOKIES_ENABLED=False

d):設定下載延遲

DOWNLOAD_DELAY=3

儲存settings.py

相關推薦

如何scrapy爬蟲不再ban

動態設定user agent禁用cookies設定延遲下載使用IP地址池( Tor project 、VPN和代理IP) 由於Google cache受國內網路的影響,你懂得;Crawlera的分散式下載,我們可以在下次用一篇專門的文章進行講解。所以本文主要從動態隨機設定user agent、禁用coo

爬蟲封了?真是蠢的可以!用這個不再擔心爬蟲

  Spider 當 start_urls 未被指定,會呼叫 start_requests() ,該方法可以用於在爬取資料之前,先進行模擬登陸。 import scrapy from scrapy.http import Request from scrapy.selec

Android 使用android-support-multidex解決Dex超出方法數的限制問題,的應用不再爆棚

動態改變 配置 移動 back mis 文件的 文件格式 .info jar包 如有轉載,請聲明出處: 時之沙: http://blog.csdn.net/t12x3456 (來自時之沙的csdn博客) 隨著應用不斷叠代,業務線的擴

移動互聯網下半場的面試真經,進入 BAT 不再是夢

解決 arr 成就 古人 完全 用戶 線程安全問題 穩定 合並 今天突然想聊聊面試了,最近有很多朋友讓我看簡歷,也有很多朋友跟我吐槽說:面試被虐了,簡直慘不忍睹,都有點懷疑自己的能力了。其實,我想說:正常。之所以這麽說是很多朋友可能沒有認清一些問題,哪些問題呢?兩點:一是,

[git] credential helper 的 https 不再需要輸入使用者名稱密碼

參考: https://git-scm.com/book/zh/v2/Git-%E5%B7%A5%E5%85%B7-%E5%87%AD%E8%AF%81%E5%AD%98%E5%82%A8 介紹 在使用宇宙無敵最強版本管理 git 時, 如果使用 https 連線, 通常要求你輸

一圖明白爬蟲與反爬蟲手段

爬蟲與發爬蟲的廝殺,一方為了拿到資料,一方為了防止爬蟲拿到資料,誰是最後的贏家? 重新理解爬蟲中的一些概念 爬蟲:自動獲取網站資料的程式反爬蟲:使用技術手段防止爬蟲程式爬取資料誤傷:反爬蟲技術將普通使用者識別為爬蟲,這種情況多出現在封ip中,例如學校網路、小區網路再或者網路網路都是共享一個公共ip,這個時候如

聽說爬蟲封了?那是不會這些

目錄    前言    Spider    Middleware    瞎比比 前言 上一篇文章《爬蟲利器初體驗(1)》中,我們舉了個簡單的栗子,但是在真實的開發中這樣的爬蟲程式碼很容易就會被封掉

Python3網路爬蟲(十一):爬蟲黑科技之爬蟲程式更像人類使用者的行為(代理IP池等)

轉載請註明作者和出處:http://blog.csdn.net/c406495762 執行平臺: Windows Python版本: Python3.x IDE: Sublime text3 1 前言     近期,有些朋友問我一些關於如何應

hexo高階教程:想的部落格更多的人在搜尋引擎中搜到嗎?

上一次在掘金上發表的hexo高階教程:hexo高階教程next主題優化之加入網易雲音樂、網易雲跟帖、動態背景、自定義主題、統計功能,收到了不少朋友的喜歡,手動比心♪(^∀^●)ノ,也有不少朋友私信我給我提改進的意見,本著生命就是要折騰的原則,我又做了如下的優

Python3網絡爬蟲(十一):爬蟲黑科技之爬蟲程序更像人類用戶的行為(代理IP池等)

ping通 range alt 所在 and 有用 傳遞 javascrip was 原文鏈接: Jack-Cui,http://blog.csdn.net/c406495762 運行平臺: Windows Python版本: Python3.x IDE: Sublime

移動網際網路下半場的面試真經,進入 BAT 不再是夢

今天突然想聊聊面試了,最近有很多朋友讓我看簡歷,也有很多朋友跟我吐槽說:面試被虐了,簡直慘不忍睹,都有點懷疑自己的能力了。其實,我想說:正常。之所以這麼說是很多朋友可能沒有認清一些問題,哪些問題呢?兩點:一是,沒有認清自己;二是,沒有了解公司。 其實說實話,作為程式設計

Android 解決65535的限制 使用android-support-multidex解決Dex超出方法數的限制問題,的應用不再爆棚

 隨著應用不斷迭代,業務線的擴充套件,應用越來越大(比如集成了各種第三方sdk或者公共支援的jar包,專案耦合性高,重複作用的類越來越多),相信很多人都遇到過如下的錯誤: UNEXPECTED TOP-LEVEL EXCEPTION:   java.lang.Ill

Android 軟鍵盤的全面解析,不再怕控件遮蓋

() details 聲明 token andro 博文 blog 轉載 targe 博客地址:http://blog.csdn.net/l540675759/article/details/74528641 (2)在軟鍵盤彈出時,是否需要Activity對此進行調整adj

C#爬蟲不再覺得神祕

# 1、使用第三方類庫 HtmlAgilityPack 官方網址:https://html-agility-pack.net/?z=codeplex、 ```C# // From File 從檔案獲取html資訊 var doc = new HtmlDocument(); doc.Load(filePath)

scrapy 避免ban

req 3.1 user ces ont 添加 down auto 代理 1、settings.pyCOOKIES_ENABLED = False DOWNLOAD_DELAY = 3 ROBOTSTXT_OBEY = Falseip代理池設置 IPPOOL = [{‘ip

【轉】不再害怕指針——C指針詳解(經典,非常詳細)

有一個 情況 value 第一個字符 接下來 意思 strcpy abcdefg 數值 前言:復雜類型說明 要了解指針,多多少少會出現一些比較復雜的類型,所以我先介紹一下如何完全理解一個復雜類型,要理解復雜類型其實很簡單,一個類型裏會出現很多運算符,他們也像普通的表

不再害怕指針——C指針詳解(經典,非常詳細)

[0 返回 hello spa 程序 string 和數 過程 建議 http://blog.csdn.net/soonfly/article/details/51131141 前言:復雜類型說明 要了解指針,多多少少會出現一些比較復雜的類型,所以我先介紹一下如何完

不再害怕指針

加減 logs 而不是 不一致 數值 [0 strcmp 作用 james 1.細說指針   指針是一個特殊的變量, 它裏面存儲的數值被解釋成為內存裏的一個地址。要搞清一個指針需要搞清指針的四方面的內容: 指針的類型、指針所指向的類型、指針的值或者叫指針所指向的內存區、

【分享】不知道怎麽學java?java學習路線送上!不再迷茫!

事件 其他 script for 數據類型 java開發 數據 這一 height 學習Java之前,先別急,靜下心來好好想想:1)你對學習Java是否有興趣?2)你是否能靜下心來堅持不懈地學習?嗯,這是個容易但又絕對不應該忽略的問題,你確信自己對Java感興趣、而且又有吃

ios審核4.3拒? 別擔心 這幾步的 App 順利過審

ios審核 蘋果審核 蘋果審核4.3 ios4.3 最近有許多開發者遇到了因為審核條款 4.3(後文統一簡稱 4.3)審核條款 4.3(後文統一簡稱 4.3),這種情況 常見於大家上傳重復應用的時候,因為App Store 已經有了很多相似的應用 而被打回,今天我們來分享下 4.3 被拒的處理