爬虫反爬措施应对

爬虫反爬措施应对

请求头headers

user-agent: fake_useragent

cookie:

referer检测

cookie池维护及调度

GitHub 开源项目 https://github.com/Python3WebSpider/CookiesPool

爬取频率限制

由于爬虫发起请求的频率过大,给服务器造成压力,影响正常经营

  1. 按一个周期时间内的频率限制,先测试周期及限制的频率,再计算,设置时间间隔
  2. 还有按天计算频率的 比如天眼查单账户一天只能爬取6000-7000条请求数据

IP限制

  1. IP代理

    1. 自己搭建ip池

      开源项目 https://github.com/Python3WebSpider/ProxyPool

    2. 第三方ip代理

      豌豆代理,站大爷

  2. 多主机策略

    访问的网站可能有多个主机,可以进行多进程访问网站不同的主机

    例如豆瓣:

    豆瓣本身有三台服务器,通过http://tool.chinaz.com/dns/?type=1&host=&ip= 可以进行查询

    豆瓣本身没有配置IP访问时的virtualhost,通过IP访问服务器一定要在http头部指明host:www.douban.com
    headers={
        'host':'www.douban.com'
    }
    ## 多主机策略,使用ip地址进行访问
    req=request.Request('http://154.8.131.171',headers=header)
    
  3. 重启路由器 由于路由的自动更换ip原理

分布式搭建

scrapy-redis

https://blog.csdn.net/tichimi3375/article/details/82353597

部署 scrapyd scrapy-client 使用https://www.jianshu.com/p/ddd28f8b47fb

# 安装
pip install scrapy
pip install scrapyd
pip install scrapyd-client
# 开启scrapyd 服务
scrapyd

#修改前
[deploy]
#url = http://localhost:6800/
project = xiaozhuSpider2


#修改后
[deploy:demo]# 增加
url = http://localhost:6800/  # 打开部署的机器
project = xiaozhuSpider2

在windows环境下,在python解释器文件中创建 scrapyd-deploy.bat

因为scrapyd-deploy不能直接运行

@echo off
::python解释器 scrapyd-deploy 路径
"C:\Program Files\Python35\python.exe" "C:\Program Files\Python35\Scripts\scrapyd-deploy" %1 %2 %3 %4 %5 %6 %7 %8 %9

进入 带有scrapy.cfg的那一层级目录

# 执行部署命令  将爬虫上传到机器
scrapyd-deploy demo -p xiaozhuSpider2
#  先运行命令查看服务端状态
curl http://localhost:6800/daemonstatus.json
#  执行运行命令
# project为工程名   spider 为spiders文件下的爬虫文件名
curl http://localhost:6800/schedule.json -d project=xiaozhuSpider2 -d spider=xiaozhu

在浏览器 请求 127.0.0.1:6800 进入web页面查看状态

补充:

我们在生产环境中,一般scrapyd是部署在服务器,而我们一般会从本地直接发送到服务器端,这时需要调整

vim /usr/lib/python3/site-packages/scrapyd/default_scrapyd.conf

scrapyd的默认配置文件:

默认scrapyd启动bind绑定的ip地址是127.0.0.1端口是:6800, 将ip地址设置为0.0.0.0

打开配置文件不需要翻页就能够找到bind_address

api命令见 https://scrapyd.readthedocs.io/en/stable/api.html

scrapy-redis

GitHub开源scrapyd https://github.com/scrapy/scrapyd

部署界面 https://github.com/scrapy/scrapyd-client

可视化任务管理 https://github.com/DormyMo/SpiderKeeper

安装

pip install scrapyd

图片验证码

  1. 手动识别验证码

  2. pytesseract识别简单的验证码

  3. 对接打码平台

    超级鹰

极验验证码

selenium 处理

https://blog.csdn.net/qq_42213727/article/details/80750666

国家企业信用信息中心: https://segmentfault.com/a/1190000017499416

js混淆和渲染

js渲染其实就是对HTML页面的修改。比如有一些网页本身没有返回数据,数据是经过js加载之后添加到HTML当中的。当遇到这种情况的时候,我们要知道爬虫是不会执行JavaScript操作。所以需要用其他的方法处理。

  1. 通过阅读网站js源码,找到关键的代码,并用python实现。
  2. 通过阅读网站js源码,找到关键的代码,用PyV8等库直接执行js代码。
  3. 通过selenium库直接模拟浏览器环境。

字体反爬处理

猫眼、汽车之家: http://www.sohu.com/a/259331155_176628

采用自定义字体文件是CSS3的新特性

https://blog.csdn.net/litang199612/article/details/83413002

大众点评 :https://www.cnblogs.com/shenyiyangle/p/10730872.html

selenium模拟浏览器

App抓包

fidder 天天模拟器 抓包 https://www.sohu.com/a/281365906_747391

微信小程序

APP 抓包和微信小程序抓包-Charles 的精简使用教程

https://blog.csdn.net/liqing0013/article/details/83010531

分析微信发送消息接口(基于网页版分析)

https://juejin.im/post/5d1d6ee5e51d45775d516fdd

APP抓包和反编译

反编译工具: Jadx

  1. 加密方式:80%都是 时间戳 ts + sign ------sign值是对参数进行MD5运算的字符串

  2. 就是直接将Java标准库中常见的被用于生成加密参数的方法给Hook了,监听它们的输入参数和返回值,这样就能直接得到加密、Hash前的原文、密钥、IV等内容 工具包 :Inspeckage

    而在你需要的时候,只需要打开Inspeckage -> 选择需要Hook的APP -> 打开Inspeckage的Web端或者在日志中搜索你所需要找的加密参数就可以得到原文和使用的加密、Hash类型,直接秒杀!

    使用JustTrustMe之类的Hook工具

浏览器(Chrome)

Fiddler/Charles之类的抓包工具(Fiddler)

Python和JavaScript的IDE或编辑器(Pycharm + WebStorm)

Python3.x和NodeJS(Python3.6.5 + NodeJS10.15.1)

Python库:pyexecjs、aiohttp、aiohttp_requests、lxml(最新版本)

NodeJS库:jsdom(最新版本)

当你写爬虫时遇上Flash+加密的解决方式

https://juejin.im/post/5c88af83f265da2deb6ae769

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值