日常安爬虫工作中,遇到网站进行反爬是最正常不过的事,大部分网站是会识别访问者是通过浏览器还是爬虫,并根据这个来限制或放开你的访问。不同的目标网站之间反爬机制也是有差别的,有的比较简单,有的难度就比较大。小编根据多年的爬虫经验总结了以下一些常见的反爬机制;
- 分析用户请求的headers信息
- 检测用户行为,如短时间内同一个IP频繁访问
- 动态加载增加爬虫难度
- 验证码反爬虫
- 信息需要登录才能显示
以上都是些常见的,还有一些是不常见的比如有的网站某些信息是加密的,可能浏览器上看到的是这样,我们复制出来看到的又不一样,这种需要解密;有的网站会检测用户鼠标移动情况,爬虫肯定是没有鼠标移动的,这样的情况下肯定是会被反爬的,还有更严的,遇到需要点击某元素才能进行下一步的网站。
有困难肯定就有解决的方案,下面说一说使用Python写爬虫时,如何反反爬虫。
1、关于headers,常见的为浏览器加入headers,需要设置Requests Headers里面的内容。其中的每一个参数都有自己的作用,面对不同的网站时方法也不一样。常见的就是设置User-Agent,并且要越多越好。
# 设置IP切换头
tunnel = random.randint(1,10000)
headers = {"Proxy-Tunnel": str(tunnel)}
2、关于代理
简单方法就是购买,免费的和收费的相比还是差了不少。相信大家做了一些时间的爬虫后,对各家代理的质量都是很清楚的,都有自己比较信赖的厂家。代理的使用也是很简单的,不需要过多的讲解。
# 要访问的目标页面
targetUrl = "http://httpbin.org/ip"
# 要访问的目标HTTPS页面
# targetUrl = "https://httpbin.org/ip"
# 代理服务器(产品官网 www.16yun.cn)
proxyHost = "t.16yun.cn"
proxyPort = "31111"
# 代理验证信息
proxyUser = "username"
proxyPass = "password"
proxyMeta = "http://%(user)s:%(pass)s@%(host)s:%(port)s" % {
"host" : proxyHost,
"port" : proxyPort,
"user" : proxyUser,
"pass" : proxyPass,
}
# 设置 http和https访问都是用HTTP代理
proxies = {
"http" : proxyMeta,
"https" : proxyMeta,
}
3、关于cookie,请求会返回多个Cookie,我们从其中找到最有效的Cookie,这会极大的提高效率。
写在最后,爬虫一直都是大数据时代的热门话题,今天介绍一些爬虫伪装技巧,若有错误或者有其他的反爬解决方案可以留言交流,想要更多的了解反爬知识的可以搜索亿牛云获取。