您的位置:新闻资讯 >文章内容
爬虫怎么突破验证码限制
来源:karyuet 作者:admin 时间:2018-12-14 18:06:47

        除了常见的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已经解除限制了。 


相关文章内容简介
在线咨询
微信公众号

微信公众号

回到顶部