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

1.反爬虫机制

一、IP 封锁

网站可以检测请求的IP地址,并封锁那些频繁请求的IP,使其无法访问网站。这是一种常见的反爬虫策略,用于防止单个IP地址对服务器造成过大的负载。

  • 解决办法 : 使用代理IP池以避免IP封锁
    // 待补充

二、请求头检测(User-Agent检测)

通过检查请求头中的User-Agent字段,网站可以识别出请求是否来自常见的浏览器或是一个自动化脚本。如果User-Agent表明请求来自一个爬虫程序,网站可能会拒绝该请求。

当然可以,以下是对这些常见请求头参数及其常见值的注释说明:

  1. Accept: 指定客户端能够处理和希望接收的MIME类型。

    • text/html: 表示客户端可以处理和显示HTML文档。
    • application/json: 表示客户端期望接收JSON格式的数据。
    • application/xml: 表示客户端可以处理XML格式的数据。
    • */*: 表示客户端可以接受任何类型的数据。
      但是在大多数情况下,网站是起到浏览作用的,所以会直接返回到他的源码。
  2. Accept-Encoding: 客户端支持的内容编码方式。

    • gzip: 客户端支持gzip压缩算法。
    • deflate: 客户端支持deflate压缩算法。
    • br: 客户端支持Brotli压缩算法。
      useless
  3. Accept-Language: 客户端希望接收的语言版本。

    • en-US: 客户端希望接收美式英语的内容。
    • zh-CN: 客户端希望接收简体中文的内容。
    • fr: 客户端希望接收法语的内容。
      useless
  4. Cache-Control: 用于指示缓存行为。

    • no-cache: 不使用本地缓存,需要从服务器重新获取数据。
    • max-age=0: 缓存的内容立即过期,需要重新验证。
    • no-store: 不存储任何关于客户端请求或服务器响应的缓存信息。
      useless
  5. Connection: 控制网络连接的行为。

    • keep-alive: 保持连接,以便复用TCP连接发送和接收多个HTTP请求和响应。
    • close: 请求完成后关闭连接。
      useless
  6. Content-Type: 请求体的媒体类型(对于POST, PUT等带有请求体的请求)。

    • application/x-www-form-urlencoded: 发送键值对数据,通常用于HTML表单。
    • multipart/form-data: 发送复杂的表单数据,如文件上传。
    • application/json: 发送JSON格式的数据。
      useless
  7. Cookie: 客户端存储的Cookie信息,用于服务器识别用户。

    • session_id=12345; user_id=abc: 示例Cookie值,包含会话ID和用户ID。
  8. Host: 请求的目标主机名或IP地址。

    • www.example.com: 目标服务器的域名。
  9. Referer: 表示当前请求是从哪个页面发起的。

    • http://www.referrer.com/page: 发起请求的源页面URL。
  10. User-Agent: 标识发送请求的客户端信息,如浏览器版本和操作系统。

    • 浏览器标识字符串: 示例为Chrome浏览器的User-Agent字符串,包含浏览器名称、版本和操作系统信息。

在整个访问头中最重要的内容,在某些反爬网站会使用这一点来判断你是不是使用了爬虫程序进行爬取。

如何获取本地的User_Agent
在这里插入图片描述

当然即使不使用本地 User_Agent 也是可以的,下面给出两个参考例子

Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:129.0) Gecko/20100101 Firefox/129.0Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/127.0.0.0 Safari/537.36 Edg/127.0.0.0
  1. Authorization: 用于API访问或其他需要身份验证的请求的认证信息。
    • Bearer TOKEN: 使用Bearer令牌进行身份验证,TOKEN是服务器颁发的认证令牌。

解决方式 : 在每次询问的请求头中更新 User_Agent

验证码与人机验证

当网站检测到异常请求模式时,如频繁的访问或来自同一IP的大量请求,它可能会要求用户输入验证码或通过其他形式的人机验证来确认请求者的身份。这可以有效阻止自动化爬虫,因为它们通常无法处理这种验证过程。

其他

  • 频率限制
    • 网站可以设置请求频率的限制,以防止爬虫程序对网站进行过度的访问。如果来自同一IP地址或用户的请求超过了设定的阈值,网站可能会暂时或永久地禁止该IP或用户的访问。
  • 动态页面加载
    • 一些网站使用JavaScript等技术动态加载内容。这种技术对于仅支持静态页面抓取的爬虫程序来说是一个挑战,因为它们无法直接获取到动态加载的内容。
  • 使用robots.txt
    • 虽然robots.txt文件主要用于指导搜索引擎爬虫的行为,但它也可以作为一种简单的反爬虫机制。通过在该文件中指定不允许爬取的URL或路径,网站可以告知遵守该协议的爬虫程序不要访问这些区域。然而,需要注意的是,并非所有爬虫都会遵守robots.txt的规定。
  • 隐藏链接和元素
    • 有些网站会使用CSS或JavaScript来隐藏某些链接或页面元素,以防止爬虫程序轻易地获取到这些信息。这种方法可以增加爬虫程序的解析难度。
  • 分布式拒绝服务(DDoS)防御机制
    • 虽然这不是专门针对爬虫的程序,但一些高级的DDoS防御系统可以识别并阻挡异常流量模式,包括来自爬虫程序的流量。

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 一、Java入门知识与基本使用
  • 常见面试问题(Python)
  • Java核心API——Collection集合的工具类Collections
  • 解决Jasper Studio报表工具中预览正常显示,但部署到服务器上面无法正常显示的问题
  • linux neo4j 切换知识图谱
  • 粘包,Telnet,SSH,Wireshark
  • 基于Java和GeoTools的Shapefile矢量数据缩略图生成实践
  • STM32——GPS模块(GY-NEO-6M)
  • python使用ffmpeg将视频、音频合并合成(速度最快)
  • 最短路总结(dijkstra,floyd,bellman,spfa)
  • JavaWeb基础 -- Spring框架、IOC、AOP
  • Ubuntu 22.04中解决Could not load the Qt platform plugin “xcb“问题解决方法
  • 一条微博,让联想少卖16亿?
  • 软件测试用例的编写(六)
  • 嵌入式和单片机有什么区别?
  • Computed property XXX was assigned to but it has no setter
  • git 常用命令
  • HTTP请求重发
  • October CMS - 快速入门 9 Images And Galleries
  • python大佬养成计划----difflib模块
  • vue-router的history模式发布配置
  • -- 查询加强-- 使用如何where子句进行筛选,% _ like的使用
  • 对超线程几个不同角度的解释
  • 精彩代码 vue.js
  • 深入浅出Node.js
  • 3月27日云栖精选夜读 | 从 “城市大脑”实践,瞭望未来城市源起 ...
  • hi-nginx-1.3.4编译安装
  • ionic入门之数据绑定显示-1
  • python最赚钱的4个方向,你最心动的是哪个?
  • #stm32驱动外设模块总结w5500模块
  • (2022 CVPR) Unbiased Teacher v2
  • (pytorch进阶之路)扩散概率模型
  • (zt)最盛行的警世狂言(爆笑)
  • (大众金融)SQL server面试题(1)-总销售量最少的3个型号的车及其总销售量
  • (第8天)保姆级 PL/SQL Developer 安装与配置
  • (第二周)效能测试
  • (定时器/计数器)中断系统(详解与使用)
  • (十八)用JAVA编写MP3解码器——迷你播放器
  • (原)本想说脏话,奈何已放下
  • (转)Android学习笔记 --- android任务栈和启动模式
  • (转)Mysql的优化设置
  • ... 是什么 ?... 有什么用处?
  • .form文件_SSM框架文件上传篇
  • .Net 8.0 新的变化
  • .net core控制台应用程序初识
  • .net 生成二级域名
  • .net8.0与halcon编程环境构建
  • @PreAuthorize注解
  • [2008][note]腔内级联拉曼发射的,二极管泵浦多频调Q laser——
  • [2024最新教程]地表最强AGI:Claude 3注册账号/登录账号/访问方法,小白教程包教包会
  • [AIGC] HashMap的扩容与缩容:动态调整容量以提高性能
  • [android]-如何在向服务器发送request时附加已保存的cookie数据
  • [Android]使用Git将项目提交到GitHub
  • [C#]将opencvsharp的Mat对象转成onnxruntime的inputtensor的3种方法
  • [C#]扩展方法