薅“疫情公益”羊毛,黑产恶意爬取各大出版社电子书上万册 – 作者:GEETEST极验

这个特殊的时期,企业不仅受到疫情的影响,还有线上的网络安全问题,重灾之一就是恶意爬虫攻击。

疫情期间,大家不能出门,只能宅在家里。为了让宅家生活更加丰富多彩,许多企业开放了有期限的免费服务。最为典型的是教育资源和娱乐内容。

学术资源类有:

不完全统计

网课类平台:

教育部组织的 22 个在线课程平台免费开放。包括爱课程、学堂在线、智慧树、学银在线、优客联盟、好大学在线等等。

还有来自五十家优秀内容平台的电子资源:

图片来源:每日经济新闻

疫情期间各大企业响应国家号召,为全民打赢这场战争助一臂之力,是企业肩负并承担起社会责任的表现,我们应该为这样的行动鼓掌。

但是,疫情期间不仅有人性的光辉,还有人性的丑恶。在各大企业机构免费开放资源的同时,黑产伺机而动。

机械工业出版社爬虫分析

2020年2月,机械工业出版社宣布免费开放 6000 余种电子书,其中包括很多专业书籍。不久之后,官方接口陷入崩溃状态,搜索引擎出现其他相关入口。这很有可能是遭遇了大量恶意爬虫攻击。

通过追踪,目前找到了两个机械工业出版社的爬虫,两个都是脚本爬虫,一个爬取的 web 端的数据,另一个爬取的是机械工业出版社 H5 端的数据。

web 端 python 爬虫

爬虫主要使用 requests 进行爬取,通过获取所有的图书连接最终到亚马逊的 CDN 上面去下载内容。

获取所有的书籍分类,所有的分类是提前保存到项目里面的,做了目录和中文名称 的对应关系,猜测是为了后续保存 PDF 名称使用的,也是为了从中文分类到 CDN 链接做一个映射使用,部分示例如下:

获取该分类下的所有图书,下面使用伪代码说明:

最后保存所有的下载链接,项目中并没有给出所有图书批量下载的代码,但是从仓库的描述来看,之前提供了分片下载的代码。从 github 的 commit 历史里面找到了之前的多线程下载代码,本来以为就是一个简单的爬虫,但是到这里我发现并不那么简单。

代码的实际用途是从 AWS 下载 PDF,这个地方为了防止 AWS 拦截,还做了一些伪装。

伪装 HTTP header

模拟浏览器添加了 http header,并且增加了分段下载的支持。

多线程支持

为了加速下载仓库使用了多线程下载,但是作者为了防止 AWS 封禁,使用信号量控制同时只能运行三个线程。

H5 端爬虫

移动端的爬虫稍微比 web 端复杂一些,经过一番 review 我发现主要是获取书籍的链接更加复杂了,并且移动端不能直接获取PDF,只能获取到HTML,爬虫这里使用的主要手段是通过获取每个章节的HTML,最终通过将HTML转换成PDF完称书籍的爬取。

H5 端爬取的大致思路:

枚举的方式获取所有的图书 ID (作者猜测总共图书不超过 10000)

因为前端有 cookie 的校验,无法获取 token 所以在前端直接发起请求, 并保存内容,后续处理(类似模拟器的方式)

最终通过 HTML 转 PDF 的形式保存图书

整个过程中比较难处理的是 token 的获取方法,因为作者没有找到破解办法,最终使用类似模拟器的形式获取所有的HTML连接内容。

截止到目前,官方的入口还在升级维护中。想来是有些心寒,为众人抱薪者,却冻毙于风雪之中。

来自爬虫的威胁

爬虫,是一种自动化抓取网络资源和信息程序或者脚本。爬虫有好有坏,好的爬虫为我们提供便捷的服务,比如搜索引擎。恶意爬虫会盗取企业核心资源信息,比如上文中提到的内容资源;高频的访问侵占服务器资源,导致企业服务崩溃,这无疑是在给企业增加运营的成本。

除了上文提到的出版社,清华大学出版社文泉学堂免费为用户提供近三万种正版电子书,同样遭到了大量恶意爬虫的攻击,导致网站服务器处于崩溃的边缘,不得不进行系统升级和维护,暂停为广大读者服务。

2019年8月,警方破获鼎阅公司侵犯著作权案,该公司软件工程师通过爬虫软件在网上搜取其他公司 APP 上电子书籍的数据,进行再编辑后发布。调查统计数据显示,该企业:

数据来源:中国扫黄打非网

2020 年了,内容付费于我们而言不再是陌生的词,大家都乐于为好的内容买单。我们清楚的知道,好的内容和资源对于一家企业而言意味着什么。

除了内容平台,还有很多核心数据资产也受到恶意爬虫的威胁。在某论坛上就有某企业数据公司被爬案例:

部分爬虫代码,可以看到获取的内容包括公司名称、标签、法定法人、邮箱、电话等等。

某招聘公司数据被爬案例:

上述数据作为企业的核心资产,被爬取并公布在论坛上。爬虫发布人说:“这些数据,对于知道怎么用的人,价值是巨大的”。当然,被爬企业的损失也将是巨大的。

而简单的反爬技术很容易被破解绕过。爬虫与反爬虫的对抗历时久远,很多企业也都会尝试保护自己的核心资源内容。但是简单的反爬虫机制已经无法抵挡住恶意爬虫的攻击。比如在某公开技术论坛中,就有人共享某二手车网站的反爬技术分析。

分析称:该网站反爬机制过于简单,只检测是否有cookie。如果有的话,就返回正常的数据,没有的话,先添加到cookie中,然后在跳转到正常数据。

传统的反爬虫技术包括:

IP黑白名单

UA 检查

频率控制

但是这些早已经不能有效的防住恶意爬虫了。

极验反爬虫技术建议

上述的一些内容平台遭遇爬虫侧面反映了其 WEB 端防御薄弱,H5 端采用了 cookie 和 token 的校验对爬虫起到一定的抑制作用,反观亚马逊 CDN 使用了部分拦截手段,但是仍然没有很好的防御低频爬虫。

针对疫情期间大量的恶意爬虫,极验反爬团队为企业提供以下几点建议,可以尽量保障自己的内容安全,并降低运维成本:

1、在 H5 端新增内容反爬,比如字体、CSS 反爬手段;

2、WEB 端增加脚本检测、模拟器检测、频次检测等;

3、H5 和 WEB 端均使用加密的 JS 。

同时,在后期的内容以及资源保护上,我们的建议是:

内容型网站增加内容防盗链,访问频率限制

通过账号权限控制可访问内容边界

增加内容反爬,比如字体反爬,样式反爬

更高级的可以增加脚本检测,模拟器检测等手段

API 接口数据参数加密传输,并添加一致性校验

因为反爬虫的范畴比较大,而且安全对抗是一个长期持续的行为,如果有条件可以采购此类的反爬虫产品,防御会更加的系统、全面,使安全对抗更加简单化、实时性更高,减少对业务的干扰和开发人员的持续投入。

*本文作者:极验交互安全实验室,转载请注明来自FreeBuf.COM

来源:freebuf.com 2020-03-25 09:00:09 by: GEETEST极验

© 版权声明
THE END
喜欢就支持一下吧
点赞0
分享
评论 抢沙发

请登录后发表评论