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就講完了,下一次我們會講其它的內容,喜歡請點贊哦~
大家再見!