如何使用动态拨号VPS让爬虫软件破解IP限制

如何使用动态拨号VPS让爬虫软件破解IP限制

时间:2020-03-24 16:46 作者:admin 点击:
阅读模式 2020年3月23日 11:11 CCTIME飞象网

随着大数据技术的日新月异发展,自动化程度爬虫技术大大提高了工作效率,但python爬虫会遇到ip限制的问题,很多场景需要用到不同的IP地址才能工作,这个使用IP代理,或者是动态IP云主机,也就是拨号vps就就可以解决这个问题。

比如我们现在有一个网站,其网站内容是自己原创,用户都是可以通过我们前端页面手动搜索读取信息,但如果保护不好,就有可能恶意的竞争对手,用爬虫程序一个夜晚就可以把我们所有的数据全部抓走,然后复制出另一个新站点出来,为了保护我们的网站数据,包括服务器的承载能力也是有限的,经常听说有的服务器被爬虫爬死了,服务器将很容易崩溃。为了保护自己网站的安全和信息,我们会做一些机制,比如出口防火墙上对同一IP地址的连接请求数和带宽数量都会设置响应的阈值,一旦超过就拒绝爬行。

目前遇到的比较难搞的反爬虫技术就是ip大量的限制,如某个目标网站两次访问就被强制跳转到验证码页面。现在我们就要开始使用动态IP服务器来解决这个问题。

1:动态IP服务器原理

什么是动态IP服务器,其实原理很简单,我们将传统IDC的服务器直接光纤接入当地城市的运营商拨BAS,使服务器拥有固定IP和拨号双链路。

然后使用虚拟化靠技术将物理服务器划分成很多虚拟服务器,也就是VPS,用户端使用Windows远程桌面或者是ssh,还有VNC的方式来管理VPS,使用起来跟家的ADSL一样,通过在VPS的宽带连接里使用PPPOE的账户来拨号来更换IP。并且实现了更换IP不断远程桌面的效果。同样的,也可以提供linux系统,可以使用SSH客户端也可以连接上去,通过执行命令达到更换IP的目的。。

例如我们现在要攻克的R项目。他的页面每两次访问就会被强制跳转到验证码页面,,so,为了跳过验证码就得每两次访问就换一次ip。而且,最严重的就是要是面对这样高限制ip的,那么就不能在一台机器上通过多开爬虫客户端从而实现单机器的分布式爬虫。效率低很多。通过拨号的切换来实现更换IP,适用于各种验证、注册、跑号、投票、挂机、推广营销,投票刷票业务,并且IP重复率最低。

要想提高效率要需要很多台这样的服务器同时运行我们的爬虫程序了。

2:购买与租用

要知道具体内容可以搜关键词:”动态ip服务器”或者’拨号VPS”或者淘宝。

然后你就可以看到n多服务商,一般而言,你选购一个80-1000元/一个月的就还算可以用了,一般会采用vnc的方式远程桌面链接,很少有用linux系统的,下文中有分布式win7系统的配置指南。

在寻求服务商的时候,一定要拥有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了。

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

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

3:命令行自动更换ip

环境 win7下。使用rasdial 你在cmd控制台中系统自带有,输入

'rasdial /?‘ 出现帮助

print os.popen('rasdial /DISCONNECT').read()

time.sleep(3)

print os.popen('rasdial "设定的宽带名称" 帐号 密码').read()

print os.popen('rasdial').read()

time.sleep(1)

这个时候你需要在网上邻居中新建一个宽带链接,名字最好是英文,然后先手动在可视化界面验证一下是否可以上网。然后使用上诉代码,来用控制宽带网络一个循环会断开重链接,

有可能出现的问题是,手动建立的或者别的进程建立的链接,这个命令行无法断开,所以最好一台电脑之运行一个爬虫,并且断开连接之间最好有时间延时。

4:部署爬虫代码

在winxp的环境下使用python一般是32位的,分布式自然会需要python-mysql模块,以及redis模块。下面提供安装包和安装方式。

python2_jb51 解压后安装msi和exe都可以

redis-2.1.5-win32 提供redis的功能模块

redis-py-master 解压后,由控制台移动到目录下,运行 python setup.py (提前配一下python环境变量)

MySQL-python-1.2.3.win32-py2.7 解压直接安装

这样基本需要的就有了,关于分布式爬虫实在没接触过的看之前的几篇博文吧。

SCRAPY学习笔记七 结合redis构建分布式爬虫

5:分布式爬虫问题记录

目前出现的问题是:

1:mysql链接出现莫名中断问题,这个因为ip地址跟换太频繁,so,简单的用try来跳过错误,重新加入任务队列,然后重新跑,不让整个爬虫中断了就可以,

2:redis出现莫名链接中断问题。同上。

3:跟换ip太快导致ip并没有更换而是用原来的ip。延时久一点,设置为5s间隔为佳,网速链接不好宁愿爬虫请求之间的延时短点。也要让宽带断开与新连接时间长点。。

编 辑:T01