当前位置: 首页 > news >正文

《代理选择与反爬虫策略探究:如何优化网络爬虫效率与稳定性》

代理IP如何选以及常见反爬策略

为什么需要代理?

因为有的网站会封IP,用户如果没有登录,那IP就是身份标识,如果网站发现用户行为异常就非常可能封IP

什么是代理IP

就是让一个人帮你转交请求,帮你转交的人对面不熟,也就难以发现频繁请求的是你

但是要注意我们只能使用高匿代理,透明代理(转交请求同时告诉是帮谁转交的)什么的是不能用的

如何衡量代理

速度:加代理之后3秒钟能相应是优秀,5秒钟之内能相应是能用的

安全:用来路不明的代理有信息安全风险

价格:性价比需要考虑

请求间隔:有的接口有请求间隔限制,尤其是按时收费的这种,也要考虑

稳定性:失效时间人为设置有长时间的和短时间的,短的1到3分钟,长的几天的都有,越长的越贵,我们用短的就行

比较常用的有芝麻代理,小象代理,快代理,站大爷等等

爬虫选择哪种代理

  1. 高匿代理:需要代理IP池,否则太费代理,太烧钱
  2. 隧道代理
    • 短效版
    • 动态版:以IP生成cookie登录抓取数据 不能满足(IP存活时间短)
  3. 代理客户端:贵,但平均每隔代理几秒一换,比较快
    • 优点:
      • 时间恰当,以IP生成cookie登录抓取数据 也能满足

反爬策略

  1. 封禁IP类

    • 阈值:

      • 打比方,一分钟60次,第一次封禁2分钟,然后策略改为一分钟45次
      • 打比方,一分钟60次,第二天访问同样的内容,则策略改为一分钟45次(增量爬虫,需每天爬取进行数据更新)

      总结:所以有的代理IP可以复活,代理IP池很有必要(后续会发布)

  2. 蜜罐陷阱:网页有正常用户不可访问的链接,爬虫获取并访问此链接将进入无限循环,直到程序崩溃

  3. token加密验签

  4. 检测环境变量:selenium可以检测环境变量,requests访问同样也可以检测环境变量

爬虫策略

  1. 程序模拟抓
    • 可能涉及的问题
      • token加密验签
      • 封禁IP
      • 检测环境变量(不常见)
      • 蜜罐陷阱(不常见)
  2. selenium抓
    • 可能涉及的问题
      • 封禁IP
      • 检测环境变量(可以消除指纹)
  3. selenium被未知手段封禁,山穷水尽:ODR识别(windows鼠标模拟操作、windows鼠标模拟切换IP、windows鼠标模拟访问数据截图、ODR识别获取数据)
    • 弊端:
      • ODR识别不准,需要进行模型训练
      • 慢,识别七八秒钟
    • 适用场景:
      • 适用于只用获取一次数据的项目,不适合增量爬虫

爬虫注意

  1. 不要过于追求爬取速度,速度过快对网站有影响,网站的反爬措施就会更新,对自己没有好处,因为增量爬虫(项目需要维护),不要多进程加协程,一般多进程或者协程即可

更多精致内容

在这里插入图片描述

http://www.lryc.cn/news/399044.html

相关文章:

  • Kotlin Flow 防抖 节流
  • Android Studio下载与安装
  • 【LC刷题】DAY24:122 55 45 1005
  • 从零开始的python学习生活2
  • 【并发编程】进程 线程 协程
  • Vue的生命周期函数有哪些?详细说明
  • 大语言模型应用--AI工程化落地
  • 我会什么开发技能
  • Run LoongArch64 Alpine VM on x86_64
  • 4层负载均衡和7层负载均衡
  • 前端Vue组件化实践:打造仿京东天猫商品属性选择器组件
  • 智慧城市3d数据可视化系统提升信息汇报的时效和精准度
  • Git 详解(原理、使用)
  • android11为开机动画添加铃声(语音)
  • 使用 Akshare 下载国内的期货(主力连续)、股票和指数的历史行情数据
  • 【React】Google 账号之个性化一键登录按钮功能
  • MySQL已经连接对应数据库,但mapper中表名仍报错
  • CentOS 7:停止更新后如何下载软件?
  • MySQL GROUP_CONCAT 函数详解与实战应用
  • MATLAB Gazebo联合仿真
  • Vue3 pdf.js将二进制文件流转成pdf预览
  • 【机器学习】逻辑回归的原理、应用与扩展
  • Ubuntu22.04系统装好后左上角下划线闪烁不开机(N卡)
  • Leetcode刷题4--- 寻找两个正序数组的中位数 Python
  • springBoot(若依)集成camunda
  • 【微信小程序知识点】自定义构建npm
  • JCR一区 | Matlab实现GAF-PCNN-MATT、GASF-CNN、GADF-CNN的多特征输入数据分类预测/故障诊断
  • 新手教学系列——高效管理MongoDB数据:批量插入与更新的实战技巧
  • C# Winform 自定义事件实战
  • Python通过继承实现多线程