ProxyPoolxSocks Socks代理池服务端自动化搭建工具
Github项目: https://github.com/Anyyy111/ProxyPoolxSocks
声明:本工具仅供以安全为目的的学习交流使用,任何人不得将其用于非法用途以及盈利等目的,否则后果自行承担。
0x01 介绍
作者: Anyyy
本文地址: https://www.anyiblog.top/2023/05/15/20230515/
ProxyPoolxSocks 是一个代理池服务端工具,可以导入自定义的socks节点,其作用是利用多个代理IP绕过WAF防火墙。
当前处于测试阶段,任何问题欢迎向我发送邮件:anyiguys@qq.com
工具支持Windows和Linux系统。
0x02 安装
注意python环境3.7以上即可。
服务端
git clone https://github.com/Anyyy111/ProxyPoolxSocks.git |
详细配置请参考 0x04 使用说明
客户端
服务端配置好之后,修改client.py,运行即可测试可用性。
详细配置请参考 0x04 使用说明
git clone https://github.com/Anyyy111/ProxyPoolxSocks.git |
测试可用之后可跳转至 0x05 常见工具代理配置
0x03 效果展示
0x04 使用说明
服务端配置
1.设置config.py参数
# -*- coding: utf-8 -*- |
配置文件我已经配置好了,你可以根据需求更改参数:
- username & password 服务端的连接账号密码,如果留空则代表不需要密码,如果填写必须二者都填写 且客户端连接要账密一致才能使用代理
- port 服务端搭起的端口,默认为12000,最终连接的端口就是这
- times 代理池之间代理切换的速度,单位为毫秒,times越小切换越快,尽量不要太小容易出问题。
- ServerLog 显示服务端的信息,设置为0则代表关闭 也就代表只显示客户端的连接信息。
- Record 开启日志文件记录,设置为0则代表关闭 日志文件存放在 Logs/Server_xxxx_xxxx.log
2.将socks节点添加至node.txt
node.txt是必须配置项,因为程序读取的节点就是来自这里。其中一行代表一个代理地址。
形式如下:
## socks://base64(username:password)@IP:PORT |
同样支持base64形式:
c29ja3M6Ly9OVFUxTlRVNk5UVTFOVFU9QDgueHh4Lnh4eC4xMjo1OTEwOCMzCnNvY2tzOi8vWVdGaFlXRTZZV0ZoWVdFPUA4Lnh4eC54eHguMTI6Mzg4MTAjMQpzb2NrczovL1YzRkRjazFvVlVsdFZUcGFSMjFsVVVOMGVVNWFAMTUyLnh4Lnh4eC4yMjU6Mzg4MjkKc29ja3M6Ly9OVFUxTlRVNk5UVTFOVFU9QDQ3Lnh4eC54eHguMjE0OjU5MTA4IzQ= |
你可以直接从V2ray等代理软件里复制节点,选中节点并复制
或者如果你购买了机场,你可以在你的代理软件里找到你订阅的服务器地址,然后在文件夹输入以下命令即可:
(一般订阅地址长这样:https://xxx.com/api/v1/client/subscribe?token=xxxxxx
)
curl https://xxx.com/api/v1/client/subscribe?token=xxxxxx -o node.txt |
*程序只会调用订阅地址中存在socks协议的部分,其它部分忽略。
注:测试的时候只拿了V2ray的socks节点来测试,如果你是其它的代理软件请将节点修改成符合以上的形式后写入node.txt中。
这里程序不提供免费的节点,如果你有socks节点就可以自定义添加。
3.运行run.py
在你的Windows/Linux系统下使用python3运行程序:
首次运行会读取节点并测试节点可用性,并会将可用的节点记录,等待下一次运行的时候可以直接调用可用节点:
等待测试完毕之后此时服务端就开启成功了:
然后找到你自己的 公网/内网 IP地址,客户端使用socks5协议连接你服务端的 IP、端口、用户名、密码 即可
这里以内网为例,我的服务端是192.168.31.226
客户端连接
客户端IP 192.168.31.225
1.client.py测试连接可用性
找到 Client-check/client.py
文件,该文件作用是验证连接可用性。
# -*- coding: utf-8 -*- |
*注意要根据客户端账密是否配置 来选择注释代码的部分。
配置完成后,运行脚本:
python client.py |
显示测试成功则代表客户端与服务端通信无误,这个时候你就可以将代理地址写入各个代理软件,开心耍了~
2.服务端回显
此时服务端会显示连接信息:
同时会在 Logs/Server_xxxx_xxxx.log 记录服务端连接信息
0x05 常见工具代理配置
Proxifier
代理服务器配置
检查可用性:
这里测试设置中要记得勾去这一选项,不然会检验失败
这里其实也算是程序的一点缺陷,后续慢慢补全。
规则设置
将想要使用代理的应用程序设置刚刚配置好的代理服务器即可
设置成这样就可以了,默认的localhost记得要勾上,不然会连不到 一个localhost 一个你想代理的应用。
测试
访问ifconfig.m发现已经是代理IP了
Firefox
PS: 代理工具不要同时开好几个,不然会出问题的
打开火狐浏览器,设置-代理中:
这里要关闭 使用 SOCKS v5 时代理 DNS 查询 这一选项,不然会连接不上。
ProxyChains4
修改proxychains4.conf配置文件:
vim /etc/proxychains4.conf |
在最后一行写入socks5代理地址
同时这里 strict_chain 要记得注释掉。
输入以下命令即可调用代理:
proxychains4 bash |
Python脚本调用代理
方法一
在你的脚本添加这些代码:
import socks |
方法二
使用requests库的时候可以设置proxies参数
import requests |
Curl调用
curl -x "socks5://0.0.0.0:12000" https://ifconfig.me // 无密码 |
0x06 程序原理
服务端运行时,程序首先会获取node.txt里的socks节点并测试socks节点可用性,然后添加到一个列表里,暂且称之为代理池;
之后是一个随机取的操作,将代理池的代理随机取出,并添加到另一个新的列表代理池中,当代理池代理用完之后就会换用新的代理池,这样就实现了循环代理;
使用socks模块将取出的代理服务器进行代理,同时服务端调用 server.py
,该脚本文件就是一个简单的socks5代理服务器实现。
根据搭起的socks5通道,将先前代理流量分配到这个通道中,就实现了以一个代理服务器来代理服务端和客户端之间的通信,那么这时候客户端得到的就是代理服务器的流量
那么再循环代理池的任一代理服务器给服务端,客户端请求服务端,这时候就实现了服务端的多个代理流量变换,客户端也就得到了一个 可任意更换代理频率的代理服务器流量
0x07 参考文章
Server.py
部分参考了这位大佬写的socks5代理代码:https://github.com/dyboy2017/DYPROXY/
原理讲的很详细,测试过来有些地方有bug我自己稍加修改了。
其它的代码部分都是用头发换的(
0x08 尾声End
第一次正式的提交Github项目,其实我本人还是喜欢开发的,只是比较懒不想传github XD,之后有空我会将更多的实用项目分享出来。如果你觉得我的工具还不错的话那么不妨点一个Star或者提交一个Issue,这些都是我前进的动力。
测试过来程序还是存在很多bug,包括我后续想添加vmess、Shadowsocks等节点,奈何网上相关的文章较少同时也是比较耗时的,导致这不是一个完整的项目,还需要慢慢改进修改。师傅们有什么想法可以交流下。
如果你觉得有说的不对的地方请指出 希望能让这个工具更加完善 更加适用。