如何讓你的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 被拒的處理