当前位置: 首页 > 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&…...

龙虎榜——20250610

上证指数放量收阴线,个股多数下跌,盘中受消息影响大幅波动。 深证指数放量收阴线形成顶分型,指数短线有调整的需求,大概需要一两天。 2025年6月10日龙虎榜行业方向分析 1. 金融科技 代表标的:御银股份、雄帝科技 驱动…...

Spark 之 入门讲解详细版(1)

1、简介 1.1 Spark简介 Spark是加州大学伯克利分校AMP实验室(Algorithms, Machines, and People Lab)开发通用内存并行计算框架。Spark在2013年6月进入Apache成为孵化项目,8个月后成为Apache顶级项目,速度之快足见过人之处&…...

循环冗余码校验CRC码 算法步骤+详细实例计算

通信过程:(白话解释) 我们将原始待发送的消息称为 M M M,依据发送接收消息双方约定的生成多项式 G ( x ) G(x) G(x)(意思就是 G ( x ) G(x) G(x) 是已知的)&#xff0…...

基于服务器使用 apt 安装、配置 Nginx

🧾 一、查看可安装的 Nginx 版本 首先,你可以运行以下命令查看可用版本: apt-cache madison nginx-core输出示例: nginx-core | 1.18.0-6ubuntu14.6 | http://archive.ubuntu.com/ubuntu focal-updates/main amd64 Packages ng…...

CentOS下的分布式内存计算Spark环境部署

一、Spark 核心架构与应用场景 1.1 分布式计算引擎的核心优势 Spark 是基于内存的分布式计算框架,相比 MapReduce 具有以下核心优势: 内存计算:数据可常驻内存,迭代计算性能提升 10-100 倍(文档段落:3-79…...

数据链路层的主要功能是什么

数据链路层(OSI模型第2层)的核心功能是在相邻网络节点(如交换机、主机)间提供可靠的数据帧传输服务,主要职责包括: 🔑 核心功能详解: 帧封装与解封装 封装: 将网络层下发…...

MySQL中【正则表达式】用法

MySQL 中正则表达式通过 REGEXP 或 RLIKE 操作符实现(两者等价),用于在 WHERE 子句中进行复杂的字符串模式匹配。以下是核心用法和示例: 一、基础语法 SELECT column_name FROM table_name WHERE column_name REGEXP pattern; …...

【Oracle】分区表

个人主页:Guiat 归属专栏:Oracle 文章目录 1. 分区表基础概述1.1 分区表的概念与优势1.2 分区类型概览1.3 分区表的工作原理 2. 范围分区 (RANGE Partitioning)2.1 基础范围分区2.1.1 按日期范围分区2.1.2 按数值范围分区 2.2 间隔分区 (INTERVAL Partit…...

浪潮交换机配置track检测实现高速公路收费网络主备切换NQA

浪潮交换机track配置 项目背景高速网络拓扑网络情况分析通信线路收费网络路由 收费汇聚交换机相应配置收费汇聚track配置 项目背景 在实施省内一条高速公路时遇到的需求,本次涉及的主要是收费汇聚交换机的配置,浪潮网络设备在高速项目很少,通…...

C++课设:简易日历程序(支持传统节假日 + 二十四节气 + 个人纪念日管理)

名人说:路漫漫其修远兮,吾将上下而求索。—— 屈原《离骚》 创作者:Code_流苏(CSDN)(一个喜欢古诗词和编程的Coder😊) 专栏介绍:《编程项目实战》 目录 一、为什么要开发一个日历程序?1. 深入理解时间算法2. 练习面向对象设计3. 学习数据结构应用二、核心算法深度解析…...