美文网首页我爱编程
爬虫ip访问频繁,要求服务器端滑动验证解决方案

爬虫ip访问频繁,要求服务器端滑动验证解决方案

作者: karyuet | 来源:发表于2018-05-03 21:54 被阅读0次

            做了一个分布式的爬虫爬取知乎用户信息,将一个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已经解除限制了。

            访问百度查看ip也可以看到IP是阿里云的

    相关文章

      网友评论

        本文标题:爬虫ip访问频繁,要求服务器端滑动验证解决方案

        本文链接:https://www.haomeiwen.com/subject/crolrftx.html