torpyorg / torpy

Pure python Tor client implementation

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Torpy not working on windows: socket.timeout: timed out / [WinError 10054]

do-me opened this issue · comments

Torpy is not running anymore on Windows. The following minimal example always results in a timeout.

from torpy.http.requests import TorRequests
with TorRequests() as tor_requests:
    with tor_requests.get_session() as sess:
        response = sess.get("https://www.google.com/")
        print(response)

Returns:

timed out
ERROR:root:[ignored]
Traceback (most recent call last):
  File "C:\Users\dome\Anaconda3\lib\site-packages\torpy\cell_socket.py", line 63, in connect
    self._socket.connect((self._router.ip, self._router.or_port))
  File "C:\Users\dome\Anaconda3\lib\ssl.py", line 1172, in connect
    self._real_connect(addr, False)
  File "C:\Users\dome\Anaconda3\lib\ssl.py", line 1159, in _real_connect
    super().connect(addr)
socket.timeout: timed out

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "C:\Users\dome\Anaconda3\lib\site-packages\torpy\utils.py", line 78, in newfn
    return func(*args, **kwargs)
  File "C:\Users\dome\Anaconda3\lib\site-packages\torpy\consesus.py", line 163, in renew
    raw_string = self._authorities.download_consensus(prev_hash)
  File "C:\Users\dome\Anaconda3\lib\site-packages\torpy\consesus.py", line 105, in download_consensus
    with TorGuard(authority) as guard:
  File "C:\Users\dome\Anaconda3\lib\site-packages\torpy\guard.py", line 65, in __init__
    self.__tor_socket.connect()
  File "C:\Users\dome\Anaconda3\lib\site-packages\torpy\cell_socket.py", line 69, in connect
    raise TorSocketConnectError(e)
torpy.cell_socket.TorSocketConnectError: timed out
WARNING:torpy.utils:Retry with another authority...
ERROR:torpy.cell_socket:timed out
ERROR:root:[ignored]
Traceback (most recent call last):
  File "C:\Users\dome\Anaconda3\lib\site-packages\torpy\cell_socket.py", line 63, in connect
    self._socket.connect((self._router.ip, self._router.or_port))
  File "C:\Users\dome\Anaconda3\lib\ssl.py", line 1172, in connect
    self._real_connect(addr, False)
  File "C:\Users\dome\Anaconda3\lib\ssl.py", line 1159, in _real_connect
    super().connect(addr)
socket.timeout: timed out

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "C:\Users\dome\Anaconda3\lib\site-packages\torpy\utils.py", line 78, in newfn
    return func(*args, **kwargs)
  File "C:\Users\dome\Anaconda3\lib\site-packages\torpy\consesus.py", line 175, in renew
    if not self.verify(new_doc):
  File "C:\Users\dome\Anaconda3\lib\site-packages\torpy\consesus.py", line 200, in verify
    pubkey = self._get_pubkey(sign['identity'], sign['signing_key_digest'])
  File "C:\Users\dome\Anaconda3\lib\site-packages\torpy\consesus.py", line 206, in _get_pubkey
    key_certificate = self._authorities.download_fp_sk(identity, signing_key_digest)
  File "C:\Users\dome\Anaconda3\lib\site-packages\torpy\consesus.py", line 121, in download_fp_sk
    with TorGuard(authority) as guard:
  File "C:\Users\dome\Anaconda3\lib\site-packages\torpy\guard.py", line 65, in __init__
    self.__tor_socket.connect()
  File "C:\Users\dome\Anaconda3\lib\site-packages\torpy\cell_socket.py", line 69, in connect
    raise TorSocketConnectError(e)
torpy.cell_socket.TorSocketConnectError: timed out
WARNING:torpy.utils:Retry with another authority...
ERROR:torpy.cell_socket:timed out
ERROR:root:[ignored]
Traceback (most recent call last):
  File "C:\Users\dome\Anaconda3\lib\site-packages\torpy\cell_socket.py", line 63, in connect
    self._socket.connect((self._router.ip, self._router.or_port))
  File "C:\Users\dome\Anaconda3\lib\ssl.py", line 1172, in connect
    self._real_connect(addr, False)
  File "C:\Users\dome\Anaconda3\lib\ssl.py", line 1159, in _real_connect
    super().connect(addr)
socket.timeout: timed out

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "C:\Users\dome\Anaconda3\lib\site-packages\torpy\utils.py", line 78, in newfn
    return func(*args, **kwargs)
  File "C:\Users\dome\Anaconda3\lib\site-packages\torpy\consesus.py", line 163, in renew
    raw_string = self._authorities.download_consensus(prev_hash)
  File "C:\Users\dome\Anaconda3\lib\site-packages\torpy\consesus.py", line 105, in download_consensus
    with TorGuard(authority) as guard:
  File "C:\Users\dome\Anaconda3\lib\site-packages\torpy\guard.py", line 65, in __init__
    self.__tor_socket.connect()
  File "C:\Users\dome\Anaconda3\lib\site-packages\torpy\cell_socket.py", line 69, in connect
    raise TorSocketConnectError(e)
torpy.cell_socket.TorSocketConnectError: timed out
WARNING:torpy.utils:Retry with another authority...
Traceback (most recent call last):
    self._socket.connect((self._router.ip, self._router.or_port))
  File "C:\Users\dome\Anaconda3\lib\ssl.py", line 1172, in connect
    self._real_connect(addr, False)
  File "C:\Users\dome\Anaconda3\lib\ssl.py", line 1159, in _real_connect
    super().connect(addr)
socket.timeout: timed out

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "C:\Users\dome\Anaconda3\lib\site-packages\torpy\http\requests.py", line 35, in __enter__
    self._tor = TorClient(auth_data=self._auth_data)
  File "C:\Users\dome\Anaconda3\lib\site-packages\torpy\client.py", line 37, in __init__
    self._consensus = consensus or TorConsensus()
  File "C:\Users\dome\Anaconda3\lib\site-packages\torpy\consesus.py", line 146, in __init__
    self.renew()
  File "C:\Users\dome\Anaconda3\lib\site-packages\torpy\utils.py", line 78, in newfn
    return func(*args, **kwargs)
  File "C:\Users\dome\Anaconda3\lib\site-packages\torpy\consesus.py", line 163, in renew
    raw_string = self._authorities.download_consensus(prev_hash)
  File "C:\Users\dome\Anaconda3\lib\site-packages\torpy\consesus.py", line 105, in download_consensus
    with TorGuard(authority) as guard:
  File "C:\Users\dome\Anaconda3\lib\site-packages\torpy\guard.py", line 65, in __init__
    self.__tor_socket.connect()
  File "C:\Users\dome\Anaconda3\lib\site-packages\torpy\cell_socket.py", line 69, in connect
    raise TorSocketConnectError(e)
torpy.cell_socket.TorSocketConnectError: timed out

If on Jupyter, it returns the Windows Error code as well
ConnectionResetError: [WinError 10054] An existing connection was forcibly closed by the remote host

Update: Working again but sometimes still displaying the same issue as in #19 : "unknown document received":

ERROR:root:[ignored]
Traceback (most recent call last):
  File "C:\Users\dome\Anaconda3\lib\site-packages\torpy\utils.py", line 78, in newfn
    return func(*args, **kwargs)
  File "C:\Users\dome\Anaconda3\lib\site-packages\torpy\consesus.py", line 168, in renew
    raise Exception('Unknown document has been received')
Exception: Unknown document has been received
WARNING:torpy.utils:Retry with another authority...
ERROR:torpy.utils:[ignored] torpy.documents.network_status.FetchDescriptorError: Can't fetch descriptor from http://<someip>:8080/tor/server/fp/<somehash> 
WARNING:torpy.utils:Retry with another router...

Update 2: It's really odd, sometimes it's only working on Windows, sometimes only on Ubuntu. Does anyone have an idea where the OS differences come from?

I have a newly setup windows 10 installation and it returns a very similar error when I run your code block:

ERROR:torpy.cell_socket:timed out
ERROR:root:[ignored]
Traceback (most recent call last):
  File "C:\Users\leond\anaconda3\lib\site-packages\torpy\cell_socket.py", line 63, in connect
    self._socket.connect((self._router.ip, self._router.or_port))
  File "C:\Users\leond\anaconda3\lib\ssl.py", line 1342, in connect
    self._real_connect(addr, False)
  File "C:\Users\leond\anaconda3\lib\ssl.py", line 1329, in _real_connect
    super().connect(addr)
socket.timeout: timed out

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "C:\Users\leond\anaconda3\lib\site-packages\torpy\utils.py", line 78, in newfn
    return func(*args, **kwargs)
  File "C:\Users\leond\anaconda3\lib\site-packages\torpy\consesus.py", line 152, in renew
    raw_string = self.download_consensus(prev_hash)
  File "C:\Users\leond\anaconda3\lib\site-packages\torpy\consesus.py", line 306, in download_consensus
    with self._get_auth_dir_client() as dir_client:
  File "C:\Users\leond\anaconda3\lib\site-packages\torpy\consesus.py", line 287, in _get_auth_dir_client
    return self._auth_dir_circuit.create_dir_client()
  File "C:\Users\leond\anaconda3\lib\site-packages\torpy\utils.py", line 60, in __get__
    value = obj.__dict__[self.func.__name__] = self.func(obj)
  File "C:\Users\leond\anaconda3\lib\site-packages\torpy\consesus.py", line 283, in _auth_dir_circuit
    self._auth_guard, circuit = self._create_dir_circuit(authority=True, purpose='Consensus/PublicKeys downloader')
  File "C:\Users\leond\anaconda3\lib\site-packages\torpy\consesus.py", line 278, in _create_dir_circuit
    guard = TorGuard(router, purpose=purpose)
  File "C:\Users\leond\anaconda3\lib\site-packages\torpy\guard.py", line 66, in __init__
    self.__tor_socket.connect()
  File "C:\Users\leond\anaconda3\lib\site-packages\torpy\cell_socket.py", line 69, in connect
    raise TorSocketConnectError(e)
torpy.cell_socket.TorSocketConnectError: timed out
WARNING:torpy.utils:Retry with another authority...
ERROR:root:[ignored]
Traceback (most recent call last):
  File "C:\Users\leond\anaconda3\lib\site-packages\torpy\utils.py", line 78, in newfn
    return func(*args, **kwargs)
  File "C:\Users\leond\anaconda3\lib\site-packages\torpy\consesus.py", line 171, in renew
    raise Exception('Invalid consensus')
Exception: Invalid consensus
WARNING:torpy.utils:Retry with another authority...
ERROR:root:[ignored]
Traceback (most recent call last):
  File "C:\Users\leond\anaconda3\lib\site-packages\torpy\utils.py", line 78, in newfn
    return func(*args, **kwargs)
  File "C:\Users\leond\anaconda3\lib\site-packages\torpy\consesus.py", line 171, in renew
    raise Exception('Invalid consensus')
Exception: Invalid consensus
WARNING:torpy.utils:Retry with another authority...

Does it currently work on Ubuntu for you?

Around 18 hours ago it only worked on Windows and not on Ubuntu. Otherwise until now I noticed it generally works better on Ubuntu (if it works at all).
At the moment no OS is working for me.

commented

Because of errors and not optimal logic inside torpy tor authority server was under high traffic load. And was trying to block torpy. See https://gitlab.torproject.org/tpo/core/tor/-/issues/33018 for details.

445bc22 should fix this

do you guys still have the same issue ?

do you guys still have the same issue ?

Tor V2 is deprecated, this library won't work until it supports Tor V3