VPS利用TOR做HTTP代理池(自动更新IP)

0x00 背景

在写爬虫时大家都遇到过网站限制ip的情况,最简单的解决办法就是用代理,而自己搭建代理池成本高,不现实。网上公开的代理会有不稳定,泄露隐私等的情况出现,所以本文提供一种利用tor做HTTP代理池的方法来解决此问题。

0x01 安装Tor

首先就是安装Tor啦,debian系列使用

1
sudo apt-get install tor

RedHat系列使用

1
sudo yum install tor

安装完成后,进入修改配置文件,打开telnet控制功能,在/etc/tor/torrc 55行:删除前面#注释符

1
ControlPort 9051

完成后运行tor

1
/etc/init.d/tor

0x02 安装privoxy

因为tor只是一个socks代理,为了更方便的使用它,我们使用privoxy将其转换成http代理。
debian系列使用

1
sudo apt-get install privoxy

RedHat系列使用

1
sudo yum install privoxy

安装完后使用,修改一个其配置文件/etc/privoxy/config,其中的listen-address可以修改其监听的地址和端口,地址改为0.0.0.0外网即可直接访问,也可以就用127.0.0.1监听,然后用iptables映射到外网访问。在这里我就直接使用0.0.0.0了。

1
listen-address  0.0.0.0:8888

然后在配置文件的最后一行加上:

1
forward-socks5 / 127.0.0.1:9050 .

就大功告成,启动privoxy

1
/etc/init.d/privoxy start

0x03 自动更新IP

我们在本地为浏览器设置刚刚配好的http代理,端口8888

已经是Tor的IP了,下面就是现实自动更新IP的功能。

我们在配置Tor的时候打开了管理端口,所以可以通过telnet来管理tor,使用

1
echo -e 'AUTHENTICATE "password"、r\nSIGNAL NEWNYM\r\nQUIT' | nc 127.0.0.1 9051

即可从tor中重新申请一个IP,再去浏览器看看,发现IP已经是另外一个了。将它放入cron

1
*/15  * * * * echo -e 'AUTHENTICATE "password"、r\nSIGNAL NEWNYM\r\nQUIT' | nc 127.0.0.1 9051

从而实现15分钟更新一次IP。也可以使用php脚本从http请求来发送更换IP的命令,这里就不多说了。

0x04 完了

当然,tor存在:速度慢,IP池被拉入黑名单等等问题。