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

        做了一个分布式的爬虫爬取知乎用户信息,将一个slave端放在了阿里云服务器上,爬了一个小时后提示“ip访问频繁,请进行验证用于确认这些请求不是自动发出的“。

        原来是爬的太快了,被知乎发现了,要求输入验证码,类似以下


爬虫ip访问频繁,要求服务器端滑动验证解决方案_第1张图片

        一般的图片验证码,可以用云打码或保存本地识别后再发送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访问频繁,要求服务器端滑动验证解决方案_第2张图片

你可能感兴趣的:(爬虫ip访问频繁,要求服务器端滑动验证解决方案)