首页 > 其他分享 >反爬虫方法

反爬虫方法

时间:2024-04-27 18:11:56浏览次数:22  
标签:封禁 用户 指纹 爬虫 可能 验证码 方法

image
1.拒绝请求
a.根据 IP 判断
优点:

即时效果:一旦IP地址被封禁,来自该地址的流量将立即停止,从而防止了爬虫在封禁发生后进一步访问网站。
简单易行:IP封禁通常很容易实施,大多数服务器和CDN服务都提供了相应的工具来帮助封锁一系列的IP地址。
降低负载:通过封禁恶意或不必要的爬虫访问,可以减少服务器的负载,节省带宽并改善响应时间。

缺点:

IP代理和更换:爬虫可以使用代理服务器或经常更换IP地址来绕过封禁,这使得根据IP封禁的效果可能很短暂。
误封正常用户:如果多个用户共享一个IP地址(例如在一个公司或通过NAT),封禁该IP可能会阻止无辜的用户访问网站。
动态IP分配问题:因为IP地址可能会动态分配,封禁了过去用于恶意爬虫行为的IP地址,有可能会阻断新的合法用户。
维护成本:封禁爬虫需要监测和更新封锁列表,这可能会导致额外的维护工作和成本。
不影响分布式爬虫:分布式网络爬虫使用一个广泛的IP地址池,单个IP的封禁对其影响较小。
b.根据设备指纹判断
介绍:
使用设备指纹来封禁爬虫意味着要收集并分析客户端设备的一组唯一属性,以区分人类用户和爬虫。这些属性可以是用户代理字符串、屏幕分辨率、操作系统和版本、浏览器插件、语言设置、时区、是否启用了JavaScript等。
实现方式基本如下:

数据收集:通过客户端脚本(如JavaScript)或服务器端技术收集访问者的设备信息。
指纹生成:将收集到的数据组合成一个哈希值或一个唯一标识符,即所谓的“设备指纹”。
分析对比:分析收集到的指纹数据,对比已知的爬虫指纹数据库或行为模式,确定哪些是爬虫。
封禁机制:一旦确定某个指纹属于爬虫,可以通过中间件或防火墙规则来阻止这些指纹的后续请求。
动态学习:不断更新爬虫数据库,使用机器学习等技术提升识别模型的准确性。

优点:

难以模拟:相较于IP地址,设备指纹包含多个维度的信息,更难被模拟或隐藏。
个性化检测:可以检测到更加复杂和个性化的爬虫特征。
更精细的访问控制:允许对不同类型的访问者应用不同的访问策略。
行为分析:结合行为分析,你可以识别出即便在使用正常设备指纹的情况下仍然表现出爬虫特征的行为。
提高安全性:除了防爬虫,设备指纹同样可以辨识并防御更广泛的恶意活动。
长期有效性:设备指纹具有一定的持久性,例如某个浏览器的指纹在短期内不太可能改变。

缺点:

隐私顾虑:收集设备指纹可能引起隐私方面的担忧,特别是在一些地区可能会违使用设备指纹来封禁爬虫涉及收集和分析访问网站的设备的特定特征(如浏览器类型、字体列表、插件、屏幕分辨率等)。这些信息可以被编译成一个唯一标识符,即“设备指纹”,用于区分和识别可能的爬虫。

技术复杂性:收集正确的信息并构建设备指纹需要复杂的前端代码和后台分析。

误判风险:可能无意中封禁了合法用户,因为有些用户可能和爬虫有相似的技术特征。

维护成本:随着设备和浏览器技术的改进,需要定期更新你的指纹技术和算法。

绕过策略:虽然复杂,但一些高级爬虫工具可能通过模拟或改变其设备指纹来规避检测。

性能影响:客户端收集信息的程序可能会影响网站加载速度和用户体验。
2. 数据投毒
指的是查看源代码,看到的数据和真实数据不一致
实现手段:

混淆数据 网站可以提供一些伪造或扭曲的数据来迷惑数据爬虫,比如更改价格、产品名称或描述等信息。
动态内容生成 网站可以针对不同的访问者显示不同的内容,这样爬虫收集的数据就不具备一致性和准确性。
隐藏真实数据 将真实数据和虚假数据混合在一起,以致爬虫难以区分哪些是有效的。
添加诱饵链接 在网页中添加看似正常但实际上是用于跟踪爬虫的假链接(“蜜罐”技术),访问这些链接的爬虫会被标记为可疑并加以限制。

数据投毒的优点:

保护内容 阻止敏感或具有价值的信息被滥用。
混淆对手 如果竞争对手依赖于爬取的数据,错误的信息可能导致他们做出错误的决策。
迷惑算法 在竞争对手使用爬取数据喂养其机器学习模型的情况下,投毒数据可以干扰模型的准确度。

数据投毒的缺点:

策略制定困难,可能影响用户体验 如果普通用户接触到了错误的数据,可能会对网站信誉造成损害。
维护难度 需要持续更新伪造策略,以应对更智能的爬虫技术。
合法性问题 在某些情况下,提供虚假信息可能会违反法律法规,尤其是在商业环境中。
3.行为验证码
拖动滑块,点击汉字等
优点:

安全性更高:目前市场有专业做行为验证码的厂家,可以有效识别和阻止自动化工具,减少恶意爬虫访问网站,抓取敏感数据的风险。
易于实施:许多行为验证码服务提供简单的API接口,便于网站运营者集成和部署。
适应性强:有些行为验证码服务可以根据网站流量和行为模式进行自我调整,从而优化识别算法和验证难度。
额外资源:某些行为验证码服务(例如Google的reCAPTCHA)通过行为分析帮助改善其其他服务,例如用于ML训练的数据标注。

缺点:

用户打扰:尽管现代行为验证码令人少有干扰,但某些情况下,用户可能还是会被要求进行额外验证(如选择图片中的交通信号),这可能导致用户体验的下降。
隐私担忧:行为验证码可能需要收集用户的行为数据进行分析,这引起了一些隐私保护方面的担忧。
技术绕过:可以通过逆向技术,破解验证码的技术,并进行模拟,从而绕过行为验证码。
维护成本:如果使用的是第三方服务,可能需要支付使用费用,特别是在高流量的网站上。
依赖第三方服务:依赖于特定的服务提供商可能使网站受限于该服务的可用性和性能。如果服务发生中断,可能影响用户访问。
可访问性问题:对于有视觉或其他障碍的用户而言,验证过程可能需要额外的辅助技术支持才能完成
4.手机验证码&账号
优点:

增强安全性:手机验证码为网站提供了额外的安全层,确保只有真正的用户可以访问敏感数据。
防止自动化攻击:自动化工具很难绕过需要发送至手机的一次性验证码的登陆系统,这显著减少了爬虫和机器人的入侵风险。
用户验证:通过手机验证码可以验证用户身份,增加了账户被非法访问的难度。
满足合规性需求:某些法规和标准可能要求多因素身份验证,使用手机验证码可以帮助满足这些要求。

缺点:

用户体验:强制用户使用手机验证码登录可能会使登陆过程变得繁琐,影响用户体验。
排他性:对没有手机或无法接收验证码的用户来说可能不方便,或有可能完全无法访问网站。
可能的技术问题:验证码的发送和接收可能由于技术故障或网络问题而被延迟,导致用户无法及时登陆。
成本问题:发送手机短信验证码可能会引入额外的运营成本,特别是在高流量网站上。
隐私考虑:需要用户提供电话号码可能引起隐私方面的担忧。
短信拦截或仿冒:尽管比传统的静态密码登陆要安全得多,但短信验证码并非无懈可击,高级攻击者可能利用SIM卡交换等手段拦截验证码。

标签:封禁,用户,指纹,爬虫,可能,验证码,方法
From: https://www.cnblogs.com/gongbo/p/18162321

相关文章

  • Python (GUI编程)模块 使用方法
    GraphicalUserInterface,简称GUI,中文名为图形用户界面,又称图形用户接口,是一种通过图形元素(如按钮、文本框、图像等)来与计算机程序进行交互的方式。与传统的命令行界面相比,GUI更加直观和易于使用,因为用户可以直接通过点击、拖拽等方式来完成任务,而无需记忆和输入复杂的命令。GUI......
  • 虚方法
    若一个实例方法声明前带有virtual关键字,那么这个方法就是虚方法。虚方法与非虚方法的最大不同是,虚方法的实现可以由派生类所取代,这种取代是通过方法的重写实现的(以后再讲)虚方法的特点:虚方法前不允许有static,abstract,或override修饰符虚方法不能是私有的,因此不能使用private修......
  • MyBatis-Plus QueryWrapper常用方法
    1queryWrapper.lt();//小于2queryWrapper.le();//小于等于3queryWrapper.gt();//大于4queryWrapper.ge();//大于等于5queryWrapper.eq();......
  • vue,js直接导出excel,xlsx的方法,XLSX_STYLE 行高设置失效的问题解决
    1、先安装依赖:xlsx、xlsx-style、file-saver三个包npminstallxlsxxlsx-stylefile-saver2、引入:<script>import*asXLSXfrom'xlsx/xlsx.mjs'importXLSX_STYLEfrom'xlsx-style';import{saveAs}from'file-saver';exportdefau......
  • 为什么动态代理只能覆盖 public 方法
    动态代理只能覆盖public方法的原因主要是因为Java的访问权限控制。在Java中,动态代理是通过生成一个继承自Proxy类并实现了指定接口的代理类来实现的。这个代理类必须能够访问被代理对象的方法,但是如果被代理对象的方法不是public,则代理类无法访问这些方法,因此也就无法覆......
  • 数美验证码-空间推测-爬虫
    前言因为要训练识别验证码的模型,需要爬取源数据。如果需要其他的类型,自行修改爬取结果这边把图片跟文本命名一样的。代码importtimeimportjsonimportrequestsdefsave_image_from_url(url,file_path):response=requests.get(url)withopen(file_pat......
  • 百度贴吧帖子爬虫
    想把以前喜欢的帖子爬下来,代码存档于2024.4.26,不知道能用多久。importrequestsfromlxmlimportetree#移除链接、图片的标签defremoveTag(text):tree=etree.fromstring(text)forbadintree.xpath("//a"):bad.getparent().remove(bad)forba......
  • 爬虫
    requests官方中文文档:https://2.python-requests.org/zh_CN/latest/requests在爬虫中一般用于来处理网络请求#导入requests模块importrequests#尝试向baidu发起请求,获得来命名为r的response对象r=requests.get('https://www.baidu.com/')#返回请求状态码,200......
  • dotnet C# 简单的追加文件夹到 ZipArchive 压缩文件的方法
    本文将告诉大家一个在ZipArchive里追加文件夹,以及添加过滤文件处理的压缩文件辅助方法实现的方法的代码如下///<summary>///追加文件夹到压缩文件里面///</summary>///<paramname="archive"></param>///<paramname="sourceDirectoryName"></p......
  • 改善员工绩效管理的 8 种最佳方法
    企业如何改进绩效管理体系,才能获得最好的结果?请仔细阅读,找出答案…人力资源部门对组织的成功起着至关重要的作用,组织的员工也是如此。更好的组织管理会带来更高的利润。人力资源部门的工作很大一部分就是规范绩效管理体系,营造员工能做出最好的工作、发挥最大能力的工作氛围。在......