3回答

0收藏

薅“疫情公益”羊毛,黑产恶意爬取各大出版社电子书上万册

信息分享 信息分享 4202 人阅读 | 3 人回复 | 2020-02-26


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

——极验交互安全实验室






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




学术资源类有:


不完全统计

网课类平台:

教育部组织的 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 接口数据参数加密传输,并添加一致性校验




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



极验X无糖在线分享:疫情下的爬虫






点击阅读原文链接,体验极验反爬虫产品

产品链接:

https://www.geetest.com/BotSonar







本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
分享到:
回复

使用道具 举报

回答|共 3 个

sml2h3

发表于 2020-2-26 16:15:54 | 显示全部楼层

欢迎哦!
回复

使用道具 举报

magiccc

发表于 2020-2-27 09:19:32 | 显示全部楼层

谢谢,也欢迎大家参加我们的分享
回复

使用道具 举报

微冷

发表于 2020-10-11 22:33:02 | 显示全部楼层

博客反爬有待加强
回复

使用道具 举报