800819103
在线客服,实时响应qq群
在线客服,实时响应客服电话
13318873961除了常见的IP限制,爬虫在采集数据时还会遇到验证码研制,特别是12306的验证码,大家都深有体会,难倒了多少人啊!
但神奇的是,难倒了大批人,爬虫的速度还是那么的快,这是为什么呢?爬虫怎么突破验证码限制的?下面小编介绍一下案例:
做了一个分布式的爬虫爬取知乎用户信息,将一个slave端放在了阿里云服务器上,爬了一个小时后提示“ip访问频繁,请进行验证用于确认这些请求不是自动发出的“。
原来是爬的太快了,被知乎发现了,要求输入验证码,类似以下
一般的图片验证码,可以用云打码或保存本地识别后再发送post请求之类的,这种拖动滑块验证码在无界面的centos系统上就很难受了。
研究了半天终于找到了解决方案:将阿里云服务器作为代理服务器,本地浏览器使用代理ip登陆知乎,完成验证,ip解除禁止。
使用squid:
安装:yum install squid
配置:
1.vi /etc/squid/squid.conf, 在结尾处追加:
dns_nameservers 8.8.8.8
http_port 8000
http_access allow all
cache_mem 60 MB
2.注释掉默认的http_access deny all
创建squid交换目录:
cd /usr/sbin/
./squid -z
启动squid、查看端口状态:
./squid
netstat -ntl
停止squid:
./squid -k shutdown
此时,将浏览器的代理IP设置为你服务器的IP,端口设置成上面的8000,使用chrome直接设置代理会不管用,这里选择用selenium
from seleniumimport webdriver
chromeOptions = webdriver.ChromeOptions()
chromeOptions.add_argument("--proxy-server=http://服务器ip:8000")
url= 'https://www.zhihu.com'
driver = webdriver.Chrome(chrome_options = chromeOptions)
driver.get(url)
time.sleep(60)
等网页打开滑动进行验证,此时ip已经解除限制了。