fake-useragent,python爬蟲偽裝請求頭


 數據頭User-Agent反爬蟲機制解析:

當我們使用瀏覽器訪問網站的時候,瀏覽器會發送一小段信息給網站,我們稱為Request Headers,在這個頭部信息里面包含了本次訪問的一些信息,例如編碼方式,當前地址,將要訪問的地址等等。這些信息一般來說是不必要的,但是現在很多網站會把這些信息利用起來。其中最常被用到的一個信息,叫做“User-Agent”。網站可以通過User-Agent來判斷用戶是使用什么瀏覽器訪問。不同瀏覽器的User-Agent是不一樣的,但都有遵循一定的規則。

但是如果我們使用 Python 的 Requests 直接訪問網站,除了網址不提供其他的信息,那么網站收到的User-Agent是空。這個時候網站就知道我們不是使用瀏覽器訪問的,於是它就可以拒絕我們的訪問。

如何獲取網站的 User-Agent 呢?

請打開 Chrome,任意打開一個網站,然后右鍵,“檢查” 打開開發者工具,定位到 “Network” 選項卡,並刷新網頁,如下圖所示:

在左下角會出現當前網頁加載的所有元素。隨便點一個元素,於是在右下角會出現對當前元素的請求信息。在里面找到Request Headers這一項,里面的內容即為我們需要的內容。

host                                 提供了主機名及端口號

Accept          告訴服務器能夠發送哪些媒體類型

Accept-Charset      告訴服務器能夠發送哪些字符集

Accept-Encoding     告訴服務器能夠發送哪些編碼方式(最常見的是utf-8)

Accept-Language     告訴服務器能夠發送哪些語言

Cache-control                  這個字段用於指定所有緩存機制在整個請求/響應鏈中必須服從的指令

User agent                       發送請求的應用程序名(一些網站會根據UA訪問的頻率間隔時間進行反爬)

cookie                              特定的標記信息,一般可以直接復制,對於一些變化的可以選擇構造(有關cookie的內容將在另一篇博文中進行詳細介紹)

 

不同的網站,Request Headers 是不同的

提示:post方法,session模塊的get方法,以及Session模塊的get方法,post方法,都支持自定義Headers,參數名為headers,他可以接收字典作為參數。我們可以通過字典來設定Headers,例如:

 

所以,檢查User-Agent是一種最簡單的反爬蟲機制,而通過設定Request Headers中的User-Agent,可以突破這種機制。

 

除此之外呢,下面介紹一個python下非常好用的偽裝請求頭的庫:fake-useragent,具體使用說明如下:

安裝fake-useragent庫
pip install fake-useragent

獲取各瀏覽器的fake-useragent

 1 from fake_useragent import UserAgent  2 ua = UserAgent()  3 #ie瀏覽器的user agent
 4 print(ua.ie)  5 
 6 #opera瀏覽器
 7 print(ua.opera)  8 
 9 #chrome瀏覽器
10 print(ua.chrome) 11 
12 #firefox瀏覽器
13 print(ua.firefox) 14 
15 #safri瀏覽器
16 print(ua.safari) 17 
18 #最常用的方式
19 #寫爬蟲最實用的是可以隨意變換headers,一定要有隨機性。支持隨機生成請求頭
20 print(ua.random) 21 print(ua.random) 22 print(ua.random)

示例代碼

 1 from fake_useragent import UserAgent  2 import requests  3 ua=UserAgent()  4 #請求的網址
 5 url="http://www.baidu.com"
 6 #請求頭
 7 headers={"User-Agent":ua.random}  8 #請求網址
 9 response=requests.get(url=url,headers=headers) 10 #響應體內容
11 print(response.text) 12 #響應狀態信息
13 print(response.status_code) 14 #響應頭信息
15 print(response.headers)

 


原文:https://blog.csdn.net/qq_29186489/article/details/78496747


免責聲明!

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



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