常见的反爬手段与解决方法

通过headers字段反爬

  1. headers中的User-Agent字段反爬
    解决:随机生成User-Agent

pip install fake-useragent

from fake_useragent import UserAgent
ua = UserAgent()

for i in range(10):
	# 随机生成各种浏览器的ua
    print(ua.random)
    # 随机生成chorm的ua
	# print(ua.chorme)
    
  1. 通过referer字段反爬
    解决:加上该字段
  2. 通过cookie字段反爬
    cookie:记录用户登录的凭证
    解决:
    若目标网站不需登录,每次请求携带上一次的cookie即可,使用requests模块的session发起请求
    若目标网站需要登录,使用cookie池。
    scrapy框架本身自动传递cookie。在start_requests中yied请求时,传入cookie参数。
    我们可以在下载器中间件process_requests方法中设置cookie,从cookies池中读取。

通过js反爬

  1. 通过js实现网页跳转
    解决:通过浏览器nextwork中的Preservelog监测页面的跳转
  2. 通过js加密ajax请求参数
    解决:
    若请求参数简单,处理携带即可
    若请求参数加密复杂,使用selenium模块

使用验证码反爬

解决:使用打码平台
云打码:http://www.yundama.com/
能够解决通用的验证码识别

极验验证码智能识别辅助:http://jiyandoc.c2567.com/
能够解决复杂验证码的识别

验证码url地址

  1. url地址不变,验证码不变,爬取对应url
  2. url地址不变,验证码变化,是通过cookie实现的,使用requests模块的session

url地址不好找,使用selenium,截屏并找到对应的验证码图片位置,然后进行打码代码分析。

ip地址反爬

同一ip大量请求对方服务器,会被认为爬虫
解决:

  1. 使用time.sleep(),但是爬取数据速度会受到影响
  2. 使用代理池,购买高质量的代理,比如米扑

自定义字体反爬

比如猫眼电影的用户评分等
解决:使用手机版,可以的话尽量使用手机端,爬取难度低于pc端

使用css反爬

解决:计算css的反爬

分布式反爬

一定程度上起到反爬虫作用,提高爬取数据性能

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值