现在有两台windows电脑 其中A电脑拥有测试环境的访问权限,B电脑有测试环境和生产环境的访问权限,由于经常需要用到生产的访问权限所以希望在B电脑搭建一个代理服务,在A电脑中设置代理电脑为B的ip,所有流量都由B进行转发访问。
项目介绍
Proxy.py 是一个轻量级、高性能的 HTTP 代理服务器,旨在提供一个快速、可扩展的代理解决方案。它支持多种功能,如 TLS 拦截、DNS-over-HTTPS、反向代理、Web 服务器框架等。Proxy.py 的设计目标是成为一个零依赖、易于集成和扩展的代理服务器,适用于各种场景,包括开发、测试和生产环境。
Github
https://github.com/abhinavsingh/proxy.py
安装
pip install proxy.py
启动代理服务器
proxy --hostname 0.0.0.0 --port 9999
编辑一键启动脚本
Start_proxy.py
import subprocess
def start(port):
subprocess.Popen(['cmd','/c',f'proxy --hostname 0.0.0.0 --port {port}'],creationflags=subprocess.CREATE_NO_WINDOW)
if __name__ == '__main__':
start(9999)
Stop_proxy.py
import subprocess
import re
def kill_proxy(port):
# 执行netstat命令获取进程信息
cmd = f"netstat -ano | findstr 0.0.0.0:{port}"
result = subprocess.run(cmd, shell=True, capture_output=True, text=True)
# 正则匹配PID
pid_pattern = re.compile(r"LISTENING\s+(\d+)")
pids = pid_pattern.findall(result.stdout)
if not pids:
print(f"未找到监听0.0.0.0:{port}的进程")
return
# 终止所有匹配的进程
for pid in set(pids): # 去重
try:
subprocess.run(f"taskkill /F /T /PID {pid}", shell=True, check=True)
print(f"已终止PID为{pid}的进程")
except subprocess.CalledProcessError as e:
print(f"终止进程{pid}失败: {e}")
if __name__ == "__main__":
kill_proxy(9999)
编译二进制执行脚本
将源码编译成二进制可以有效防止串改或发现真正用途,编译后会在__pycache__目录下生成pyc文件
import py_compile
py_compile.compile('start_proxy.py')
py_compile.compile('stop_proxy.py')
Start.bat
python start_proxy.pyc
Stop.bat
python stop_proxy.pyc