Proxying UDP over SOCKS5 proxy in Python

北慕城南 提交于 2019-12-10 04:19:12

问题


Is it possible to send UDP datagrams over SOCKS5 proxy in Python using any SOCKS client lib? SocksiPy does not seem to work or maybe I am just using it wrong. The following code does not work, it tries to connect to the destination directly:

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

If I change SOCK_DGRAM to SOCK_STREAM the code does not work either, it does not try to connect anywhere then.


回答1:


Have you tried to use connect() and send() instead of sendto()? Judging from the SocksiPy source code, connectionless mode isn't implemented.

Edit:

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

TCP stream connection (0x01) seems to be hardcoded here. SocksiPy as it is won't work.




回答2:


Have you tried this:

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

replace 8080 with the port and "True" is True if you want rdns enabled.

If you are using Python version 3 and above i suggest you use PySocks and it would be

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


来源:https://stackoverflow.com/questions/11019179/proxying-udp-over-socks5-proxy-in-python

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!