网络爬虫简单策略

    前几天同学问我,获取一个网站的资料是通过api调用好还是通过网络爬虫好,我说如果api可以满足需求那可以直接调api因为api是网站给你暴露的接口,客服端开发起来方便,并且返回的数据好解析,只要按他的规则来就应该没什么大的问题,不要考虑策略去获取最新的资料,可有个很大的问题就是通过api的调用完全受api服务器端限制,就和在中国上网一样,说哪个网站不上你上,那你通过合法的流程肯定是上不了的。

   网络爬虫有个很大的好处,不太受服务器端的限制,你可以通过许多策略去绕过它,他们一般有以下可以做限制的:


    1.通过ip限制。

    2.通过cookie限制

    3.通过加密算法加密请求的url

    4.通过你请求的header限制

    5.通过回答问题或验证码限制

    6.欢迎补充


   其中除了出现验证码,其他都可以破解,那我就简单介绍下我的策略吧!


   对于单位时间访问过多,服务器端可能会给你的ip直接封死,有两个方法可以绕过这个规则,第一,给你请求的http设置代理,现在的代理ip比较多,不过要慢慢找,很多都不能使用。第二个方法:大部分人用的是adsl上网,那adsl有一个很好的优点就是ip不是固定的,所以重启下路由就可以换个新的ip了,不过要注意不要出现重启后还出现之前用的ip了!所以我们要给ip简单过滤下。


   出现通过cookie限制的话,那你程序就一步一步的请求,最好不要跳步,如果用httpclient写的爬虫,那设置当请求时自动在请求体中加上cookie。


   通过加密算法加密请求的url,那必须知道它的加密算法写在哪,比如说sina之前的邮箱加密算法写在js里面,并且比较复杂,那可以用java执行加密js生成结果,所以也不一定要搞懂它是怎么加密的,除非真正没其他办法,那只能看懂它的加密算法,再自己实现。


   通过你请求的header限制是比较简单的限制,就是判断你请求的header是否符合要求,UA是否有,是否符合要求,host是否有......所以只要你请求时加上必要的header就行。


   通过回答问题限制那就先好好分析它的问题,因为题库总是有限的,有点的题目本来就很简单,比如两数相加相减什么的,那可以用程序自动分析,自动执行。


   最后有个最难的就是出现图片的一切验证,反正我是破解不了,那怎么办?一般出现验证码肯定影响用户体验,所以被抓去的网站肯定也不是很喜欢,但为了防止一些非法请求还必须加上,所以出现验证码的大部分都是有原因的,哈哈...有点夸张,所以我们按正规的流程走是不会出现验证码的,所以要把爬虫写得像人请求一样,那你就算成功了一大半了。


   往往写网络爬虫要把几个策略一起使用,一点一点试服务器端的规则,绕过规则就是天堂。


转载请注明来自于:http://alexchan.iteye.com/blog/1512996

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值