常见的反爬虫和应对方法
2016-01-24 17:50:18 | 来源:玩转帮会 | 投稿:佚名 | 编辑:小柯

原标题:常见的反爬虫和应对方法

 0x01 常见的反爬虫

  这几天在爬一个网站,网站做了很多反爬虫工作,爬起来有些艰难,花了一些时间才绕过反爬虫。在这里把我写爬虫以来遇到的各种反爬虫策略和应对的方法总结一下。

  从功能上来讲,爬虫一般分为数据采集,处理,储存三个部分。这里我们只讨论数据采集部分。

  一般网站从三个方面反爬虫:用户请求的Headers,用户行为,网站目录和数据加载方式。前两种比较容易遇到,大多数网站都从这些角度来反爬虫。第三种一些应用ajax的网站会采用,这样增大了爬取的难度。

 0x02 通过Headers反爬虫

  从用户请求的Headers反爬虫是最常见的反爬虫策略。很多网站都会对Headers的User-Agent进行检测,还有一部分网站会对Referer进行检测(一些照片网站的防盗链就是检测Referer)。如果遇到了这类反爬虫机制,可以直接在爬虫中添加Headers,将浏览器的User-Agent复制到爬虫的Headers中;或者将Referer值修改为目标网站域名。对于检测Headers的反爬虫,在爬虫中修改或者添加Headers就能很好的绕过。

 0x03 基于用户行为反爬虫

  还有一部分网站是通过检测用户行为,例如同一IP短时间内多次访问同一页面,或者同一账户短时间内多次进行相同操作。

  大多数网站都是前一种情况,对于这种情况,使用IP代理就可以解决。可以专门写一个爬虫,爬取网上公开的代理ip,检测后全部保存起来。这样的代理ip爬虫经常会用到,最好自己准备一个。有了大量代理ip后可以每请求几次更换一个ip,这在requests或者urllib2中很容易做到,这样就能很容易的绕过第一种反爬虫。

  对于第二种情况,可以在每次请求后随机间隔几秒再进行下一次请求。有些有逻辑漏洞的网站,可以通过请求几次,退出登录,重新登录,继续请求来绕过同一账号短时间内不能多次进行相同请求的限制。

 0x04 动态页面的反爬虫

  上述的几种情况大多都是出现在静态页面,还有一部分网站,我们需要爬取的数据是通过ajax请求得到,或者通过JavaScript生成的。首先用Firebug或者HttpFox对网络请求进行分析。如果能够找到ajax请求,也能分析出具体的参数和响应的具体含义,我们就能采用上面的方法,直接利用requests或者urllib2模拟ajax请求,对响应的json进行分析得到需要的数据。

  能够直接模拟ajax请求获取数据固然是极好的,但是有些网站把ajax请求的所有参数全部加密了。我们根本没办法构造自己所需要的数据的请求。我这几天爬的那个网站就是这样,除了加密ajax参数,它还把一些基本的功能都封装了,全部都是在调用自己的接口,而接口参数都是加密的。遇到这样的网站,我们就不能用上面的方法了,我用的是selenium+phantomJS框架,调用浏览器内核,并利用phantomJS执行js来模拟人为操作以及触发页面中的js脚本。从填写表单到点击按钮再到滚动页面,全部都可以模拟,不考虑具体的请求和响应过程,只是完完整整的把人浏览页面获取数据的过程模拟一遍。

  用这套框架几乎能绕过大多数的反爬虫,因为它不是在伪装成浏览器来获取数据(上述的通过添加 Headers一定程度上就是为了伪装成浏览器),它本身就是浏览器,phantomJS就是一个没有界面的浏览器,只是操控这个浏览器的不是人。利用 selenium+phantomJS能干很多事情,例如识别点触式(12306)或者滑动式的验证码,对页面表单进行暴力破解等等。它在自动化渗透中还 会大展身手,以后还会提到这个。

tags:

上一篇  下一篇

相关:

吴宗宪结怨黄安20年 忍一个月重呛“他哪位?”

跟黄安结怨20年的吴宗宪沉默1个月,今天重炮开骂。 “综艺天王”吴宗宪与“台独克星”黄安结怨20年,最近黄

乔帅被惹毛 100个失误才挫西蒙

? 1995 - 2016 China Times Inc. 请尊重智慧财产权勿任意转载违者依法必究。

萧亚轩终于认分手!百亿男友无望回家过年

萧亚轩透过经纪人婉转认分手,表示与Elroy已经退回朋友关系。 萧亚轩过去与Elroy交往时,经常晒恩爱照放闪

最硬镇西堡超马 2000多勇脚雪中high跑

2000多勇脚在雪雨里挑战“镇西堡超级马拉松”,缔造雪中开跑的台湾长跑史纪录!(跑者陈世侦提供) 有“台湾

功夫熊猫3首日票房有多少 功夫熊猫3手游app预告地址

1月23日,电影《功夫熊猫3》在全国范围进行超前点映,狂揽近五千万票房,成为当日票房冠军。在新浪

寒流发威 新北今10死 新店1男陈尸街头

? 1995 - 2016 China Times Inc. 请尊重智慧财产权勿任意转载违者依法必究。

【听译】?ICENETWORK MEN'S SINGLE SP PREVIEW with Jeremy Abbot Ryan Bradley

Watch the experts at the ICE Desk preview the senior men's short program from the 2016 U.S. Figure S

KID主持后爆肥18公斤 对比照超吓人

KID(林柏升)主持后,竟默默暴肥18公斤。 艺人KID(林柏升)当年以团体CIRCUS中的“*奔少年”出道,后来转

泰第2起MERS确诊病例 37人观察中

泰国卫生部今天表示,泰国境內出现第2起中东呼吸症候群冠状病毒确诊病例,另有37人接受隔离观察。路透社报导

泰国再传MERS 台商提高警觉

泰国卫生部证实出现第二例中东呼吸症候群,病患是一名71岁的阿曼籍男子,目前正在医院隔离治疗中。泰国台商

站长推荐: