常见的反爬手段、原理以及应对思路

应对反爬的主要思路就是:尽可能的去模拟浏览器,浏览器在如何操作,代码中就如何去实现。

1.通过User-Agent反爬

爬虫发送请求时,请求头中默认没有User-Agent,或者提供非正常的UA。

应对思路:在请求时添加UA

具体应对:

       requests模块发送请求时在headers参数中UA键值对

        selenium默认自带被控制浏览器的UA,也可以替换UA

随机User-Agent

2.通过Referer来反爬

Referer是header的一部分,当浏览器向web服务器发送请求的时候,会带上Refer,告诉服务器是从哪个页面链接过来的。

爬虫发送请求时,请求头中默认情况下不会带上Referer字段。

应对思路:在请求时添加Referer

具体应对:

       requests模块发送请求时在headers参数中添加Referer键值对,从抓包信息中复制Referer信息

       selenium默认自带Referer

3.通过Cookie来反爬

无论是否需要登陆,web服务器都可以在用户的浏览器中设置Cookie;Cookie是header的一部分,当浏览器向web服务器发送请求的时候,如果存在Cookie就一定会携带。

web服务器检查请求头中cookie是否是之前设置的cookie

应对思路:

       携带cookie发送请求

具体应对:

       requests模块发送请求时,使用requests.session自动处理cookie

       用requests模块发送请求时,在cookie参数或者headers参数中,使用selenium获取的cookie;注意cookie的过期时间。

       构建cookie池(根据cookie的过期时间,定期批量获取的cookie,放到数据库中),requests模块发送请求时,使用从cookie池中获取的cookie

4.通过js加密请求参数、解密加密的数据来反爬

利用用户的浏览器执行web服务器返回的js代码来对加密的响应内容进行解密(不常见)

利用用户的浏览器执行web服务器返回的js代码来对请求参数进行加密,之后再发送请求(常见)

应对思路:python重写js代码的功能或者执行js代码拿到结果

具体应对:

       完全看不懂js代码:selenium

       完全看懂js代码:python重写js代码的功能

       能够看懂js代码执行的大致过程:使用js2py模块运行相关的js代码,获取运行结果

5.通过行为验证来反爬

对方服务器通过弹出验证码强制验证用户浏览行为

应对思路:使用打码平台或深度学习的方式破解验证码

具体应对:

        打码平台

       人工输入

      深度学习

6.通过ip地址来反爬

正常用户很难在很短的时间内打开需要点击才能访问的链接,那么网站就可以根据ip地址和cookie以及user-agent等能区分不同用户身份的信息进行反爬

检测同一个ip在单位时间内是否发送了大量请求

经常和cookie以及user-agent配合检查

应对思路:

       网上获取免费的代理ip

       购买代理ip

       使用代理ip池

具体应对:

构建代理ip池

          把免费以及收费的代理ip放到数据库中

          使用是随机获取一个代理ip

          向目标url发送请求,并设置超时

          如果超时或无法使用就在数据库中标记该代理ip对具体访问的url不可用

requests模块发送请求使用proxies参数

selenium可以通过配置对象来使用代理ip

7.通过自定义字体来反爬

利用浏览器能够加载渲染并正确显示自定义字体的功能,使用自定义字体不影响正常用户浏览

应对思路:

      从移动端页面获取数据

      处理并解析自定义字体

具体应对:

       切换到移动端的页面,如用浏览器移动端模式访问

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值