之后又写了一篇使用代理的笔记 点击打开链接
--------------
用Python爬取QQ空间内容的时候, 一开始的程序,不知道怎么回事,线程应该也不是问题,频繁出现 Http 403 Forbidden ,在提交请求
get 或者post 的时候,也都加了headers ,不过还是大量抛出403 异常;
后来发现用火狐的firebug 查看访问的url时候,发现就算是浏览器直接访问,抓包工具上也是显示403错误,然后于是用谷歌浏览器自带的抓包工具结果正常访问 返回200 , 就觉得可能是headers的问题,
一开始设置的headers的火狐的:
headers={
'User-Agent' :'MMozilla/5.0 (Windows NT 6.1; WOW64; rv:31.0) Gecko/20100101 Firefox/31.0'
}
然后用谷歌的headers:
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 ",
]