一、前言
之前有过类似场景需求,研究了下如何将socks(ss/ssr)
+ privoxy
+ tor
配合起来,实现可控时间变换代理IP,同时配合二级甚至多级代理,做到更好的隐匿性访问,代理原理如下:
tor
将socks
转发过来的请求经过加密,然后自己再监听一个端口对外提供服务,privoxy
则负责引用该端口,将socks
代理转发为http/https
代理,并且具备网页内容、管理Cookie、控制访问、去广告等功能,但本文重点在于如何将三方配合实现自定义时间内切换节点IP。
所以大前提是你的系统已经存在socks
代理,如ss/ssr
等,没有的话请先移步至这篇文章,同理不支持代理icmp
,需要具备代理icmp
硬性需求,更推荐你用ipsec
等vpn软件实现。
二、特性与建议
-
最小支持10s切换一次IP。
-
全球tor节点随机跳转(截止到2021年2月底有7000+节点,参考tor官网:
https://metrics.torproject.org/relayflags.html
)
-
因为全球节点随机跳转,物理链路无法控制,如果跳转到较偏远地区,速度也会相对偏慢,因此你能做的就是保证你的socks代理速度优秀即可。
-
使用代理执行某些需要长时间才能完成的操作,可适当将切换时间调大(如nmap、openvas等安全扫描场景)。
-
仅供学习研究之用,请勿用于非法用途,使用本功能带来的相关法律责任本站概不负责,用户自行承担相关法律责任。
三、开始部署
socks
、tor
、privoxy
如何安装本文不再赘述,安装个软件都不会你还能干点啥,我甚至不觉得你会有类似需求。
要注意的是,
tor
不需要安装GUI浏览器界面,安装tor本身即可(xxx install tor
)。
此项目我已经开源放到了github: https://github.com/RokasUrbelis/activeproxy
,如果对你有帮助,希望不要吝啬手中的star
,同时也期望你能提交pull requests
,让这个项目更加强大!
1)克隆到本地
$ git clone https://github.com/RokasUrbelis/activeproxy
2)执行start.sh
此脚本写成交互式,包含启动、停止、获取实时IP:
$ bash start.sh
1.start service
2.getip
3.stop service
4.exit
shell>1 #输入1回车即可
Plese input socks(shadowsocks or others) listening port(Default 1080):1081 #输入你socks监听的端口,默认1080
Listening Port=1081 [ OK ]
How many seconds to change the IP(min=10,Defalut=10):600 #输入切换IP的间隔时间,默认10s,最低10s
Switch IP every 6000 seconds [ OK ]
[info 02-28 12:19:12] Tor is starting [ OK ]
[info 02-28 12:19:13] Privoxy is starting [ OK ]
Bye~
$ ps -ef|egrep 'tor|privoxy' #查看进程是否正常运行
root 24833 1 0 12:31 pts/0 00:00:00 tor
root 24837 1 0 12:31 ? 00:00:00 privoxy /etc/privoxy/config
root 24939 19200 0 12:33 pts/0 00:00:00 grep -E tor|privoxy
$
同时提供了python支持(python3),shell和python选用其一即可,不需要重复执行
$ python3 start.py
How many seconds to change the IP(min=10,default=60):60
[Info:2021-02-28 12:31:44] privoxy is starting [OK]
[Info:2021-02-28 12:31:44] tor is starting [OK]
$
3)执行comon.sh
此脚本用于设置http代理,通过privoxy出去:
$ source comon.sh
到此部署已经完毕。
4)取消代理
$ bash start.sh
1.start service
2.getip
3.stop service
4.exit
shell>3 #键入3停止服务
STOP SERVICE [ OK ]
Bye~
$ souce unset.sh #取消http代理
四、实时获取IP及验证
在comon.sh
里面写了一个getip
函数,在你执行source comon.sh
后,执行getip
即可实时看到你当前代理IP,运行截图:
同时,以下几个命令也能实时获取你的外网IP:
$ curl ident.me
$ curl vip.linux-code.com
$ curl ifconfig.co