python 爬蟲 url error : HTTP 403 Forbidden
阿新 • • 發佈:2018-12-31
之後又寫了一篇使用代理的筆記 點選開啟連結
--------------
用Python爬取QQ空間內容的時候, 一開始的程式,不知道怎麼回事,執行緒應該也不是問題,頻繁出現 Http 403 Forbidden ,在提交請求
get 或者post 的時候,也都加了headers ,不過還是大量丟擲403 異常;
後來發現用火狐的firebug 檢視訪問的url時候,發現就算是瀏覽器直接訪問,抓包工具上也是顯示403錯誤,然後於是用谷歌瀏覽器自帶的抓包工具結果正常訪問 返回200 , 就覺得可能是headers的問題,
一開始設定的headers的火狐的:
然後用谷歌的headers:headers={ 'User-Agent' :'MMozilla/5.0 (Windows NT 6.1; WOW64; rv:31.0) Gecko/20100101 Firefox/31.0' }
headers={
'User-Agent':'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/34.0.1847.137 Safari/537.36 LBBROWSER'
}
都改了之後,在執行發現403消失了!
雖然太清楚原因,但是也算是一種解決方法吧。
對用Python 做爬蟲時候HTTP 403 錯誤,總結一下吧:
1, 首先是偽裝成瀏覽器訪問 加入headers。 headers裡面最主要的內容就是User-Agent, 這個可以通過瀏覽器的抓包工具獲取
2, 如果仍然403 Forbidden, 那就在嘗試在headers內容裡面加入 Host項:如下:
headers={
'Host':'ptlogin2.qq.com',
'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/34.0.1847.137 Safari/537.36 LBBROWSER'
}
3,問題仍然不行的話, 換一個headers,其他的headers都可以通過不同瀏覽器的開發者工具得到最好的方法就是把常用的各種headers寫到一個表裡面就行,一個不行換另一個,或者隨機使用一個也可以。
另外附上一些uses_agents:
user_agents = [
'Mozilla/5.0 (Windows; U; Windows NT 5.1; it; rv:1.8.1.11) Gecko/20071127 Firefox/2.0.0.11',
'Opera/9.25 (Windows NT 5.1; U; en)',
'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322; .NET CLR 2.0.50727)',
'Mozilla/5.0 (compatible; Konqueror/3.5; Linux) KHTML/3.5.5 (like Gecko) (Kubuntu)',
'Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.0.12) Gecko/20070731 Ubuntu/dapper-security Firefox/1.5.0.12',
'Lynx/2.8.5rel.1 libwww-FM/2.14 SSL-MM/1.4.1 GNUTLS/1.2.9',
"Mozilla/5.0 (X11; Linux i686) AppleWebKit/535.7 (KHTML, like Gecko) Ubuntu/11.04 Chromium/16.0.912.77 Chrome/16.0.912.77 Safari/535.7",
"Mozilla/5.0 (X11; Ubuntu; Linux i686; rv:10.0) Gecko/20100101 Firefox/10.0 ",
]