在Python中使用SOCKS5代理代理UDP

时间:2012-06-13 16:21:56

标签: python proxy socks

是否可以使用任何SOCKS客户端lib在Python中通过SOCKS5代理发送UDP数据报? SocksiPy似乎没有用,或者我只是错误地使用它。以下代码不起作用,它尝试直接连接到目标:

s = socks.socksocket ( socket.AF_INET, socket.SOCK_DGRAM )
s.setproxy(socks.PROXY_TYPE_SOCKS5,"socks.proxy.lan")
s.sendto ( payload, ( ip, port ) )

如果我将SOCK_DGRAM更改为SOCK_STREAM代码也无效,则不会尝试在任何地方进行连接。

2 个答案:

答案 0 :(得分:2)

您是否尝试过使用connect()和send()而不是sendto()?从SocksiPy源代码来看,没有实现无连接模式。

修改

req = struct.pack('BBB', 0x05, 0x01, 0x00)

TCP流连接(0x01)似乎是硬编码的。 SocksiPy不会起作用。

答案 1 :(得分:0)

你试过这个:

socks.setdefaultproxy(socks.PROXY_TYPE_SOCKS5, "socks.proxy.lan", 8080, True)

使用端口替换8080,如果要启用rdns,则“True”为True。

如果您使用的是Python 3及更高版本,我建议您使用PySocks,它将是

socks.set_default_proxy(socks.PROXY_TYPE_SOCKS5, "socks.proxy.lan", 8080, True)