爬蟲 07 反爬蟲

2021-08-08 08:45:50 字數 3214 閱讀 3718

回到頂部

ⅰ、爬蟲和反爬蟲基本概念

爬蟲:自動獲取**資料的程式,關鍵是批量的獲取。

反爬蟲:使用技術手段防止爬蟲程式的方法。

誤傷:反爬蟲技術將普通使用者識別為爬蟲,如果誤傷過高,效果再高也不能用。

成本:反爬蟲需要的人力和機器成本。

攔截:成功攔截爬蟲,一般攔截率越高,誤傷率越高。

ⅱ、反爬蟲的目的

初級爬蟲----簡單粗暴,不管伺服器壓力,容易弄掛**。

資料保護

失控的爬蟲----由於某些情況下,忘記或者無法關閉的爬蟲。

商業競爭對手

ⅲ、爬蟲和反爬蟲對抗過程

回到頂部

原理圖:

我最早接觸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

'

回到頂部

這是個模版以後直接拿來用即可

1

#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 =

1.sql語言取出隨機記錄:在此是隨機取出一條記錄是ip和埠組成**ip

1

select ip,port from

proxy_ip

2order

byrand

()3 limit1

2.使用xpath選擇器:

可以使用scrapy中的selector,**如下:

1

from scrapy.selector import

selector

2 html=requests.get(url)

3 selector=selector(text=html.text)

4 selector.xpath()

3.if __name__ == "__main__"問題

如果沒有這個,呼叫時會預設執行以下命令

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就會導...