Python:爬虫利器_自动更换ip

爬虫利器:自动更换ip

使用云vps定时或不定时进行重新拨号,达到更换ip的目的。代理软件使用squid或者tinproxy

注册vps

市面上的云vps很多,笔者用的最多的就是万变云:http://www.wanbianyun.com/

进入网站。注册成功之后,选择上方的动态vps,选择地区拨号产品(千万不能选择混拨)[充值一块,无限试用]。

话不多少,开通一个vps,进入安装操作系统,安装centos,然后静候初始化成功,此时,安装成功之后,你会发现,你拥有了vps的ip,port,用户(root),密码(开始的时候你自己设置的),宽带账号,密码。这些是必须的。

此刻,你已经初始化成功了,接下来,我们使用python程序一键配置。

拨号
ppp.sh 宽带账号 宽带密码 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))

此刻拨号成功,并且获取到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')
重启服务,关闭防火墙,获得ip
systemctl stop firewalld  # 关闭防火墙 
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, '拨号成功,获取到ip_port', ip_port)

笔者使用的端口固定为1080,在代理软件的配置文件中更改。见下方。

可将ip_port储存到redis,以供使用
proxy_pool.set_string('proxy', ip_port)  # 这部分功能请自行实现。基本思路,获取ip_port之后储存至redis,开web服务以供使用。
ssh_client.close()
补充
# 宽带连接不上的时候:
pppoe-stop
/bin/systemctl stop NetworkManager.service
ifup ppp0

# 在不同的操作系统中拨号的方式不同。选择centos的原因是因为内置了一键拨号的脚本。
centos:ppp.sh 宽带账号 宽带密码 eth1
ubuntu:pppoeconf > 等待加载完成之后 > 删除username,键入宽带账号 > ok > 键入宽带密码 > 一路yes > 成功拨号 (配置过一次之后,以后可以使用pon dsl-provider 进行一键拨号)
Windows:远程桌面进行手动拨号

# 代理软件配置文件,配置完成请重新启动服务。
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 (自定义端口)
    # 添加:设置代理为高匿
    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

你可能感兴趣的:(Python:爬虫利器_自动更换ip)