常用反爬手段和解决办法

1、通过headers中的User-Agent字段来反爬

解决办法:随机选择User-Agent

2、通过referer字段或者是其他字段来反爬

解决办法:设置headers里的相应字段

3、通过cookie来反爬
  • 方法1、session
    • 实例化session(session具有的方法和requests一样)
    • session发送请求post请求,对方服务器设置的cookie会保存在session
    • session请求登录后能够访问的页面
  • 方法2、cookie放在headers中
    • headers = {“Cookie”:“cookie字符串”}
  • 方法3、cookie转化为字典放在请求方法中
    • requests.get(url,cookies={“name的值”:“values的值”})

注意:

  • 如果不需要登录时,需要携带cookie,也可以使用上述方法,而有时携带cookie反而容易被识别为爬虫
  • 如果cookie过期时间比较久或者过期前就可以拿到想要的全部数据,一般才会使用方法2和方法3
  • 如果需要登录,一般使用一个账户和密码多次请求是容易被识别为爬虫的,可以准备多个账号,通过一个程序获取账号对应的cookie,组成cookie池,爬虫程序使用这些cookie
  • scrapy会在下一次请求时自动携带上一次的cookie,如果需要登录,也可以在请求时携带已登录的cookie,或者用scrapy.FormRequest或scrapy.FormRequest.from_response(form表单有action时)发送post请求
4、发送请求需要添加参数

参数可能是发送其他url请求获取的,或者在页面响应中,此时需要我们用chrome的search file查找

5、通过js来反爬
  • 通过js实现跳转来反爬

    • 在请求目标网站的时候,我们看到的似乎就请求了一个网站,然而实际上在成功请求目标网站之前,中间可能有通过js实现的跳转,我们肉眼不可见,这个时候可以通过点击perserve log按钮实现观察页面跳转情况
    • 在这些请求中,如果请求数量很多,一般来讲,只有那些response中带cookie字段的请求是有用的,意味着通过这个请求,对方服务器有设置cookie到本地
  • 通过js生成了请求参数

    • 对应的需要分析js,观察参数生成的实现过程
    • 可以使用selenium模块解决
  • 通过js实现了数据的加密

    • 对应的需要分析js,观察加密的实现过程
    • 可以使用selenium模块解决
6、通过验证码来反爬

通过打码平台来识别验证码

7、基于用户行为反爬虫
  • 还有一部分网站是通过检测用户行为,例如同一IP短时间内多次访问同一页面,或者同一账户短时间内多次进行相同操作。
  • 大多数网站都是前一种情况,对于这种情况,使用IP代理就可以解决。可以专门写一个爬虫,爬取网上公开的代理ip,检测后全部保存起来。
  • 对于第二种情况,可以在每次请求后随机间隔几秒再进行下一次请求。有些有逻辑漏洞的网站,可以通过请求几次,退出登录,重新登录,继续请求来绕过同一账号短时间内不能多次进行相同请求的限制。
8、通过自定义字体来反爬

切换到手机版

9、通过css来反爬

计算css的偏移

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值