爬蟲之header

有些網站不會贊成程序直接用上面的方式進行訪問,若是識別有問題,那麼站點根本不會響應,因此爲了徹底模擬瀏覽器的工做,咱們須要設置一些Headers 的屬性。瀏覽器

首先,打開咱們的瀏覽器,調試瀏覽器F12,我用的是Chrome,打開網絡監聽,示意以下,好比知乎,點登陸以後,咱們會發現登錄以後界面都變化了,出現一個新的界面,實質上這個頁面包含了許許多多的內容,這些內容也不是一次性就加載完成的,實質上是執行了好屢次請求,通常是首先請求HTML文件,而後加載JS,CSS 等等,通過屢次請求以後,網頁的骨架和肌肉全了,整個網頁的效果也就出來了。服務器

簡書著做權歸做者全部,任何形式的轉載都請聯繫做者得到受權並註明出處。
拆分這些請求,咱們只看一第一個請求,你能夠看到,有個Request URL,還有headers,下面即是response,圖片顯示得不全,小夥伴們能夠親身實驗一下。那麼這個頭中包含了許許多可能是信息,有文件編碼啦,壓縮方式啦,請求的agent啦等等。網絡

其中,agent就是請求的身份,若是沒有寫入請求身份,那麼服務器不必定會響應,因此能夠在headers中設置agent,例以下面的例子,這個例子只是說明了怎樣設置的headers,小夥伴們看一下設置格式就好。ide

import urllib
import urllib2 網站

url = 'http://www.server.com/login'
user_agent = 'Mozilla/4.0 (compatible; MSIE 5.5; Windows NT)'
values = {'username' : 'cqc', 'password' : 'XXXX' }
headers = { 'User-Agent' : user_agent }
data = urllib.urlencode(values)
request = urllib2.Request(url, data, headers)
response = urllib2.urlopen(request)
page = response.read()編碼

這樣,咱們設置了一個headers,在構建request時傳入,在請求時,就加入了headers傳送,服務器若識別了是瀏覽器發來的請求,就會獲得響應。url

另外,咱們還有對付」反盜鏈」的方式,對付防盜鏈,服務器會識別headers中的referer是否是它本身,若是不是,有的服務器不會響應,因此咱們還能夠在headers中加入referer調試

例如咱們能夠構建下面的headers
headers = { 'User-Agent' : 'Mozilla/4.0 (compatible; MSIE 5.5; Windows NT)' ,
'Referer':'http://www.zhihu.com/articles' }code

相關文章
相關標籤/搜索