Sending UDP data through socks5 proxy in python

741 Views Asked by At

I can't afford to send UDP packets through SOCKS5 proxy. I'm using PySocks. Here is my code :

import socks

proxyIP = "whatever.proxy"
proxyPort = 8080
s = socks.socksocket(socket.AF_INET, socket.SOCK_DGRAM)
s.set_proxy(socks.SOCKS5, proxyIP, proxyPort)
a = s.sendto(b"GET / HTTP/1.1", ("example.com",80))

In my test, the destination is my nginx web server. The proxy is not mine, I only know it's a socks5 proxy. Here is the error I get :

Traceback (most recent call last):
  File "test.py", line 35, in <module>
    a = s.sendto(b"GET / HTTP/1.1", ("example.com",80))
  File "C:\Python38\lib\site-packages\socks.py", line 367, in sendto
    self.bind(("", 0))
  File "C:\Python38\lib\site-packages\socks.py", line 353, in bind
    _, relay = self._SOCKS5_request(self._proxyconn, UDP_ASSOCIATE, dst)
  File "C:\Python38\lib\site-packages\socks.py", line 524, in _SOCKS5_request
    resp = self._readall(reader, 3)
  File "C:\Python38\lib\site-packages\socks.py", line 278, in _readall
    raise GeneralProxyError("Connection closed unexpectedly")
socks.GeneralProxyError: Connection closed unexpectedly

I also tested with s.connect/s.sendall and I have exactly the same error.

Finally, I must say it works perfectly with TCP (SOCK_STREAM).

0

There are 0 best solutions below