#1.反爬机制:
(1)UA检测(User-Agent检测):门户网站的服务器会检测对应请求的载体标识,如果检测到请求的载体身份标识为某一款浏览器的话,那么说明该请求是一个正常的
(2)验证码
#请求;如果检测到请求的载体身份标识不是基于某一款浏览器的,则表示该请求为不正常的请求(即爬虫),而服务器端很有可能拒绝该次请求
(3)封掉IP
当对某一个网站访问频繁时,Web服务器(网站服务器)会封掉本机IP,终止访问,在这种情况下,需要使用代理IP继续访问。
(4)防盗链
跨站访问资源,被称为盗链,抓包工具的referer参数正是为了告诉请求响应者,本次请求的引用页是谁,资源提供端可以分析这个引用者是否“友好”,是否允许其“引用”,对于不允许访问的引用者,可以不提供资源,这样访问者在页面上就只能看到一个无法加载的浏览器默认占位的警告图片,甚至服务端可以返回一个默认的提醒勿盗链的提示图片。
(5)图片懒加载
图片的懒加载就是在页面打开的时候,不一次性全部显示页面所有的图片,而是只显示当前视口内的图片,当网页上的图片被滑动到可视化区域的范围之中时(即用户查看到图片位置时),图片的伪属性才会被修改为真正的图片属性。
#2.反反爬策略:
(1)UA伪装(User-Agent伪装):让爬虫对应的请求载体身份标识伪装成某一款浏览器
headers={
"User-Agent":"Mozilla/5.0 (Windows NT 5.1) AppleWebKit/535.11 (KHTML, like Gecko) Chrome/17.0.963.84 Safari/535.11 SE 2.X MetaSr 1.0 Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Trident/4.0; SV1; QQDownload 732; .NET4.0C; .NET4.0E; SE 2.X MetaSr 1.0"
}#此处是使用Edge浏览器的身份标识
(2)自动识别/人工识别
○1第三方平台自动识别验证码: 云码、超级鹰等。(推荐)
什么情况下使用打码平台:
验证码触发量小,有打码平台方面的预算,开发周期比较赶,不具备独立解决验证码的能力,
○2也可以爬取到图片然后人工肉眼识别验证码。
&自动识别验证码平台:
云码平台:https://www.jfbym.com/price/
可以在开发文档——>对接文档里查看识别不同种类验证码所需要的参数。
超级鹰平台:http://www.chaojiying.com/api-5.html
注:当爬取的页面源码中找不到局部图片(如验证码图片)地址时,可以利用浏览器自动化中screenshot_as_png方法截屏获取。
(3)代理IP
○1代理概念:
是指使用代理服务器,相当于一个中转站,发起请求时发给代理,再由代理发请求给web服务器,用于破解封IP这种反爬策略
○2代理的作用:
1. 突破自身IP访问的限制
2. 隐藏自身真实IP
○3代理相关的网站:
——快代理 : 快代理 - 企业级HTTP代理IP云服务
——西祠(cí)代理:
——http://www.goubanjia.com
○4代理的类型:
——http:应用到http协议对应的url中
——https:应用到https协议对应的url中
○5代理IP的匿名度:
——透明:服务器知道此次请求使用了代理,也知道对应的真实IP
——匿名:知道使用了代理,不知道真实IP
——高匿:不知道使用了代理,更不知道真实的IP
○6代理IP如何应用:
发起请求时的Proxies参数,值为字典
response=requests.get(url=url,headers=headers,proxies={"HTTP":"47.57.188.208:80"}).text
(4)处理防盗链问题
方法○1:一个页面一个页面的请求
方法○2:在get请求的headers字典中封装上一个请求页面的url
headers={“referer”:url}
(5)处理图片懒加载
在获取拥有图片懒加载机制的页面图片数据时,如果没有去使用可视化界面加载图片,此时图片使用的就是伪属性,就会导致xpath表达式定位不到该图片真正的属性,所以需要将xpath表达式定位到该图片的伪属性。