新时代下的定向网络爬虫技术和反反爬虫策略

新时代下的定向网络爬虫技术和反反爬虫策略

关注“搜狐技术产品”公众号,第一时间获取技术干货!


导读

爬虫作为搜索引擎核心部件,伴随着互联网规模的发展而壮大。在互联网初期,规模不是很大的时候,网站分类较少,内容也偏少,在互联网查找信息很容易。然而随着网络信息和资源的不断增多,如何快捷的获得用户期望的信息变得非常重要,爬虫作为自动获取网页信息的工具,得到了极大的发展。

爬虫的分类


最早出现的爬虫程序,是Matthew Gray研发的World wide Web Wanderer。刚开始它只能够统计服务器数据量,后来发展到能够搜索网站域名。随着现代互联网的更快速发展,不仅搜索引擎的提供商越来越多,爬虫获取的信息量和网页数量令人震惊,而且爬虫程序对应的分类越来越细致多样。


根据信息量级大小、网站数量多少以及爬取对象的不同,可以大致将爬虫程序的发展过程分为4个方面:


1、通用网络爬虫

这类爬虫是以获取全网内容为目的,主要用于商业化的搜索引擎中,最具代表性的有Google,Bing,Sogou,Baidu,Yahoo等。它们获取到的内容主要以网页文字为主,背后有一个巨大的分布式数据库来保存这些从互联网络上获取的内容,然后查找时根据用户的查询条件进行相关度匹配,将结果返回给用户。

表1 通用网络爬虫的UA标识


2、聚焦网络爬虫

根据既定的抓取目标,有选择的访问互联网上的网页与相关链接,获取所需要的信息。这类爬虫主要用于垂直搜索引擎中。与通用爬虫不用,它并不追求大的网页库的覆盖,而将目标定位抓取与某一特定主题内容相关的网页,为面向主题的用户查询准备数据资源。为了高效率的抓取与主题相关的网络页面,需要在抽取Url列表后增加目标Url和主题相关性计算模块。常用的相关算法有:Best first search、Fish search、Shark search等。聚焦网络爬虫的设计主要评价标准是链接主题预测的准确性,计算的时空复杂度,以及爬虫系统的自适应性3个方面,其中提高链接价值预测的方法可以结合机器学习等工具提高准确度。


3、站点网络爬虫

站点爬虫是针对特定网站进行的全站内容获取的爬虫系统,这类爬虫获取的信息量级相比前两种爬虫类型都要小,爬取的对象主要是网站的富文本网页、视频、图像以及音频内容,数据存储量小,技术复杂度低。这类爬虫在设计实现上与前两种爬虫的区别主要在于不需要大量初始Url列表,新链获取可以采用站内链接,同时避免了新链价值计算以及和与目标主题的相关性计算。


4、定向网络爬虫

定向网络爬虫是针对互联网上特定内容的增量更新式爬虫。这类爬虫以RSS/Atom订阅类爬虫为代表,具有具体的内容对象链接,需要进行重复请求。定向网络爬虫还要求更新请求具有实时性或具有特定格式内容的解析能力。


Mole爬虫系统有关技术


Mole爬虫系统是搜狗社区搜索部研发的定向网络爬虫系统,它类似与传统的Rss/Atom订阅系统。通过预添加的订阅源,可以及时的将各个UGC内容平台的社交内容聚合展示。


其中涉及到的关键技术实现从4个方面阐述:


1、分布式设计

Mole核心抓取组件主要分为三部分:Scheduler、Fetcher以及Processor三部分构成:


各个组件之间通过消息队列连接。除了Schedule模块受Url滤重限制需要设计成单点服务外,Fetcher和Processor模块都可以多实例分布式扩展。

2、流速控制

爬虫对目标站点的内容的获取是通过http请求得到的,大量的http请求需要占据目标站点的带宽,为了减小目标站点服务器的压力,需要限制爬虫框架的下载速度。


常用的流量控制算法有漏桶算法和令牌桶算法。Mole爬虫系统采用的是可以很好兼容突发性流量的令牌桶算法。


图片来源:quora
图片来源:quora

代码示例:

3、Url滤重

在网络爬虫运行过程中,当抓取模块完成对网页的下载后,解析模块会对下载到的网页进行解析,抽取嵌套在HTML中的其他网页的Url,将这些Url填充到带抓取队列进行下一轮抓取。已经抓取过的Url有可能又会被重新抽取到,所以如果没有Url滤重,就会让某些页面重复抓取,这无疑会严重影响爬虫系统的运行效率。


常用的Url滤重方法有Hash表、指纹+Hash表、BoomFIlter、数据库滤重四种方法。Hash表方法是将Url作为Key,插入到Hash表中;新抽取的Url如果存在在Hash表中,则丢弃;否则填充到待抓取队列中。指纹+Hash表是将Url通过MD5或SHA-1等签名方法压缩后作为Key,然后进行Hash表存储。这两种方法都是基于内存,查询效率高,具有100%去重准确率。


BoomFilter是基于位存储和Hash计算实现的过滤器,它具有高内存利用率和时间复杂度为O(1)的查询效率,但是存在假阳性错误,即可能将没有抓取过的URL判断为已经抓取过,从而形成漏抓。


Mole中Url滤重算法是采用基于数据库的滤重算法,每个Url对应的Task存在存活期限(age)和强制标志(force),在存活期限内,相同的Url不会重复抓取;如果超过存活期限或强制标记为True,则需要重新调度。这种滤重方法占用存储空间相比较前面三种方法都要多,但是这种方法提供了额外的存储状态,可以实现更加精细化的Url调度策略。


4、数据库存储优化

Mole抓取后的内容存储在ElasticSearch(ES)上,ES是当下流行的企业级搜索引擎,它具有分布式设计,可以通过横向扩展节点数据提高其存储能力。目前,我们在ES上存储了接近50亿的文档数,对ES的写入和存储都带来很大压力,ES的性能优化就变的至关重要。


ES索引的优化:我们针对ES索引的优化,主要工作是重新梳理了存储文档的mapping格式,其中全面禁用了_all字段存储,这个字段对于全面文档的搜索查询非常重要,但是对于特定字段的查询就意义不大;对于不需要建索引的字段需要明确的将index设为no;某些文本字段的doc_value也设置为false。优化完成后,索引文件大小减少为原来的一半,查询效率并没有受到影响。


ES写入性能优化:ES的写入性能受限,主要原因是因为ES写入硬盘策略导致的。ES建索引写入数据,数据最先保存在内存buffer中,然后再刷入到lucene的底层文件segment中;写入segment完毕后再执行refresh操作,才能将数据commit到磁盘中。写性能优化首先要调整了ES的刷新间隔,这个需要根据磁盘IO调整,防止磁盘写入抖动;数据根据读写访问的频次分为冷热数据,冷热数据需要分开存储,读写频率较高的数据迁移到ssd盘上;ES内部数据传输是经过内部操作Bulk实现的,Bulk操作通过队列来控制写入任务的执行顺序,如果Bulk队列挤压时写入任务有可能超时执行,这时不要立即重试,否则会使Bulk任务越积越多。


反反爬虫策略


恶性的网络爬虫以获取互联网内容为目的,通过不计后果的访问目标网站,在获得信息的同时,也会给目标网站造成服务器压力。内容生产网站为了限制恶性的网络爬虫大量无效的流量访问,开发出了多种反爬虫策略,力求在降低恶性网络爬虫请求量的同时又不会对正常用户的请求带来影响。这些爬虫与反爬虫的攻防请求既对网站的开发带来成本,又使得网络信息的获取带来困难。爬虫技术是无害的,但请不要恶意使用爬虫技术。


反反爬虫是针对目标网站反爬虫技术而出现的针对性技术,通过将请求最大限度模拟成真人行为来获取真实可靠的数据。这里简单介绍常见的反反爬虫策略。


代做工资流水公司长春代开背调银行流水舟山打印企业对私流水漳州银行流水账样本衡阳工资代付流水查询杭州背调流水图片郑州打车贷流水唐山自存流水查询邯郸个人银行流水代办宁德做日常消费流水深圳代开车贷银行流水杭州代办企业流水打印宁波代开自存银行流水肇庆代做对公账户流水福州薪资银行流水费用赣州查询流水账单重庆代做个人银行流水大庆流水账单价格南宁工资流水账单打印廊坊开工资银行流水南阳办薪资流水单泰州公司流水代做商丘做房贷流水北京公司银行流水模板烟台购房银行流水打印柳州个人银行流水多少钱郑州房贷流水多少钱宜春查询背调流水银川打自存银行流水温州企业贷流水代办宿迁工资流水制作香港通过《维护国家安全条例》两大学生合买彩票中奖一人不认账让美丽中国“从细节出发”19岁小伙救下5人后溺亡 多方发声卫健委通报少年有偿捐血浆16次猝死汪小菲曝离婚始末何赛飞追着代拍打雅江山火三名扑火人员牺牲系谣言男子被猫抓伤后确诊“猫抓病”周杰伦一审败诉网易中国拥有亿元资产的家庭达13.3万户315晚会后胖东来又人满为患了高校汽车撞人致3死16伤 司机系学生张家界的山上“长”满了韩国人?张立群任西安交通大学校长手机成瘾是影响睡眠质量重要因素网友洛杉矶偶遇贾玲“重生之我在北大当嫡校长”单亲妈妈陷入热恋 14岁儿子报警倪萍分享减重40斤方法杨倩无缘巴黎奥运考生莫言也上北大硕士复试名单了许家印被限制高消费奥巴马现身唐宁街 黑色着装引猜测专访95后高颜值猪保姆男孩8年未见母亲被告知被遗忘七年后宇文玥被薅头发捞上岸郑州一火锅店爆改成麻辣烫店西双版纳热带植物园回应蜉蝣大爆发沉迷短剧的人就像掉进了杀猪盘当地回应沈阳致3死车祸车主疑毒驾开除党籍5年后 原水城县长再被查凯特王妃现身!外出购物视频曝光初中生遭15人围殴自卫刺伤3人判无罪事业单位女子向同事水杯投不明物质男子被流浪猫绊倒 投喂者赔24万外国人感慨凌晨的中国很安全路边卖淀粉肠阿姨主动出示声明书胖东来员工每周单休无小长假王树国卸任西安交大校长 师生送别小米汽车超级工厂正式揭幕黑马情侣提车了妈妈回应孩子在校撞护栏坠楼校方回应护栏损坏小学生课间坠楼房客欠租失踪 房东直发愁专家建议不必谈骨泥色变老人退休金被冒领16年 金额超20万西藏招商引资投资者子女可当地高考特朗普无法缴纳4.54亿美元罚金浙江一高校内汽车冲撞行人 多人受伤

代做工资流水公司 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化