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

爬虫与反爬虫的攻防对抗

一、爬虫的简介

1 概念

爬虫最早源于搜索引擎,它是一种按照一定的规则,自动从互联网上抓取信息的程序,又被称为爬虫,网络机器人等。按爬虫功能可以分为网络爬虫和接口爬虫,按授权情况可以分为合法爬虫和恶意爬虫。恶意爬虫主要以获取对方本不愿意被大量获取的网页数据为主要目的,可能给相关服务器性能造成极大损耗。如今数据资源越来越珍贵,利用爬虫技术爬取有价值的数据,成为很多公司弥补自身先天数据短板、提高自身估值的不二选择。

网页爬虫:根据网页上的超链接进行遍历爬取

接口爬虫:通过构造特定API接口请求数据获得大量网页数据信息

2 发展现状

爬虫流量目标行业分布:
image.png

其中,出行类中的12306票务信息被各类抢票软件疯狂地爬取,高峰时刻每天的访问量达到千亿次。

在社交类中,通过网络爬虫技术可以指挥一帮网络机器人关注某人的微博、公众号等,进行点赞、关注或者留言,制造大量的僵尸粉。

在电商类中,比如在“比价平台”“聚合电商”和“返利平台”等平台上,当用户搜索一个商品时,这类聚合平台会自动把各个电商的商品都放在你面前供你选择,同样利用的是爬虫技术。

可以从下面的数据中看到,爬虫的“重灾区”在前面说到的12306、微博、淘宝等大型平台,就连最高人民法院旗下的“中国裁判文书网”也难逃爬虫侵扰,以至于用户怨声载道。

image.png

3 攻防技术分析

事实上,最早的爬虫起源于搜索引擎。搜索引擎是善意的爬虫,可以检索你的一切信息,并提供给其他用户访问。为此他们还专门定义了robots.txt文件,作为君子协定,这是一个双赢的局面。

然而事情很快被一些人破坏了。爬虫很快就变的不再“君子”了。

爬虫与发爬虫,一方为了拿到数据,另一方为了防止爬虫拿到数据,就催生了攻防技术的不断发展。
目前业内爬虫技术方面,总体分为三大类,最早的就是通过修改headers攻击静态网页,包括多线程,代理ip,伪造cookie和购买多账号等常见手段,对应的反爬虫技术出现了限制IP和ua,限制登录,限制频率等。

后来防守方出现了验证码,很长一段时间爬虫处于劣势,随着机器视觉的发展和打码平台的出现,这种防控也很容易被绕过,黑产进入了模拟用户行为的阶段。

再后来,防守方又出现了动态加载技术,通过简单爬虫是看不到被保护信息的,爬虫就利用了selenium和phantomjs工具,这两个本来是网页自动化测试工具,被用来爬虫,一般爬虫到了这个段位,反爬虫就很难再有有效措施识别爬虫。

技术层面,越原始的,成本越低,性能也非常好,目前是通用的网络爬虫;而高段位的,一般成本高,性能差,一般称为聚焦网络爬虫。

image.png

从上面图上可以看到,爬虫与反爬虫,是一场无休止之战。因此要想防住爬虫,就要从根源入手。

二、反爬虫的难点

目前阶段,反爬虫的难点在于技术和业务两个方面。

技术上,一个是现有的常见反爬手段都已被成熟的技术工具攻破,另一个就是黑产已经形成了完整的产业链,分工明确,而且从业人员数量庞大。

image.png

业务上,业务安全本质上不是非黑即白的问题,而是要找到划分的边界,如果误杀率过高,可能对运营指标产生影响。

image.png

三、解决方案

一般来说,通过验证码来反爬,其核心原理是爬虫通过网页抓取数据,当某一用户访问次数过多后,系统就会怀疑你是否是真实用户,也就是说会让请求跳转到验证码页面,只有输入正确的验证码才能继续访问网站,而验证码诞生之初的目的就是为了区分人和机器的区别,自然也就能拦截爬虫。

但随着AI 技术的深入,这样的反爬技术也很容易被破解,这个时候就需要我们比对方更智能、更聪明。

因此,要想防住爬虫,就要从根源入手。

1 方案架构

首先我们要知道爬虫平台间的数据如何传输,才能在此基础建立安全可信的通信链路,其次,在保证安全可信的通信链路基础上,需要考虑是否支持多种风险的快速判断,是否可以进行回溯及服务监控;最后,在与爬虫的对抗层面,需要考虑是否能够进行快速的对抗调整,并将相应的人机验证工具作为支撑。

也因此,我们就可以在持续不断的攻防对抗间思考出一套反爬体系建设方案

在客户端,我们对app、web源码进行防护,防止漏洞利用、逆向破解、接口暴露等。同时,在客户端集成设备指纹,对每一台设备形成全球唯一的设备编码,识别黑产作弊机器。并在此基础上集成滑动验证码,能够直接有效阻挡机器的访问行为。

通信链路上集成安全SDK,保护传输数据安全,识别伪造数据、非法请求。

实时风险决策平台,其实可以认为是一种防护规则配置平台,通过针对不同行业业务及事件的需求,编制不同的安全规则及策略。

整体工作流程如图所示,业务请求经过业务系统转发到实时决策引擎,决策引擎将判断结果返回给业务系统,业务系统自行决定处置措施。

image.png

多环节防控,降低误杀率的同时,保证防控效果。

2 方案优势

image.png

  1. 就是抛开传统只限于代码层面的对抗,针对装备手段,从设备层面入手,对黑产降维打击
  2. 实施了全链路防护,避免单一节点被攻破
  3. 各个环节数据共享,能够进行实时态势感知,动态防御
  4. 最前端的验证码拦截明显的机器行为,实时决策拦截灰度爬虫行为,最终实现黑灰产的高精度识别,在提高风控效果的同时,保证较低误杀率。

四、反爬需要所有人共同努力

爬虫贡献了互联网 50% 的流量,它对于互联网的繁荣功不可没。但该技术同时也因“用途”而充满争议。爬虫是一项见不得“阳光”的技术,它广泛运用,却少有人愿意承认在使用它。因为它常常被用作非法收集信息的工具,站上数据隐私、数据安全的对立面。

不难看出,爬虫技术本无罪,有罪的是那些拿爬虫来作恶的人。一起努力,抵抗“恶意爬虫”!

如果需要反爬虫解决方案,戳这里>>>反爬虫解决方案

相关文章:

爬虫与反爬虫的攻防对抗

一、爬虫的简介 1 概念 爬虫最早源于搜索引擎,它是一种按照一定的规则,自动从互联网上抓取信息的程序,又被称为爬虫,网络机器人等。按爬虫功能可以分为网络爬虫和接口爬虫,按授权情况可以分为合法爬虫和恶意爬虫。恶…...

【机器学习】特征工程 - 字典特征提取

「作者主页」:士别三日wyx 「作者简介」:CSDN top100、阿里云博客专家、华为云享专家、网络安全领域优质创作者 「推荐专栏」:对网络安全感兴趣的小伙伴可以关注专栏《网络安全入门到精通》 字典特征提取 一、特征提取API一、提取数字特征二、特征名字三、返回原始数据特征工…...

用户交互----进入游戏

一、增加交互----点击和拖动 1、点击鼠标画点的程序 设置 import pygame # Setup pygame.init() screen pygame.display.set_mode([800,600]) pygame.display.set_caption("单击画圆点") keep_going True RED (255,0,0) …...

排序算法 - 快速排序(4种方法实现)

快速排序 快速排序是啥?三数取中:1.挖坑法(推荐掌握)2.前后指针法(推荐掌握)3.左右指针法(霍尔版本)(容易出错)4.非递归实现 本篇文章的源代码在这&#xff0…...

C++入门知识点

目录 命名空间 命名空间定义 命名空间使用 法一:加命名空间名称及作用域限定符:: 法二:使用using部分展开(授权)某个命名空间中的成员 法三:使用using对整个命名空间全部展开(授权…...

开眼界了,AI绘画商业化最强玩家是“淘宝商家”

图片来源:由无界AI生成 7月,2023世界人工智能大会在上海召开,顶尖的投资人、创业者都去了。 创业者吐槽:投我啊,我很强。 投资人反问:你的商业模式是什么?护城河是什么? 创业者投资人…...

机器学习与深度学习——自定义函数进行线性回归模型

机器学习与深度学习——自定义函数进行线性回归模型 目的与要求 1、通过自定义函数进行线性回归模型对boston数据集前两个维度的数据进行模型训练并画出SSE和Epoch曲线图,画出真实值和预测值的散点图,最后进行二维和三维度可视化展示数据区域。 2、通过…...

大屏项目也不难

项目环境搭建 使用create-vue初始化项目 npm init vuelatest准备utils模块 业务背景:大屏项目属于后台项目的一个子项目,用户的token是共享的 后台项目 - token - cookie 大屏项目要以同样的方式把token获取到,然后拼接到axios的请求头中…...

c#webclient请求中经常出现的几种异常

WebClient是.NET Framework提供的用于HTTP请求的类,如果在使用WebClient时遇到异常,我们可以根据具体的异常类型进行处理。 以下是一些常见的WebClient异常及其处理方法: System.Net.WebException WebException通常是由于请求超时、网络连…...

设计模式-原型模式

目录 一、传统方式 二、原型模式 三、浅拷贝和深拷贝 克隆羊问题: 现在有一只羊tom,姓名为: tom,年龄为: 1,颜色为: 白色,请编写程序创建和tom羊属性完全相同的10只羊。 一、传统方式 public class Client {public static vo…...

sentinel介绍-分布式微服务流量控制

官网地址 https://sentinelguard.io/ 介绍 随着微服务的流行,服务和服务之间的稳定性变得越来越重要。Sentinel 是面向分布式、多语言异构化服务架构的流量治理组件,主要以流量为切入点,从流量路由、流量控制、流量整形、熔断降级、系统自…...

基于Redisson的Redis结合布隆过滤器使用

一、场景 缓存穿透问题 一般情况下,先查询Redis缓存,如果Redis中没有,再查询MySQL。当某一时刻访问redis的大量key都在redis中不存在时,所有查询都要访问数据库,造成数据库压力顿时上升,这就是缓存穿透。…...

BrowserRouter刷新404解决方案

1、本地开发环境 在js脚本命令里加上 --history-api-fallback "scripts": {"serve": "webpack serve --config webpack.dev.js --history-api-fallback" }2、生产环境,可以修改 nglnx 配置: server {listen XXXX; //端口号…...

解决appium-doctor报opencv4nodejs cannot be found

一、下载cmake 在CMake官网下载:cmake-3.6.1-win64-x64.msi 二、安装cmake cmake安装过程 在安装时要选择勾选为所有用户添加CMake环境变量 三、检查cmake安装 重新管理员打开dos系统cmd命令提示符,输入cmake -version cmake -version四、安装opencv4no…...

安卓通过adb pull和adb push 手机与电脑之间传输文件

1.可以参考这篇文章 https://www.cnblogs.com/hhddcpp/p/4247923.html2.根据上面的文章,我做了如下修改 //设置/system为可读写: adb remount //复制手机中的文件到电脑中。需要在电脑中新建一个文件夹,我新建的文件夹为ce文件夹 adb pull …...

java常用的lambda表达式总结

一、概述 lambda表达式是JDK8中的一个新特性,对某些匿名内部类进行简化,是函数式编程; 二、基本格式 (参数列表)->{方法体代码} 三、Stream流 是jdk8中的新特性,将数据以流的形式进行操作 三、常用方法解析 3.1、准备工作 …...

分布式应用之zookeeper集群+消息队列Kafka

一、zookeeper集群的相关知识 1.zookeeper的概念 ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,是Google的Chubby一个开源的实现,是Hadoop和Hbase的重要组件。它是一个为分布式应用提供一致性服务的软件,提供的功能…...

GStreamer学习笔记(四)

Time management 仅当管道处于PLAYING状态时,可以刷新屏幕。如果不在PLAYING状态,什么都不做,因为大多数查询都会失败。 函数与知识点 GstClockTime 说明:所需的超时时间必须以GstClockTime的形式指定。即以纳秒(ns…...

DBeaver连接华为高斯数据库 DBeaver连接Gaussdb数据库 DBeaver connect Gaussdb

DBeaver连接华为高斯数据库 DBeaver连接Gaussdb数据库 DBeaver connect Gaussdb 一、概述 华为GaussDB出来已经有一段时间,最近工作中刚到Gauss数据库。作为coder,那么如何通过可视化工具来操作Gauss呢? 本文将记录使用免费、开源的DBeaver来…...

.net core 2.1 简单部署IIS运行

netcore的项目不像netFramework那么方便部署到iis还是要费点功夫的 比如我想把这个netcore2.1的项目部署到iis并运行: 按照步骤走: 一、确认自己的netcore环境 1、需要安装下面3个环境包(如果电脑已安装请忽略) 检查是否安装cmd命令:cmd&…...

高等数学(下)题型笔记(八)空间解析几何与向量代数

目录 0 前言 1 向量的点乘 1.1 基本公式 1.2 例题 2 向量的叉乘 2.1 基础知识 2.2 例题 3 空间平面方程 3.1 基础知识 3.2 例题 4 空间直线方程 4.1 基础知识 4.2 例题 5 旋转曲面及其方程 5.1 基础知识 5.2 例题 6 空间曲面的法线与切平面 6.1 基础知识 6.2…...

OpenLayers 分屏对比(地图联动)

注:当前使用的是 ol 5.3.0 版本,天地图使用的key请到天地图官网申请,并替换为自己的key 地图分屏对比在WebGIS开发中是很常见的功能,和卷帘图层不一样的是,分屏对比是在各个地图中添加相同或者不同的图层进行对比查看。…...

Unity | AmplifyShaderEditor插件基础(第七集:平面波动shader)

目录 一、👋🏻前言 二、😈sinx波动的基本原理 三、😈波动起来 1.sinx节点介绍 2.vertexPosition 3.集成Vector3 a.节点Append b.连起来 4.波动起来 a.波动的原理 b.时间节点 c.sinx的处理 四、🌊波动优化…...

【Linux】Linux 系统默认的目录及作用说明

博主介绍:✌全网粉丝23W,CSDN博客专家、Java领域优质创作者,掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域✌ 技术范围:SpringBoot、SpringCloud、Vue、SSM、HTML、Nodejs、Python、MySQL、PostgreSQL、大数据、物…...

STM32HAL库USART源代码解析及应用

STM32HAL库USART源代码解析 前言STM32CubeIDE配置串口USART和UART的选择使用模式参数设置GPIO配置DMA配置中断配置硬件流控制使能生成代码解析和使用方法串口初始化__UART_HandleTypeDef结构体浅析HAL库代码实际使用方法使用轮询方式发送使用轮询方式接收使用中断方式发送使用中…...

并发编程 - go版

1.并发编程基础概念 进程和线程 A. 进程是程序在操作系统中的一次执行过程,系统进行资源分配和调度的一个独立单位。B. 线程是进程的一个执行实体,是CPU调度和分派的基本单位,它是比进程更小的能独立运行的基本单位。C.一个进程可以创建和撤销多个线程;同一个进程中…...

渗透实战PortSwigger靶场:lab13存储型DOM XSS详解

进来是需要留言的&#xff0c;先用做简单的 html 标签测试 发现面的</h1>不见了 数据包中找到了一个loadCommentsWithVulnerableEscapeHtml.js 他是把用户输入的<>进行 html 编码&#xff0c;输入的<>当成字符串处理回显到页面中&#xff0c;看来只是把用户输…...

智能职业发展系统:AI驱动的职业规划平台技术解析

智能职业发展系统&#xff1a;AI驱动的职业规划平台技术解析 引言&#xff1a;数字时代的职业革命 在当今瞬息万变的就业市场中&#xff0c;传统的职业规划方法已无法满足个人和企业的需求。据统计&#xff0c;全球每年有超过2亿人面临职业转型困境&#xff0c;而企业也因此遭…...

goreplay

1.github地址 https://github.com/buger/goreplay 2.简单介绍 GoReplay 是一个开源的网络监控工具&#xff0c;可以记录用户的实时流量并将其用于镜像、负载测试、监控和详细分析。 3.出现背景 随着应用程序的增长&#xff0c;测试它所需的工作量也会呈指数级增长。GoRepl…...

6.计算机网络核心知识点精要手册

计算机网络核心知识点精要手册 1.协议基础篇 网络协议三要素 语法&#xff1a;数据与控制信息的结构或格式&#xff0c;如同语言中的语法规则语义&#xff1a;控制信息的具体含义和响应方式&#xff0c;规定通信双方"说什么"同步&#xff1a;事件执行的顺序与时序…...