企业如何有效的防爬虫?

news2024/10/2 1:41:07

防爬虫,简单来说,就是在尽量减少对正常用户的干扰的情况下尽可能的加大爬虫的成本。

而反防爬虫,或者说制造隐蔽性强的爬虫,就是尽量模拟正常用户的行为。

这两者是动态博弈的。大公司基本都有防爬的项目,以保护数据安全。

你去试试爬几个大网站就知道了。
在这里插入图片描述

比如,github用的是ratelimit,就搜索接口而言,对非登录用户限制非常严格,一小时只允许几十次搜索。而对登录账号则很宽松。这样就把行为统计规约到了账号上,毕竟换账号成本比ip高。

而谷歌则更复杂,比如它会在网页中执行一段js,js中做一些校检,然后服务器端将请求数据对比,这样那些不支持动态解析的爬虫就都死了。

另外谷歌也会维护一份爬虫ip列表,这样即使你使用爬虫ip也很容易死,当然很多收费爬虫ip使用的是一些黑科技,确实可以绕过这份列表。

阿里内部也有一套专门的防爬系统,用的一个比较复杂的建模策略,能够直接无视爬虫ip的更换,从行为模式上检测出爬虫。比如一些特定数据受到非正常量级的请求,那么就可以判定有人在做坏事了。

当然防爬有误报是正常的,所以一般反爬系统都要做一个容限,只有超过一定阀值了才会bang掉你。即使bang掉了,一般也是让你填一个验证码。无论你是做验证码识别,还是花钱人肉打码,他的目的其实都达到了:增加爬取者的成本。

所以简单来说,一个成功的爬虫,需要这几个特点:

模拟浏览器提交

简单的,使用webkit来提交数据,这个基本可以过大多数浏览源检测的反爬系统了。

但是有的反爬系统检测浏览源的时候,会根据大众浏览器的一些特性,比如IE,Firefox,Chrome等的私有js函数来判定浏览器,这样webkit,以及一些封装好的无界面浏览器也被当成爬虫了。当然,你也可以利用调用chromuim来爬取数据,但是这个资源开销就更大了。

控制单ip/账号频率

挂私有爬虫ip来爬的就不说了,大家都会用,但是对于一般人来说,几万ip差不多是极限了,所以一个ip还是得多次请求,账号同理。而控制了爬取速度,则意味着爬完一圈需要更多时间。时间都是成本。

控制爬取策略

如果简单的只对目标数据进行爬取,那么如果反爬系统对访问概况和用户行为进行分析,其实很简单就能判定爬虫的那堆ip:你除了这堆数据什么都没访问,一看就不是正常用户。

当然策略这个东西,就需要更多的博弈了。爬虫要增加迷惑度,需要去访问一些无关的东西,最后是研究正常用户的访问流程,然后模拟一遍。再者,控制速度。毕竟反爬系统的统计区间是肯定有限制的,不可能拿一个月的数据都分析一遍找出爬虫。

以上,其实懂了爬虫的策略,反爬策略也很明朗了。

爬虫成本

反爬系统的存在,意义就在于增加这个成本。当然也需要衡量自身的成本,毕竟不能本末倒置,反爬成本太高就没价值了。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/54544.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

一图了解es6常用数据迭代函数map,filter,fill,reduce

一、一图胜千言 前端开发中,js数组处理是最常用的,除了for循环外,随着es6的普及,像reduce()、filter()、map()、some()、every()以及…展开属性都是最常用到的。 今天偶然从网上看到这张图,真是眼前一亮,真…

盘点JAVA中延时任务的几种实现方式

场景描述 ①需要实现一个定时发布系统通告的功能,如何实现? ②支付超时,订单自动取消,如何实现? 实现方式 一、挂起线程 推荐指数:★★☆ 优点: JDK原生(JUC包下)支持,无需引入新…

RabbitMQ之集群管理

1、在node2、node3、node4三台Linux虚拟机中安装RabbitMQ。 2、从node2拷贝.erlang.cookie到node3、node4的相应目录 如果没有该文件,手动创建/var/lib/rabbitmq/.erlang.cookie ,生成Cookie字符串,或者启动一次RabbitMQ自动生成该文件。生产…

五年Java编程生涯,大专学历最终逆袭阿里,面试+学习+经历分享

五年时间,对于程序员来说,真的非常非常宝贵,掉的头发都够塞满键盘的缝隙了。就说新一代偶像 TFboys 吧,你应该知道这个组合吧,黄金合作期也就三五年的时间,现在基本上就处于各自单飞(solo&#…

深度学习笔记之受限玻尔兹曼机(一)玻尔兹曼分布介绍

机器学习笔记之受限玻尔兹曼机——玻尔兹曼分布介绍引言回顾:Hammersley-Clifford定理玻尔兹曼分布的物理意义引言 从本节开始,将介绍受限玻尔兹曼机。本节将从马尔可夫随机场开始,介绍玻尔兹曼机分布。 回顾:Hammersley-Cliffo…

NCP81239MNTXG 开关降压/升压控制器,USB 功率传递和 Type-C 应用

NCP81239MNTXG USB 功率传递 (PD) 控制器是一款同步降压/升压控制器,适用于为笔记本电脑、平板电脑、台式系统以及很多使用 USB PD 标准和 C−Type 线缆的其他消费设备提供电池电压或适配器电压到所需电源轨的转换。结合使用 USB PD 或 C−Type 接口控制器时完全符合…

【笔记】Java - VM options、Program arguments、Environment variables、eclipse variables

java使用ide开发的时候,运行程序(application)前都要设置启动配置: VM options、Program arguments、Environment variables 很多时候我们是默认配置启动的,所以没太注意。但是如果我们有特殊需求、项目上线时&#xf…

VSCode 安装教程(超详细)

文章目录VSCode 安装使用教程(图文版)那么,什么是 IDE 呢 ?目前,前端开发主流的 IDE 有以下 5 个下边我们开始玩转 VSCodeVSCode 下载、安装Window 版 VScode 安装流程1、下载 Vscode 安装文件2、下载完成单击运行&…

Postman的使用——设置全局参数,参数的传递,从登录接口的响应body中提取数据更新全局参数,从响应cookie中提取数据更新全局变量

Postman的使用——设置全局参数,引用全局参数,参数的传递,从登录接口的响应body中提取数据更新全局参数,从响应cookie中提取数据更新全局变量一、设置全局参数二、引用全局参数三、从登录接口的响应body中提取数据更新全局参数四、…

cmd命令以及一些操作

文章目录前言set和echoif语句判断有无指定文件夹相对路径创建文件夹创建bat脚本换行符前言 因为下载下来的代码用bash脚本写的,cmd不能完美运行,因此想着对照着转成cmd,这样就方便了。 set和echo set demohello world!!! echo %demo%这就是…

[附源码]计算机毕业设计springboot学生宿舍维修管理系统

项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM mybatis Maven Vue 等等组成,B/S模式 M…

动态规划——数字三角形模型

数字三角形模型: 给定一个如下图所示的数字三角形,从顶部出发,在每一结点可以选择移动至其左下方的结点或移动至其右下方的结点,一直走到底层,要求找出一条路径,使路径上的数字的和最大。 输入格式&#…

力扣 895. 最大频率栈

题目 设计一个类似堆栈的数据结构,将元素推入堆栈,并从堆栈中弹出出现频率最高的元素。 实现 FreqStack 类: FreqStack() 构造一个空的堆栈。 void push(int val) 将一个整数 val 压入栈顶。 int pop() 删除并返回堆栈中出现频率最高的元素。 如果出现…

傻妞旧版本(合集)

目录一、前言二、下载三、新版傻妞订阅合集一、前言 傻妞旧版本(合集),包含amd和arm版本 二、下载 🅰️amd✅还未大改,init web未出 🔴[sillyGirl_amd_2022-08-05] ➡️百度网盘 ➡️天翼云盘(访问码:ha8s&#xff09…

如何开通小程序?开通小程序要钱吗?

关于如何开通小程序?开通小程序要钱吗?这两个问题,今天给大家做一个简单的解答。 一、如何开通小程序? “开通小程序”这个说法其实并不准确,能开通的是小程序账号,开通完小程序账号后还需要去制作小程序&…

计算机视觉之目标检测训练数据集(皮卡丘)《2》

在做目标检测,训练数据集的时候,可以先看前段时间的一篇基础文章:计算机视觉之目标检测(object detection)《1》https://blog.csdn.net/weixin_41896770/article/details/128062645先熟悉一些基本知识,如:锚框&#xf…

『.NET』.Net Core在Linux中生成验证码的实现封装

📣读完这篇文章里你能收获到 .Net跨平台在Linux中及Windows中都可生成验证码两套已验证过的实现方案代码封装,即Copy即用快速在Centos 7.x中安装Linux字体 文章目录一、安装Linux字体1. 查看字体库2. 运行安装字体库3. 安装ttmkfdir4. 查看字体库是否已…

搜索技术——模拟退火算法

如果有兴趣了解更多相关内容,欢迎来我的个人网站看看:瞳孔空间 一:算法及模型 物理退火过程 什么是退火:是指将固体加热到足够高的温度,使分子呈随机排列状态,然后逐步降温使之冷却,最后分子…

SPECjvm 2008 小记

背景 specjvm2008是免费的,直接官网下载就可以开跑了。但俗话说的好,便宜无好货,没啥厂家买账,看官网列出的成绩公示结果,根本没几家上传成绩。 另外,SPECjvm2008本身是测试JRE的执行成绩,也就…

Android databinding之RecycleView使用与介绍(二)

一 、介绍 通过上一篇databinding接入,我们已大概了解到databinding接入的流程和数据的简单绑定。 如果你刚看这边,并不了解databinding的使用,可以查看:Android databinding的接入使用与详解(一) Activity和fragment的数据绑定…