[备忘]Python网络爬虫伪造报头
2016-02-22 10:29
246 查看
使用python从大量URL抓取内容时,往往容易出现bug,如httplib.BadStatusLine: '',403,Socket Error。
很大一部分原因是服务器认为是恶意攻击不予响应。因此需要认为伪造报头来处理。
Chrome右键检查,Network,点开加载项header则可以看到报头信息。
req_header = {
'Host':'pic.581r.com',
'User-Agent':'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/47.0.2526.106 Safari/537.36',
'Accept':'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8',
'Connection':'keep-alive',
}
timeout = 30
reee = urllib2.Request(link,None,req_header)
rsss = urllib2.urlopen(reee,None,timeout)
content2 = rsss.read()
with open(target,'wb') as code:
code.write(content2)
rsss.close()
time.sleep(1)
最好每次都把打开的内容关闭以防报错。
很大一部分原因是服务器认为是恶意攻击不予响应。因此需要认为伪造报头来处理。
Chrome右键检查,Network,点开加载项header则可以看到报头信息。
req_header = {
'Host':'pic.581r.com',
'User-Agent':'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/47.0.2526.106 Safari/537.36',
'Accept':'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8',
'Connection':'keep-alive',
}
timeout = 30
reee = urllib2.Request(link,None,req_header)
rsss = urllib2.urlopen(reee,None,timeout)
content2 = rsss.read()
with open(target,'wb') as code:
code.write(content2)
rsss.close()
time.sleep(1)
最好每次都把打开的内容关闭以防报错。
相关文章推荐
- Windows CE 下的 TCP 服务器端类
- Windows CE 下的 TCP 客户端类
- http协议
- TCP和UDP区别
- 沿海信标台站的说明(来源于网络)
- Windows Phone 7 下 Socket(TCP) 与 PC 通讯
- 通过 ActiveSync 调试网络的问题
- XMLHttpRequest Level 2 使用指南
- 现在很多Web项目都选择Nginx作为Http服务器理由
- Linux 网卡驱动学习(二)(网络驱动接口小结)
- iOS开发—封装网络请求工具类
- Linux 网卡驱动学习(一)(分析一个虚拟硬件的网络驱动例子)
- C/C++内存泄漏及检测 http://www.cnblogs.com/skynet/archive/2011/02/20/1959162.html
- Wireshark抓包实例分析HTTP问题
- Http报头Accept与Content-Type的差别
- 一个存在三年的内核 bug 引发大量的容器系统出现网络故障
- 一个存在三年的内核 bug 引发大量的容器系统出现网络故障
- HTTPS 原理
- 网络运维相关文章
- Java Notes-14(DateAtHost Client, TinyHttpd Server, Socket Options)