Anorov/PySocks

PySocks doesn't support IPv6: ('::', 443, 0, 0)

KelvinF97 opened this issue · 1 comments

---------------------------------------------------------------------------
OSError                                   Traceback (most recent call last)
~/.pyenv/versions/3.7.12/lib/python3.7/urllib/request.py in do_open(self, http_class, req, **http_conn_args)
   1349                 h.request(req.get_method(), req.selector, req.data, headers,
-> 1350                           encode_chunked=req.has_header('Transfer-encoding'))
   1351             except OSError as err: # timeout error

~/.pyenv/versions/3.7.12/lib/python3.7/http/client.py in request(self, method, url, body, headers, encode_chunked)
   1280         """Send a complete request to the server."""
-> 1281         self._send_request(method, url, body, headers, encode_chunked)
   1282 

~/.pyenv/versions/3.7.12/lib/python3.7/http/client.py in _send_request(self, method, url, body, headers, encode_chunked)
   1326             body = _encode(body, 'body')
-> 1327         self.endheaders(body, encode_chunked=encode_chunked)
   1328 

~/.pyenv/versions/3.7.12/lib/python3.7/http/client.py in endheaders(self, message_body, encode_chunked)
   1275             raise CannotSendHeader()
-> 1276         self._send_output(message_body, encode_chunked=encode_chunked)
   1277 

~/.pyenv/versions/3.7.12/lib/python3.7/http/client.py in _send_output(self, message_body, encode_chunked)
   1035         del self._buffer[:]
-> 1036         self.send(msg)
   1037 

~/.pyenv/versions/3.7.12/lib/python3.7/http/client.py in send(self, data)
    975             if self.auto_open:
--> 976                 self.connect()
    977             else:

~/.pyenv/versions/3.7.12/lib/python3.7/http/client.py in connect(self)
   1442 
-> 1443             super().connect()
   1444 

~/.pyenv/versions/3.7.12/lib/python3.7/http/client.py in connect(self)
    947         self.sock = self._create_connection(
--> 948             (self.host,self.port), self.timeout, self.source_address)
    949         self.sock.setsockopt(socket.IPPROTO_TCP, socket.TCP_NODELAY, 1)

~/.pyenv/versions/3.7.12/lib/python3.7/socket.py in create_connection(address, timeout, source_address)
    727         try:
--> 728             raise err
    729         finally:

~/.pyenv/versions/3.7.12/lib/python3.7/socket.py in create_connection(address, timeout, source_address)
    715                 sock.bind(source_address)
--> 716             sock.connect(sa)
    717             # Break explicitly a reference cycle

~/.environments/model_cuda/lib/python3.7/site-packages/socks.py in wrapper(*args, **kwargs)
     46                 self.setblocking(True)
---> 47             return function(*args, **kwargs)
     48         except Exception as e:

~/.environments/model_cuda/lib/python3.7/site-packages/socks.py in connect(self, dest_pair, catch_errors)
    742             raise socket.error("PySocks doesn't support IPv6: %s"
--> 743                                % str(dest_pair))
    744 

OSError: PySocks doesn't support IPv6: ('::', 443, 0, 0)

During handling of the above exception, another exception occurred:

URLError                                  Traceback (most recent call last)
/tmp/ipykernel_1957/3890847748.py in <module>
      6     print("Downloading", filename)
      7     url = DOWNLOAD_ROOT + "datasets/lifesat/" + filename
----> 8     urllib.request.urlretrieve(url, datapath + filename)

~/.pyenv/versions/3.7.12/lib/python3.7/urllib/request.py in urlretrieve(url, filename, reporthook, data)
    245     url_type, path = splittype(url)
    246 
--> 247     with contextlib.closing(urlopen(url, data)) as fp:
    248         headers = fp.info()
    249 

~/.pyenv/versions/3.7.12/lib/python3.7/urllib/request.py in urlopen(url, data, timeout, cafile, capath, cadefault, context)
    220     else:
    221         opener = _opener
--> 222     return opener.open(url, data, timeout)
    223 
    224 def install_opener(opener):

~/.pyenv/versions/3.7.12/lib/python3.7/urllib/request.py in open(self, fullurl, data, timeout)
    523             req = meth(req)
    524 
--> 525         response = self._open(req, data)
    526 
    527         # post-process response

~/.pyenv/versions/3.7.12/lib/python3.7/urllib/request.py in _open(self, req, data)
    541         protocol = req.type
    542         result = self._call_chain(self.handle_open, protocol, protocol +
--> 543                                   '_open', req)
    544         if result:
    545             return result

~/.pyenv/versions/3.7.12/lib/python3.7/urllib/request.py in _call_chain(self, chain, kind, meth_name, *args)
    501         for handler in handlers:
    502             func = getattr(handler, meth_name)
--> 503             result = func(*args)
    504             if result is not None:
    505                 return result

~/.pyenv/versions/3.7.12/lib/python3.7/urllib/request.py in https_open(self, req)
   1391         def https_open(self, req):
   1392             return self.do_open(http.client.HTTPSConnection, req,
-> 1393                 context=self._context, check_hostname=self._check_hostname)
   1394 
   1395         https_request = AbstractHTTPHandler.do_request_

~/.pyenv/versions/3.7.12/lib/python3.7/urllib/request.py in do_open(self, http_class, req, **http_conn_args)
   1350                           encode_chunked=req.has_header('Transfer-encoding'))
   1351             except OSError as err: # timeout error
-> 1352                 raise URLError(err)
   1353             r = h.getresponse()
   1354         except:

URLError: <urlopen error PySocks doesn't support IPv6: ('::', 443, 0, 0)>

I find the way to solve ipv6 socks5 proxy.
refer to:
woo200/sockslib#1 (comment)

The author of sockslib was very kind and helped me solve this problem.