当前位置: 首页 > 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. 不要过于追求爬取速度,速度过快对网站有影响,网站的反爬措施就会更新,对自己没有好处,因为增量爬虫(项目需要维护),不要多进程加协程,一般多进程或者协程即可

更多精致内容

在这里插入图片描述

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 宝塔5.9 老版本 登录不进去 密码忘记 验证码不显示笔记
  • 深入探讨【C++容器适配器】:现代编程中的【Stack与Queue】的实现
  • SpringBoot使用RedisTemplate、StringRedisTemplate操作Redis
  • 如何使一个盒子水平垂直居中(常用的)
  • C++:类和对象 I(访问限定符、this指针)
  • 租用海外服务器需要考虑哪些因素
  • STM32入门开发操作记录(一)——新建工程
  • “好物”推荐+Xshell连接实例+使用Conda创建独立的Python环境
  • 通过git将文件push到github 远程仓库
  • windows信息收集和提权
  • jitsi 使用JWT验证用户身份
  • AI克隆声音,基于函数计算部署GPT-Sovits语音生成模型
  • 亚马逊erp有店铺不知道怎么上传产品的看过来!
  • shell从入门到精通(只需要这篇就够了)
  • 本地部署 EVE: Unveiling Encoder-Free Vision-Language Models
  • 深入了解以太坊
  • [nginx文档翻译系列] 控制nginx
  • Java多线程(4):使用线程池执行定时任务
  • npx命令介绍
  • React Native移动开发实战-3-实现页面间的数据传递
  • spring学习第二天
  • Vue全家桶实现一个Web App
  • 从tcpdump抓包看TCP/IP协议
  • 对象引论
  • 给github项目添加CI badge
  • 关键词挖掘技术哪家强(一)基于node.js技术开发一个关键字查询工具
  • 后端_MYSQL
  • 猫头鹰的深夜翻译:JDK9 NotNullOrElse方法
  • 前端临床手札——文件上传
  • 如何优雅的使用vue+Dcloud(Hbuild)开发混合app
  • 使用putty远程连接linux
  • 首页查询功能的一次实现过程
  • 数据科学 第 3 章 11 字符串处理
  • 如何在 Intellij IDEA 更高效地将应用部署到容器服务 Kubernetes ...
  • #etcd#安装时出错
  • #LLM入门|Prompt#1.7_文本拓展_Expanding
  • (0)Nginx 功能特性
  • (补充)IDEA项目结构
  • (代码示例)使用setTimeout来延迟加载JS脚本文件
  • (附源码)spring boot智能服药提醒app 毕业设计 102151
  • (附源码)springboot猪场管理系统 毕业设计 160901
  • (附源码)ssm高校升本考试管理系统 毕业设计 201631
  • (四)汇编语言——简单程序
  • (微服务实战)预付卡平台支付交易系统卡充值业务流程设计
  • (转)Linux整合apache和tomcat构建Web服务器
  • .360、.halo勒索病毒的最新威胁:如何恢复您的数据?
  • .NET MAUI Sqlite程序应用-数据库配置(一)
  • .net开发时的诡异问题,button的onclick事件无效
  • @Transactional 详解
  • []串口通信 零星笔记
  • [20171113]修改表结构删除列相关问题4.txt
  • [2019/05/17]解决springboot测试List接口时JSON传参异常
  • [Arduino学习] ESP8266读取DHT11数字温湿度传感器数据
  • [C++]18:set和map的使用
  • [C++进阶]map和set的相关题目