58反抓取简介

0x00 介绍

网络爬虫,常又被称呼为Spider,网络机器人,主要模拟网络交互协议,长时间,大规模的获取目标数据。

普通爬虫会从网站的一个链接开始,不断收集网页资源,同时不断延伸抓取新获取的URL以及相应的资源。 在对抓取目标内容结构分析的基础上,还会有目的性更强的聚焦型爬虫。

爬虫对网站的抓取,最直接的影响就是增加服务器负载,影响正常业务的使用。 但是仅仅限制爬虫的抓取频次是远远不够的。 更重要的是对网站资源的保护,比如房产类信息中的小区名称、户型、建造年代、房型图、视频、面积、总价、单价等。 同样的,在58招聘,黄页,二手车等业务线中,也存在着大量可用资源。 更有甚者,利用业务逻辑漏洞或系统漏洞,爬虫也可大量获取平台内用户、商户信息,平台信息,其间不乏敏感数据,从而导致涉及信息泄露的各种群体及法律相关事件。

0x01 搜索引擎

在网络中实际上也会存在大量的如Google,百度,360,微软Bing等搜索引擎的爬虫,一般这些搜索引擎都会对请求的浏览器UA进行定义,如百度PC端: PC UA:

Mozilla/5.0(compatible;Baiduspider/2.0;+http://www.baidu.com/search/spider.html)

众所周知,浏览器信息都可以被伪造和篡改,所以单凭UA头信息来识别是不够的,反查HOST是识别搜索引擎的一种方法,但由于一些搜索引擎无法查明HOST,所以单一的识别方法并不十分有效。 行为类的判别方法或许将更加重要。

Robots协议

这里顺便提一句Robots协议,Robots协议(也称为爬虫协议、机器人协议等)的全称是“网络爬虫排除标准”(Robots Exclusion Protocol)。

即使是正规的搜索引擎的爬虫,也可能对一些网站造成负载压力,或网站并不期望搜索引擎抓取一些页面,这时Robots协议就会起到作用了。 文件“Robots.txt”将告诉不同的爬虫能访问的页面和禁止访问的页面,但是这个协议因为不强制爬虫遵守,而起不到防止爬虫的功能。

0x02 一些典型的爬取手段

在了解基本的爬取手段前,我们来看看,目前网络中,哪些人是爬虫的生产者(或搬运工)。

我们先来对他们进行一下分类:

? 学生,初级兴趣爱好者,初级爬虫程序员,数据分析师

? 数据公司

? 商业对手

? 失控的爬虫和搜索引擎

一些爱好者或者初级爬虫程序员,可能会通过网络搜集可用的脚本或者框架,其中python无疑是用的最多最广的,并且诞生了很多优秀的库和框架,如scrapy、BeautifulSoup 、pyquery、Mechanize等。

网络上也存在着大量的数据公司,他们提供数据交易平台,用户可以购买定制数据,定制爬虫等。

商业竞争对手也会互相抓取对方数据,获取对方平台资源或为己用,或用于进行商业数据分析,相信这里的爬虫工程师已不再是搬运工的水平,他们有着明确的目的性和专业技能。

除了搜索引擎外,网络上还存在着失控的爬虫,他们可能存在于一些云服务器上,也可能存在于被入侵的电脑,这些程序可能已无人管理,但是在持续运行着抓取程序。

下面介绍一些典型的抓取手段

设置频率

防爬一方面是为了防止服务器的高负载,那么那些真正想获取网站资源的爬虫,就不会轻易触碰这条底线,所以设置爬虫频率是一个不错的方法,爬虫会试探网站的规则,每爬取一次数据就会设置一定的SLEEP时间,这个时间都有可能是随机变化的,从而绕过平台策略。 不过换一个角度考虑,一天算下来,是86400秒,那么在时间有限又不能触碰网站策略的前提下,如何更高效的抓取数据呢? 办法应该还是挺多的,后文会略有涉及。

代理IP

因为网站的浏览很多情况下并不存在账户属性,所以拦截爬虫最直接的手段,就是对IP的封禁。 但是爬虫为了高效的获取网站数据,会使用多线程,分布式,多IP进行抓取,他们可以轻易的从网上获取免费的代理IP,如果担心代理IP的稳定性,可以购买付费代理IP库,现在很多数据网站,也提供了付费的代理IP服务。

代理IP只是一种手段,其实爬虫只要更换了IP,往往就可以继续抓取任务。 最简单的例子比如我们在浏览一些网站时,可能会触发网站的机器人挑战,用户在挑战成功后(例如正确输入了图片验证码的文字,或准确的滑动了滑块)就可以继续浏览。 对于爬虫来讲,这里要突破验证码,在验证码无法突破的情况下,就需要更换IP,哪怕是重启一下路由获取新的IP地址。

伪造浏览器

部分网站会针对浏览器(user-agent)做爬虫判断,对于一些初级爬虫,可能会存在非法的浏览器描述,比如python,phantomjs,pyspider等,这类UA会被直接封禁。 针对浏览器也会有计数类策略,但因为浏览器信息很容易被篡改,所以只要维护一个浏览器库随机调用,就会绕过计数类策略。

还有爬虫使用内置浏览器,比如一些数据公司发布的数据采集器,八爪鱼,火车头等,这已经不是简单的篡改浏览器信息,他们支持各种新的css渲染特性和js运行时语法,这种方式主要在对抗对浏览器特征的检查。

设备模拟

设备指纹作为目前反欺诈的利器,被很多企业使用,WEB端的JS或者APP端的SDK,用于唯一标识用户设备。 反抓取会利用IP结合设备指纹来制定一些策略,比如计数等。 我们先不谈设备指纹碰撞或者被破解的问题,单就指纹的申请,已经可以模拟真实设备信息进行批量请求,指纹入库等待后续使用。 所以单独针对指纹的策略,也不一定有效。

破解验证码

一般反抓取策略的初步拦截会以人机挑战为主,例如各种验证码,对于爬虫来讲,验证码的破解就会成为关键一环。 根据验证码形态的不同,破解方式会存在人工打码,机器算法识别,接入打码平台等。 这个环节的对抗也是相当激烈的,每一次的验证码升级,都有一定的时效性,只有不断升级挑战方式,才能有效的对抗爬虫。

网络协议参数的伪造

因为爬虫本身就是程序在模拟用户与网站的交互,所以理论上来讲,当模拟程度足够高时,很难区分机器行为。 初级爬虫可能会忽略cookie,refer等信息,高级一点的爬虫就会对cookie进行设置或者对refer进行伪造。

0x03 反抓取常用的对抗方法

针对一些典型的爬取方法,自然会有一些基本的对抗方法,下面简单描述一下常用的反抓取手段:

IP

最容易想到的就是针对IP的频率类或次数累积限制,但是针对抓取的特点,可以进一步进行细分,如结合时段,城市,网站页面类型,访问间隔,跨度,以及一些协议参数的变化情况等。

浏览器检测

对浏览器描述信息的检测是最基础的,在此基础上,可以进一步针对浏览器特性进行检查,基于浏览器的 UserAgent 字段描述的浏览器品牌、版本型号信息,对js运行时各个原生对象的属性及方法进行检验,观察其特征是否符合该版本的浏览器所应具备的特征,如Plugin,language,webgl,hairline等。

网络协议参数检测

进行基本的参数检测,如cookie,refer是否为空,是否合法,refer是否正确等。 同时需要结合用户终端进行判断,如区分WEB,APP,移动平板; 以及入口应用的特性进行判断,如主站,微信小程序,QQ及其他入口渠道等。

验证码

验证码产品提供多种人机识别方式,包括传统字符验证码,滑动拼图验证码,点选验证码,短信验证码,语音验证码等,以及结合生物特征的用户鼠标、触屏(移动端)等行为的行为验证技术。

设备指纹

APP设备指纹SDK,用户设备环境检测,如是否为模拟器,是否ROOT等; M端,PC端设备指纹JS环境检测等。

服务端检测请求设备指纹是否合法。

APP,M,PC端设备标记,保证设备唯一性的基础上进行如计数统计、行为分析等。

WEB端

JS埋点,JS网页加密,JS代码混淆等;

Ajax/Fetch异步请求,Noscript标签的结合使用;

CSS字体库等渲染,FONT-FACE拼凑式,BACKGROUND拼凑式,字符穿插式,伪元素隐蔽式,元素定位覆盖模式,IFRAME异步加载,Flash、图片或者pdf来呈现网站内容等;

假链接,如在网页多处放几个一个像素的随机图片名假链; 网页多处放几个随机不可见的假链; 网页多处放几个随机的前景色和背景色相同的假链; 网页多处放随机的位置超出屏幕的假链。

因为数据平台定向抓取会分析网站结构,所以定期更改模板算一个应对方法,其余还有例如动态变换html标签,网页使用压缩算法输出内容,网页内容不定时自动截断等;

假数据,返回假数据,实际在防守的同时对抓取方的一种进攻,对抓取方恨之入骨可采用此方法,问题是可能带来误伤,或者当抓取方发现被无情欺骗时,激起对方的愤怒进而升级抓取手段,甚至蓄意的破坏。 当然针对竞品公司,应该予以无情的打击。

行为分析

通过爬虫与正常用户的一些行为差别进行的分析,如:

对localStorage的访问,一般爬虫不存储localStorage数据,所以每次会访问;

正常用户访问会在较短时间里完成某一时间周期的总请求数的绝大部分,映射到总用户上,确定的一段时间里,正常用户访问的总页数会在某个量级时开始骤减;

识别通过修改参数如ID等的遍历行为。

API防刷

其实网络数据的交互都是通过API实现的,那么针对API接口的一些防护措施也能有效的控制爬虫,比如同IP/指纹对API接口频率调用设置阈值; 使用接口加密服务,多套算法随机使用,算法周期更新等; 根据API接口的深度,在触达路径进行数据埋点,识别请求路径等。

账户

一些网站信息必须用户登录后才可访问,这样反抓取除了通用方法外,还可以结合账户维度制定一些策略,比如同账户访问次数、频率限制; 同账户多设备限制; 同账户次数累积; 同账户多浏览器访问; 同账户访问城市切换,访问多业务线等。

安全画像

安全画像是58信息安全的一项重要服务,58自主研发的基于大数据的威胁情报系统,该服务是一个分析型安全防控管理系统,可基于风控系统实现统一的信息安全风控管理,帮助业务方实现事前的情报预警,事中的风险识别,事后的案件追溯,并与第三方数据有效集成,最终帮助业务线实现精准风险打击和智慧运营的效果。

在反抓取对抗中,我们也使用了IP类,设备类,账号类,手机号类等各种画像标签,效果显著。

0x04 58反抓取系统概要介绍

58反抓取SCF服务,为各业务线提供反抓取能力,接入成本低,时间短,目前日均处理接近10亿次请求,系统处理能力平日在每秒1W次左右,系统服务处理时间为单次0.5ms。 目前已基本覆盖58房产、招聘、黄页、二手车; 赶集房产、招聘; 安居客新房、二手房等各大业务线。

58反抓取系统示意图:

各接入方通过SCF服务接入反抓取系统; 策略管理系统为各接入方配置策略集; 分析单元执行策略集,并将命中目标送至判决单元进行后续处理; 通过实时监控和大数据平台进行数据分析。

反抓取策略管理系统,是整个反抓取能力的核心,是新反抓取技术方案,新能力,新风控工具的体现,目前可实现通用策略集的批量自动化配置。

反抓取实时监控系统,通过服务调用量监控,识别风险,并对异常流量进行预警。

风险的处罚,处罚的数据维度包括UID,cookie,IP,设备指纹等:

处罚的拦截方式包含通过,验证码(图片验证码、滑动验证码、短信验证码、语音验证码),返回假数据,拦截页中断操作等。

0x05 反抓取流量分析平台介绍

反抓取信息的重要来源,在于对流量的判断,包括流量变化,协议特征等。 通过对流量变化趋势,机器特征的识别和聚类,往往可以发现现存问题,并且可以通过对个别业务线的风险识别,进而对其他业务线进行预警,达到态势感知的效果。

基于nginx日志,针对反抓取进行的流量分析,可分析判断来自PC,M端,APP等恶意爬虫、自动机、模拟器等伪造真实用户发起的恶意机器流量; 可根据恶意机器流量判断攻击目标,攻击行为和攻击趋势,并进行恶意流量预警; 可对业务方进行流量热度排名,域名热度排名,接口热度排名等。

域名排名,可以了解当前时期域名流量热度以及时间内流量变化情况:

对域名下基本特征的分析,可以识别机器行为等:

流量离散度分析,在于判断流量的变化程度,并与历史情况进行比对

同时还有对IP,UA,URL的排名和具体分析。

后续将增加更细致的分析,更多维度的统计,并提供风险输出能力。

0x06 结语

上文主要介绍了一些爬虫的基本概念、爬取方法、对抗方法,以及概要介绍了58反抓取服务能力,在反爬虫领域,能做和要做的事情还有很多。 无论对于爬虫还是反爬虫,非常多新技术、新思路都在不断涌现,这就要求产品、技术人员,紧跟科技发展潮流,勇于突破固有思维,进行创新,并紧密结合公司业务场景,为公司发展保驾护航。

原文地址:https://www.cnblogs.com/duaimili/p/10844149.html

时间: 2024-10-10 18:45:33

58反抓取简介的相关文章

【android】[转]Android软件测试的日志文件抓取简介

1    log文件分类简介 实时打印的主要有:logcat main,logcat radio,logcat events,tcpdump,还有高通平台的还会有QXDM日志 状态信息的有:adb shell cat /proc/kmsg ,adb shell dmesg,adb shell dumpstate,adb shell dumpsys,adb bugreport,工程模式等 2    LOG抓取详解 l  实时打印 adb logcat -b main -v time>app.log

【C#】WinForm 之 DOTA2英雄搭配助手(网页抓取+在线绿色版+源码开放)

睡不着,无聊......再整理点好玩的出来.先上图 效果 碎碎念 自从13级后打出DOTA2的天梯积分以来简直是逆水行舟不进则退啊,室友已经高呼着被游戏玩了!!结果怒删游戏 其实我也发现这游戏不合适我玩…天梯里场场被各种选英雄针对,普通场又是剑圣.斧王横行.加之本人比较懒,不爱看视频,场均10死那是常有的事(打起来跟打WOW战场一样,反正死了有复活:P) 不瞎扯了,其实初衷就是不想被针对(想选个最脏阵容神马的我会告诉你嘛) 核心功能 这里要从Dotamax(http://dotamax.com/

网页抓取数据小工具-简化数值变量值

笔者出于兴趣或者工作需要,会经常对一些网站的数据进行数据抓取,对于像淘宝.携程.百度这类大型互联网公司的网站,出于安全或者性能考虑,常常会针对网站加入反抓取策略脚本. 在该类脚本中,常见的手法有以下几种: 1. 针对简单数值变量的值,会把它用一个数值表达式来表示,让你没办法一眼看穿它,如:_lkqr = - ((104 | 3525868) % 705192) 2. 把一个简单的数值,用手法1中两个变量进行运算,得到真正数值.如: _set = _lkqr + _lnz 3. 提供一个字符串转换

Python爬虫抓取技术的门道

web是一个开放的平台,这也奠定了web从90年代初诞生直至今日将近30年来蓬勃的发展.然而,正所谓成也萧何败也萧何,开放的特性.搜索引擎以及简单易学的html.css技术使得web成为了互联网领域里最为流行和成熟的信息传播媒介:但如今作为商业化软件,web这个平台上的内容信息的版权却毫无保证,因为相比软件客户端而言,你的网页中的内容可以被很低成本.很低的技术门槛实现出的一些抓取程序获取到,这也就是这一系列文章将要探讨的话题-- 网络爬虫 . 有很多人认为web应当始终遵循开放的精神,呈现在页面

php爬虫抓取信息及反爬虫相关

58爬虫了百姓,赶集和58互爬,最后各种信息相同,都是爬虫后的数据库调用,潜规则啊,几家独大还暗中各种攻击,赶驴网的幽默事例我不想多评价.这个时代是砸.钱*养.钱的时代,各种姚晨杨幂葛优,各种地铁公车广告,各种卫视广告,铺天盖地~~~ 来谈php爬虫抓取信息~~ php爬虫首推Curl函数了,先来认识下它. 0x01.curl扩展的安装: 1.确保php子文件夹ext里面有php_curl.dll(一般都有的,一般配置时候会设置环境变量的) 2.将php.ini里面的;extension=php

一个简书的爬虫,可以设定页码,抓取文章标题、简介以及链接

1 #coding=utf-8 2 import requests 3 from bs4 import BeautifulSoup 4 5 m=input("请输入想要抓取的页码数量:") 6 for i in range(1,int(m)): 7 url="https://www.jianshu.com/?page="+str(i) 8 headers={ 9 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64;

scrapy2——框架简介和抓取流程

scrapy简介 ? Scrapy是一个为了爬取网站数据,提取结构性数据而编写的应用框架. 可以应用在包括数据挖掘,信息处理或存储历史数据等一系列的程序中 scrapy的执行流程 Scrapy主要包括了以下组件: 引擎(Scrapy): 用来处理整个系统的数据流处理, 触发事务(框架核心) 调度器(Scheduler): 用来接受引擎发过来的请求, 压入队列中, 并在引擎再次请求的时候返回. 可以想像成一个URL(抓取网页的网址或者说是链接)的优先队列, 由它来决定下一个要抓取的网址是什么, 同

python 爬虫抓取心得

quanwei9958 转自 python 爬虫抓取心得分享 urllib.quote('要编码的字符串') 如果你要在url请求里面放入中文,对相应的中文进行编码的话,可以用: urllib.quote('要编码的字符串') query = urllib.quote(singername) url = 'http://music.baidu.com/search?key='+query response = urllib.urlopen(url) text = response.read()

Python爬虫实战四之抓取淘宝MM照片

福利啊福利,本次为大家带来的项目是抓取淘宝MM照片并保存起来,大家有没有很激动呢? 最新动态 更新时间:2015/8/2 最近好多读者反映代码已经不能用了,原因是淘宝索引页的MM链接改了.网站改版了,URL的索引已经和之前的不一样了,之前可以直接跳转到每个MM的个性域名,现在中间加了一个跳转页,本以为可以通过这个页面然后跳转到原来的个性域名,而经过一番折腾发现,这个跳转页中的内容是JS动态生成的,所以不能用Urllib库来直接抓取了,本篇就只提供学习思路,代码不能继续用了. 之后博主会利用其它方