爬蟲利器:自動(dòng)更換ip
使用云vps定時(shí)或不定時(shí)進(jìn)行重新?lián)芴?hào)帝嗡,達(dá)到更換ip的目的。代理軟件使用squid或者tinproxy
注冊vps
市面上的云vps很多坟桅,筆者用的最多的就是萬變云:http://www.wanbianyun.com/
進(jìn)入網(wǎng)站华望。注冊成功之后,選擇上方的動(dòng)態(tài)vps仅乓,選擇地區(qū)撥號(hào)產(chǎn)品(千萬不能選擇混撥)[充值一塊筒严,無限試用]政恍。
話不多少程拭,開通一個(gè)vps讼渊,進(jìn)入安裝操作系統(tǒng),安裝centos裕偿,然后靜候初始化成功洞慎,此時(shí),安裝成功之后嘿棘,你會(huì)發(fā)現(xiàn)劲腿,你擁有了vps的ip,port鸟妙,用戶(root)焦人,密碼(開始的時(shí)候你自己設(shè)置的),寬帶賬號(hào)重父,密碼花椭。這些是必須的。
此刻房午,你已經(jīng)初始化成功了矿辽,接下來,我們使用python程序一鍵配置郭厌。
撥號(hào)
ppp.sh 寬帶賬號(hào) 寬帶密碼 eth1
import paramiko
import re
ssh_client = paramiko.SSHClient()
ssh_client.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh_client.connect(vps_host, vps_port, vps_user, vps_pwd)
sftp = ssh_client.open_sftp()
sftp.put('./epel.repo', '/etc/yum.repos.d/epel.repo') # 替換鏡像配置')
stdin, stdout, stderr = ssh_client.exec_command('ppp.sh %s %s eth1' % (kuandai_name, kuandai_pwd))
此刻撥號(hào)成功袋倔,并且獲取到ip
安裝其他依賴包
安裝 yum install -y openssl
方案一:
安裝 yum install -y tinyproxy
替換文件 tinyproxy.conf > /etc/tinyproxy/tinyproxy.conf
重啟 service tinyproxy restart
方案二:
安裝 yum install -y squid
替換文件 squid.conf > /etc/squid/squid.conf
重啟 systemctl restart squid
stdin, stdout, stderr = ssh_client.exec_command('yum install -y squid')
stdin, stdout, stderr = ssh_client.exec_command('yum install -y openssl')
sftp.put('./squid.conf', '/etc/squid/squid.conf')
重啟服務(wù),關(guān)閉防火墻折柠,獲得ip
systemctl stop firewalld # 關(guān)閉防火墻
stdin, stdout, stderr = ssh_client.exec_command('systemctl restart squid')
stdin, stdout, stderr = ssh_client.exec_command('systemctl stop firewalld')
stdin, stdout, stderr = ssh_client.exec_command('ifconfig')
result = stdout.read().decode('utf-8')
parttern = 'ppp0: .*inet (.*?) netmask'
ip_port = ''.join(re.findall(parttern, result, re.DOTALL)) + ':1080'
print(vps_host, '撥號(hào)成功宾娜,獲取到ip_port', ip_port)
筆者使用的端口固定為1080,在代理軟件的配置文件中更改扇售。見下方前塔。
可將ip_port儲(chǔ)存到redis,以供使用
proxy_pool.set_string('proxy', ip_port) # 這部分功能請自行實(shí)現(xiàn)承冰≈龈基本思路,獲取ip_port之后儲(chǔ)存至redis巷懈,開web服務(wù)以供使用该抒。
ssh_client.close()
補(bǔ)充
# 寬帶連接不上的時(shí)候:
pppoe-stop
/bin/systemctl stop NetworkManager.service
ifup ppp0
# 在不同的操作系統(tǒng)中撥號(hào)的方式不同。選擇centos的原因是因?yàn)閮?nèi)置了一鍵撥號(hào)的腳本顶燕。
centos:ppp.sh 寬帶賬號(hào) 寬帶密碼 eth1
ubuntu:pppoeconf > 等待加載完成之后 > 刪除username凑保,鍵入寬帶賬號(hào) > ok > 鍵入寬帶密碼 > 一路yes > 成功撥號(hào) (配置過一次之后,以后可以使用pon dsl-provider 進(jìn)行一鍵撥號(hào))
Windows:遠(yuǎn)程桌面進(jìn)行手動(dòng)撥號(hào)
# 代理軟件配置文件涌攻,配置完成請重新啟動(dòng)服務(wù)欧引。
squid:
# vi /etc/squid/squid.conf
# Deny requests to certain unsafe ports
http_access allow !Safe_ports
# Deny CONNECT to other than secure SSL ports
http_access allow CONNECT !SSL_ports
# And finally deny all other access to this proxy
http_access allow all
# Squid normally listens to port 3128
http_port 1080 (自定義端口)
# 添加:設(shè)置代理為高匿
request_header_access Via deny all
request_header_access X-Forwarded-For deny all
tinproxy:
# vi /etc/tinyproxy/tinyproxy.conf
Port 1080 (自定義端口)
# 注釋以下這行
# Allow 127.0.0.1