老兵IDC教你如何一招解决爬虫IP被限制的问题?

2020/3/21 16:10:00

  知己知彼百战不殆,对于竞争对手或者目标消费群体的数据收集,我们乐此不疲。在ip代理盛行的今天,爬虫技术已经可以被我们充分发挥,海量收集数据,毫不手软。如果不用代理ip,我们的爬虫行动往往会受到很多限制,以致最太阳HTTP终被完全封锁掉。有什么方法能避免呢?往下看。
  1.验证码
  我们在很多网站会遇到,如果请求量大了之后就会遇到验证码的情况。最让人诟病的12306,其实也是一定程度上的防止非正当请求的产生。
  对于验证码,可以通过OCR来识别图片,Github上面有很多大神分享的代码可以用,可以去看看。
  2.Headers限制
  这应该是最常见的,最基本的反爬虫手段,主要是初步判断你是否是真实的浏览器在操作。
  这个一般很好解决,把浏览器中的Headers信息复制上去就OK了。
  值得注意的是,很多网站只需要userAgent信息就可以通过,但是有的网站还需要验证一些其他的信息,比如知乎,有一些页面还需要 authorization 的信息。所以需要加哪些Headers,还需要尝试,可能还需要Referer、Accept-encoding等信息。
  3.返回伪造的信息
  这个真的是程序员何苦为难程序员。反爬虫的工程师也是煞费苦心,一方面是不让真实的数据被大规模爬取,另一方面也给你后期的数据处理增加负担。如果数据伪造的好,可能你真的不容易发现自己爬的是假数据,当然只能依靠你后期去清洗这些数据了。
  4.减少返回的信息
  最基本的隐藏真实的数据量,只有不断加载才能刷新信息。还有的就更变态,会只给你展示一部分信息,人都看不到,爬虫也无能为力。比如CNKI,你每次搜索能够得到的内容就是非常有限的。这个貌似没有很好的解决办法,但是这么干的网站毕竟是少数,因为这种方式,其实在某种程度上是牺牲了一部分真实用户的体验。
  5.动态加载
  通过异步加载,一方面是为了反爬虫,一方面也可以给网页浏览带来不同的体验,实现更多的功能。很多动态网站都是通过ajax或者JavaScript来加载请求的网页。
  在遇到动态加载的网页的时候就需要去分析ajax请求,一般情况都能直接找到包含我们想要数据的json文件。
  如果网站给文件加密,那么可以通过selenium+phantomJS框架,调用浏览器内核,并利用phantomJS执行js来模拟人为操作以及触发页面中的js脚本。理论上selenium是比较全能的爬虫方案,因为这个确实算是真实的用户行为。除非网站的反爬虫严苛到宁愿误杀的地步。
  6.IP限制
  限制IP也是很多网站反爬虫的初衷,有些人随便写一个循环,就开始暴力爬取 ,确实会给网站服务器带来很大的负担,而这种频繁的访问,显然也不会是真实用户行为,索性果断把你封掉。
  这种情况,你可以遵守规则,把你爬取的速度变慢,每次爬取停个几秒就行了。
  当然,你也可以通过不断换IP的形式来绕过这种限制,也可以自己搭一个IP池,爬到一定的量就切换IP,你可以百度搜关键词:”动态ip服务器”或者’拨号VPS”或者淘宝。
  然后你就可以看到n多服务商,一般而言,你选购一个80-1000元/一个月的就还算可以用了,一般会采用vnc的方式远程桌面链接,在寻求服务商的时候,一定要拥有IDC,ISP还有VPN资质三证齐全的公司,如上图就是IDC资质证书,有些服务商是网络公司规模化运营了,但是都没有专门的资质,对于真正的这种动态IP云主机的服务商来说,至少需要IDC和ISP资质的,IDC资质是代表可以运营建设数据中心机房,ISP资质是可以自己做接入服务商甚至有些地方还需要VPN资质还有云计算牌照,因为很多线路需要跨过山河大海,如果没有专网资质也是违法违规的。在这种鱼龙混杂的情况下,选择一家有资质,有实力,靠谱的服务商多么重要。
  之前就有朋友遇到过找个人工作室租的服务器,后来人跑路了找不到,费用钱倒不说,放在那里的服务器上的数据也找不回来了,也遇到过没有IDC资质的服务商,外面拉的线路不稳定,三天两条换地方,被网监和通管局查,有的即使是有证的正规服务商,但是自己监管不力,乱接客户,非法的也做后,导致殃及池鱼,甚至有些连公司执照都没有,采购资源想开个发票都开不出来。如下图搜索到多看口碑看有没新闻报道很重要。


  另外拨号VPS又分单地区和混拨两种。
  单地区就是购买的这一台机器只能在单独地区有限的更换IP,混拨的意思就是这一台机器可以换IP 是全国各地的。两种机器价格都的差不多,那购买哪种合适自己呢?其实主要是看自己的应用需求,因为这两种拨号出来的效果是不一样的。
  单地区的是拨号VPS,其线路是直接接的当地运营商的BRAS系统,拨号认证也是运营商的账户认证,拨号出来的IP地址是公网IPV4的地址,其带宽速度都是跟正规的宽带账户是一样的,甚至更好。就是这台机器独享这个唯一的IP地址。可以通过看机器网卡的状态显示出来的IP地址和通过浏览器访问ip138得出的结果是一样的。而且相当于这个机器的IP地址是完全暴露在公网上,除了特定端口外,这个机器的大部分端口都是可以直接可以对外,可以单独提供服务的。其IP地址数量取决于当地运营商的IP数量了。
  而混拨的VPS,就是服务商做的二次拨号认证,一般是用的ROS系统,其拨号速度也慢一些,不可能有秒拨,而且拨号后获取的本机的IP实际是一个内网IP地址,是与其他机器通过NAT共享一个公网IP的形式,端口也都是无法对外开放的,也就是是只能访问外面用途而已。依旧可以通过对比网卡状态里的IP和实际访问的IP是不同的。而且带宽速度也是共享的,相对比较慢一些。其混拨的IP地址池,也是取决去服务商自己加入的地区数量。
  所以针对这两类产品的比较,也很容易得出哪种VPS适合自己的应用了,一般来说对网络速度没有要求,但是有需要IP数量多,可以跨域多地区的,并且不需要独一IP的适合选择混拨的VPS,对于带宽大,有些计算速度快,IP不需要跨越式变动,需要定在某一区域内变动的的应用就适合选择单地区的VPS了。


  那些花钱做百度推广,就是搜索结果后带“广告”两个字的尽量慎重,只有自然排名高和网上评论口碑好才是有实力的。当然也不绝对,这个意见仅供参考。


  稳定胜过一切,耽误了自己的业务就划不来了。选择一家稳定靠谱的服务商非常重要,一定要找一些口碑好,资质齐全,服务好的做首要条件,其实资源上各个服务商都差不多,有时候还互相调货,最好找拥有某些地区独家资源的,所以服务口碑才是第一。