利用squid搭建VPS拨号代理池

缘由

由于爬虫的需要,仅仅使用购买的动态ip无法满足特定的采集需求,比如有的网站需要先通过滑块验证等手段验证你的IP,只有通过验证的IP网站才认为是正常的IP,并且验证通过后,如果访问过多,又会把你的IP封掉。碰到这种情况,我们可以使用VPS来动态拨号搭建代理池,先在网站上把IP验证通过,再利用通过验证的IP对网站进行采集。如果IP被封从代理池删除掉,重新拨号验证就行。这种方式既能保证高度可用,又可以实现自由控制拨号切换。

如何搭建VPS代理池

有很多卖VPS服务器的网站,一般联系客服充值购买就行,一台一个月100元左右。这些服务器上面一般都给配置好了拨号命令:

  • adsl-start 拨号获得新的IP
  • adsl-stop 断开拨号
  • adsl-status 拨号连接状态

我们可以写一个脚本来定时执行这些命令就可以拨号产生代理IP了,当然脚本需要我们自己写。

配置VPS服务器

VPS服务器利用adsl-start命令拨号成功获得的IP并不能直接被我们拿来使用,我们需要安装Squid或者TinyProxy代理服务软件。

  • TinyProxy比较小众,虽然没有Squid的功能丰富,但是小巧简单,也能满足普通用户的需求。
  • Squid 是一款优秀的代理软件,有很丰富的ACL管理功能,虽然squid很强大,但配置比较繁琐。

简单介绍squid的安装和使用:

  • 安装命令:yum install squid -y。 如果缺少依赖项的话就按照提示,缺少什么安装什么。

  • 配置squid.conf:
    Squid的配置在/etc/squid/squid.conf下面,只需要改变下面几个配置即可:

    #允许的客户端ip
    #acl allcomputers src 0.0.0.0/0.0.0.0
    #将http_access deny all注释或者删除
    #http_access deny all
    http_access allow all
    http_port 12345
    

    如果需要用户名密码认证,使用HTTPBasicAuth 的方式。 需要htpasswd工具来创建passwd文件 (安装Apache软件,此工具会附带安装, 或者使用 apt-get/yum install http-tools的方式安装此工具)

    1. 创建用户‘proxy_username’ 的命令如下:
      htpasswd -c /etc/squid/passwd proxy_username
      输入相应的密码后,生成 文件/etc/squid/passwd
    2. 将下述代码添加到/etc/squid/squid.conf 中即配置实用验证的功能:
      auth_param basicprogram /usr/lib64/squid/basic_ncsa_auth /etc/squid/passwd
      acl auth_user proxy_auth REQUIRED
      http_access allow auth_user
      

    在就是如果配置成高匿代理的话,可以添加一下配置

    forwarded_for off
    request_header_access X-Forwarded-For deny all
    request_header_access Via deny all
    request_header_access All allow all
    
  • 关闭防火墙

    systemctl stop firewalld
    systemctl disable firewalld
    systemctl enable squid.service
    
  • 启动squid服务

    squid -z
    squid -k parse
    systemctl start squid.service
    

通过以上步骤,VPS服务器上拨号获得的ip就可以被我们拿来放在代理中使用了。我们可以在每一台VPS服务器上部署一个脚本,来控制拨号,获得ip并把ip写入redis代理池中,爬虫从redis代理池中随机取ip就可以了。
最后,推荐一个可以批量控制多台服务器的工具:salt-ssh,是自动化运维软件SaltStack的组件,不需要安装master和minion ,用salt-ssh实现以上批量安装配置非常方便,否则,我们一台一台的配置,还不累死!

你可能感兴趣的:(爬虫)