天天看點

利用squid搭建ip代理池

緣由

由于爬蟲的需要,僅僅使用購買的動态ip無法滿足特定的采集需求,比如有的網站需要先通過滑塊驗證等手段驗證你的IP,隻有通過驗證的IP網站才認為是正常的IP,并且驗證通過後,如果通路過多,又會把你的IP封掉。碰到這種情況,我們可以使用撥号伺服器來動态撥号搭建代理池,先在網站上把IP驗證通過,再利用通過驗證的IP對網站進行采集。如果IP被封從代理池删除掉,重新撥号驗證就行。這種方式既能保證高度可用,又可以實作自由控制撥号切換。

如何搭建撥号代理池

有很多賣撥号伺服器的網站,一般聯系客服充值購買就行,一台一個月100元左右。這些伺服器上面一般都給配置好了撥号指令:

  • adsl-start 撥号獲得新的IP
  • adsl-stop 斷開撥号
  • adsl-status 撥接上網狀态

我們可以寫一個腳本來定時執行這些指令就可以撥号産生代理IP了,當然腳本需要我們自己寫。

配置撥号伺服器

撥号伺服器利用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
               

通過以上步驟,撥号伺服器上撥号獲得的ip就可以被我們拿來放在代理中使用了。我們可以在每一台VPS伺服器上部署一個腳本,來控制撥号,獲得ip并把ip寫入redis代理池中,爬蟲從redis代理池中随機取ip就可以了。

最後,推薦一個可以批量控制多台伺服器的工具:salt-ssh,是自動化運維軟體SaltStack的元件,不需要安裝master和minion ,用salt-ssh實作以上批量安裝配置非常友善,否則,我們一台一台的配置,還不累死!