header = {
"content-type": "application/json",
"a": json.dumps({"b": "b_value"}),
"some_param": json.dumps({"some_key_value": "some_string"})
}
也就是说用json.dumps把多余的嵌套变成字符串
1、从用户请求的Headers反爬虫是最常见的反爬虫策略。伪装header。很多网站都会对Headers的User-Agent进行检测,还有一部分网站会对Referer进行检测(一些资源网站的防盗链就是检测Referer)。如果遇到了这类反爬虫机制,可以直接在爬虫中添加Headers,将浏览器的User-Agent复制到爬虫的Headers中;或者将Referer值修改为目标网站域名[评论:往往容易被忽略,通过对请求的抓包分析,确定referer,在程序中模拟访问请求头中添加]。对于检测Headers的反爬虫,在爬虫中修改或者添加Headers就能很好的绕过。
2、基于用户行为反爬虫
还有一部分网站是通过检测用户行为,例如同一IP短时间内多次访问同一页面,或者同一账户短时间内多次进行相同 *** 作。[这种防爬,需要有足够多的ip来应对]
(1)、大多数网站都是前一种情况,对于这种情况,使用IP代理就可以解决。可以专门写一个爬虫,爬取网上公开的代理ip,检测后全部保存起来。有了大量代理ip后可以每请求几次更换一个ip,这在requests或者urllib中很容易做到,这样就能很容易的绕过第一种反爬虫。
编写爬虫代理:
步骤:
1.参数是一个字典{'类型':'代理ip:端口号'}
proxy_support=urllib.request.ProxyHandler({})
2.定制、创建一个opener
opener=urllib.request.build_opener(proxy_support)
3a.安装opener
urllib.request.install_opener(opener)
3b.调用opener
opener.open(url)
用大量代理随机请求目标网站,应对反爬虫
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)