有 如何通过http代理传递所有Python的流量? 但是,它不处理sock代理。我想使用 sock 代理,我们可以通过 ssh 隧道轻松获得它。
ssh -D 5005 user@server
你可以使用
socks
库,让你的 Python 代码通过 SOCKS 代理传递所有流量。这个库可以让你在套接字级别上指定代理,从而可以代理任何 TCP 连接,而不仅仅是 HTTP 流量。
以下是如何使用
socks
库通过 SOCKS 代理传递所有 Python 流量的步骤:
1. 安装
socks
库
pip install PySocks
2. 修改你的代码以使用
socks
库
你需要导入
socks
库,并使用
socks.setdefaultproxy()
函数设置默认代理。然后,你可以像往常一样使用
socket
模块,所有流量都将通过代理路由。
以下是一个例子,展示了如何通过运行在
localhost:5005
上的 SOCKS 代理建立与
example.com
的连接:
import socks
import socket
# 设置默认代理
socks.setdefaultproxy(socks.SOCKS5, "localhost", 5005)
# 创建一个套接字对象
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
# 连接到 example.com
s.connect(("example.com", 80))
# 发送 HTTP 请求
s.sendall(b"GET / HTTP/1.1\r\nHost: example.com\r\n\r\n")
# 接收响应
data = s.recv(1024)
# 打印响应
print(data.decode())
# 关闭连接
s.close()
解释:
-
socks.setdefaultproxy(socks.SOCKS5, "localhost", 5005)
:这行代码设置了默认代理。socks.SOCKS5
指定使用 SOCKS5 协议,"localhost"
和5005
分别是代理服务器的地址和端口。 -
在设置默认代理之后,所有使用
socket
模块建立的连接都将通过指定的 SOCKS 代理路由。
注意:
- 确保你的 SSH 隧道已正确设置并且代理正在运行。
-
你需要将
localhost
和5005
替换为你的实际代理服务器地址和端口。 -
此方法将代理所有使用
socket
模块的网络流量。如果你只想代理特定的连接,则需要在创建套接字对象后,使用socks.socksocket()
函数。
希望这对你有帮助!如果你有任何其他问题,请告诉我。
标签:python,proxy,tinyproxy From: 78733473