回到頂部
ⅰ、爬蟲和反爬蟲基本概念
爬蟲:自動獲取**資料的程式,關鍵是批量的獲取。
反爬蟲:使用技術手段防止爬蟲程式的方法。
誤傷:反爬蟲技術將普通使用者識別為爬蟲,如果誤傷過高,效果再高也不能用。
成本:反爬蟲需要的人力和機器成本。
攔截:成功攔截爬蟲,一般攔截率越高,誤傷率越高。
ⅱ、反爬蟲的目的
初級爬蟲----簡單粗暴,不管伺服器壓力,容易弄掛**。
資料保護
失控的爬蟲----由於某些情況下,忘記或者無法關閉的爬蟲。
商業競爭對手
ⅲ、爬蟲和反爬蟲對抗過程
回到頂部
原理圖:
我最早接觸scrapy的時候就是看這張原理圖,如下圖
現在有新的原理圖,更加直觀,如下圖
回到頂部
可以看scrapy文件: 檢視相關的說明即可。
模擬登陸後,request會自動傳遞cookies,不用我們新增。
回到頂部
這是個模版以後直接拿來用即可
1#middlewares.py檔案
2from fake_useragent import useragent #
這是乙個隨機useragent的包,裡面有很多useragent
3class
randomuseragentmiddleware(object):
4def
__init__
(self, crawler):
5 super(randomuseragentmiddleware, self).__init__()6
7 self.ua =useragent()
8 self.ua_type = crawler.settings.get('
random_ua_type
', '
random
') #
從setting檔案中讀取random_ua_type值910
@classmethod
11def
from_crawler(cls, crawler):
12return
cls(crawler)
1314
defprocess_request(self, request, spider):
15def
get_ua():
16'''
gets random ua based on the type setting (random, firefox…)
'''17
return
getattr(self.ua, self.ua_type)
1819 user_agent_random=get_ua()
20 request.headers.setdefault('
user-agent
', user_agent_random) #
這樣就是實現了user-agent的隨即變換
1回到頂部#settings.py檔案
2 **********_middlewares =
6 random_ua_type='
random
'
這是個模版以後直接拿來用即可
11.sql語言取出隨機記錄:在此是隨機取出一條記錄是ip和埠組成**ip#middlewares.py檔案
2class
randomproxymiddleware(object):
3'''
動態設定ip**
'''4
defprocess_request(self,request,spider):
5 get_ip = getip() #
這裡的函式是傳值ip的
6 request.meta["
proxy
"] =get_ip7#
例如8#get_ip = getip() #這裡的函式是傳值ip的9#
request.meta["proxy"] = ''
101112#
settings.py檔案
13 **********_middlewares =
12.使用xpath選擇器:select ip,port from
proxy_ip
2order
byrand
()3 limit1
可以使用scrapy中的selector,**如下:
13.if __name__ == "__main__"問題from scrapy.selector import
selector
2 html=requests.get(url)
3 selector=selector(text=html.text)
4 selector.xpath()
如果沒有這個,呼叫時會預設執行以下命令
1回到頂部if__name__ == "
__main__":
2 get_ip=getip()
3 get_ip.get_random_ip()
驗證碼識別方法
編碼實現(tesseract-ocr)
人工打碼
回到頂部
如果用不到cookies的,就不要讓對方知道你的cookies--設定---cookies_enabled = false
自定義setting中的引數可以這樣寫:
1出處:#在spider.py檔案中
2 custom_settings=
Python 反爬蟲 文字混淆反爬蟲
文中案例參考 github專案 注意 相同的字形的寬高或者輪廓點可能會不一樣,但是它們描述的會是乙個字形 因此,只有起止座標和點座標資料完全一樣的字形,我們才能肯定它們是相同的字元 參考案例005及書中p202 瀏覽器器物件 bom 詳細dom和bom物件屬性和方法檢視圖書p66 p69 使用者憑證...
python反爬蟲策略 python反爬蟲手冊
user agent識別 修改請求頭資訊裡的user agent 請求頭資訊識別 比如說referer,content type,請求方法 post,get 構造相應的請求頭資訊。比如說referer,我們在提取url的時候,要把url所在頁面的url也儲存起來,並放到request.headers...
爬蟲與反爬蟲大戰
爬蟲與發爬蟲的廝殺,一方為了拿到資料,一方為了防止爬蟲拿到資料,誰是最後的贏家?爬蟲 自動獲取 資料的程式 反爬蟲 使用技術手段防止爬蟲程式爬取資料 誤傷 反爬蟲技術將普通使用者識別為爬蟲,這種情況多出現在封ip中,例如學校網路 小區網路再或者網路網路都是共享乙個公共ip,這個時候如果是封ip就會導...