Python爬蟲教程之——詳解http請求頭中的User-agent與Referer


Hello大家好,我們又見面了!

這是我寫的第一篇python文章,還望各位朋友們多多指教!

歡迎關注我的公眾號:Huayu_IT!里面有許多編程和計算機的有趣知識哦~


廢話不多說,我們進入正題。


本文為EricNTH的原創博客,轉載請注明出處!


 

 


Http請求頭(header)

寫過python爬蟲的人都知道,在用requests發送http請求時,都會有一個header。里面裝了這次http請求的頭信息。要想做好爬蟲,設計好請求頭是非常重要的,否則萬一被反爬蟲查出(很容易),得不償失。

以下簡介來自百度:

HTTP客戶程序(例如瀏覽器),向服務器發送請求的時候必須指明請求類型(一般是GET或者POST)。如有必要,客戶程序還可以選擇發送其他的請求頭。大多數請求頭並不是必需的,但Content-Length除外。對於POST請求來說Content-Length必須出現。 (HttpServletRequest)


接下來由我來給大家介紹http請求頭中(可能是)最重要的兩部分,也是最容易被反爬蟲利用的兩部分。你若不想讓自己被發現是爬蟲,下面就請聽好啦~


User-agent

User-Agent 首部包含了一個特征字符串,用來讓網絡協議的對端來識別發起請求的用戶代理軟件的應用類型、操作系統、軟件開發商以及版本號。

一般,我們寫爬蟲時,User-agent總是必不可少的.。
你可以通過它來偽裝成瀏覽器在訪問。
一般,user-agent里裝的時訪問的瀏覽器,以及版本號等。

'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) '
'Chrome/45.0.2454.85 Safari/537.36 115Browser/6.0.3'
'Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_8; en-us) AppleWebKit/534.50 (KHTML, like Gecko) Version/5.1 Safari/534.50'
'Mozilla/5.0 (Windows; U; Windows NT 6.1; en-us) AppleWebKit/534.50 (KHTML, like Gecko) Version/5.1 Safari/534.50',
'Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0; Trident/4.0)'
'Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0)'
'Mozilla/5.0 (Windows NT 6.1; rv:2.0.1) Gecko/20100101 Firefox/4.0.1'
'Opera/9.80 (Windows NT 6.1; U; en) Presto/2.8.131 Version/11.11'
'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_0) AppleWebKit/535.11 (KHTML, like Gecko) Chrome/17.0.963.56 Safari/535.11'
'Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Trident/4.0; SE 2.X MetaSr 1.0; SE 2.X MetaSr 1.0; .NET CLR 2.0.50727; SE 2.X MetaSr 1.0)'
Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0'
'Mozilla/5.0 (Windows NT 6.1; rv:2.0.1) Gecko/20100101 Firefox/4.0.1'

以上這些是我有一次寫爬蟲的時候到網上搜到的一些,可見,又長又多啊~ 如果大家有需要用的,建議直接在我這里復制或上網搜,萬一寫錯了(太容易了),那說不定就被識別出來了呢~【就尷尬了】

大家看到了,里面寫的確實是瀏覽器名和版本,還有操作系統,電腦,語言,項目…

好了,下面我們進入下一個部分——referer。

Referer

HTTP Referer是header的一部分,當瀏覽器向web服務器發送請求的時候,一般會帶上Referer,告訴服務器該網頁是從哪個頁面鏈接過來的,服務器因此可以獲得一些信息用於處理。

這個因該還算好理解,比如你從CSDN首頁看到了我的這篇文章,然后進來了,你這次訪問的Referer就是https://www.csdn.net/。就是訪問這個頁面前你訪問的頁面,或者說是

順便說一句,本來正確的拼寫應該是Referrer,不知哪位大叔把它寫錯了,后來就成為慣例了【苦笑】,請千萬不要和你的英語老師說REFERER!

有些反爬機制就會識別referer,看看是否正常(一般檢查是否為空)。
那么什么時候referer會為空呢?
  1.你直接從瀏覽器的地址欄中輸入網址時(或者像Chrome的書簽欄中);
  2.你寫python爬蟲,沒有指定referer時
由2得,我們一定要指定啊。。。

一般我們寫referer時,都會寫完整的(包括https://,www等),並且使用該網站的主頁。

還有要注意,如果你寫爬蟲時,想偽裝成從百度等搜索引擎搜到的,請不要寫baidu.com,而要寫那個訪問的瞬間出現的link頁面(link.baidu.com+bulabula一堆東西),否則聰明的反爬可能會識破!如果沒心情去復制那一大長串鏈接,還不如偽裝成從主頁訪問的呢。再說一句,那個link界面就是百度統計網頁流量用的。


好了,今天有關於http請求中的header就講完了,下一次我們會講其它的內容,喜歡請點贊哦~

大家再見!

 


免責聲明!

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



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