torpyorg / torpy

Pure python Tor client implementation

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Exception: Unknown document has been received

aaroncdc opened this issue · comments

I'm getting this error while trying to connect to the TOR network using your library (version 1.1.4):

ERROR:root:[ignored]
Traceback (most recent call last):
  File "D:\Python\Python37\lib\site-packages\torpy\utils.py", line 78, in newfn
    return func(*args, **kwargs)
  File "D:\Python\Python37\lib\site-packages\torpy\consesus.py", line 157, in renew
    raise Exception('Unknown document has been received')
Exception: Unknown document has been received
WARNING:torpy.utils:Retry with another authority...
ERROR:root:[ignored]
Traceback (most recent call last):
  File "D:\Python\Python37\lib\site-packages\torpy\utils.py", line 78, in newfn
    return func(*args, **kwargs)
  File "D:\Python\Python37\lib\site-packages\torpy\consesus.py", line 157, in renew
    raise Exception('Unknown document has been received')
Exception: Unknown document has been received
WARNING:torpy.utils:Retry with another authority...
ERROR:root:[ignored]
Traceback (most recent call last):
  File "D:\Python\Python37\lib\site-packages\torpy\utils.py", line 78, in newfn
    return func(*args, **kwargs)
  File "D:\Python\Python37\lib\site-packages\torpy\consesus.py", line 157, in renew
    raise Exception('Unknown document has been received')
Exception: Unknown document has been received
WARNING:torpy.utils:Retry with another authority...
Unknown document has been received

I tried with torpy_cli too, same issue:

>torpy_cli --url https://ipecho.net/plain

Loading cached NetworkStatusDocument from TorCacheDirStorage: C:\Users\<username>\AppData\Roaming\torpy\torpy\network_status
Loading cached DirKeyCertificateList from TorCacheDirStorage: C:\Users\<username>\AppData\Roaming\torpy\torpy\dir_key_certificates
Downloading new consensus...
Connecting to guard node 128.31.0.39:9101 (moria1; None)... (Consensus/PublicKeys downloader)
timed out
[ignored]
Traceback (most recent call last):
  File "d:\python\python37\lib\site-packages\torpy\cell_socket.py", line 63, in connect
    self._socket.connect((self._router.ip, self._router.or_port))
  File "d:\python\python37\lib\ssl.py", line 1172, in connect
    self._real_connect(addr, False)
  File "d:\python\python37\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 "d:\python\python37\lib\site-packages\torpy\utils.py", line 78, in newfn
    return func(*args, **kwargs)
  File "d:\python\python37\lib\site-packages\torpy\consesus.py", line 152, in renew
    raw_string = self.download_consensus(prev_hash)
  File "d:\python\python37\lib\site-packages\torpy\consesus.py", line 306, in download_consensus
    with self._get_auth_dir_client() as dir_client:
  File "d:\python\python37\lib\site-packages\torpy\consesus.py", line 287, in _get_auth_dir_client
    return self._auth_dir_circuit.create_dir_client()
  File "d:\python\python37\lib\site-packages\torpy\utils.py", line 60, in __get__
    value = obj.__dict__[self.func.__name__] = self.func(obj)
  File "d:\python\python37\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 "d:\python\python37\lib\site-packages\torpy\consesus.py", line 278, in _create_dir_circuit
    guard = TorGuard(router, purpose=purpose)
  File "d:\python\python37\lib\site-packages\torpy\guard.py", line 66, in __init__
    self.__tor_socket.connect()
  File "d:\python\python37\lib\site-packages\torpy\cell_socket.py", line 69, in connect
    raise TorSocketConnectError(e)
torpy.cell_socket.TorSocketConnectError: timed out
Retry with another authority...
Downloading new consensus...
Connecting to guard node 171.25.193.9:80 (maatuska; None)... (Consensus/PublicKeys downloader)
[WinError 10054] Se ha forzado la interrupción de una conexión existente por el host remoto
[ignored]
Traceback (most recent call last):
  File "d:\python\python37\lib\site-packages\torpy\cell_socket.py", line 63, in connect
    self._socket.connect((self._router.ip, self._router.or_port))
  File "d:\python\python37\lib\ssl.py", line 1172, in connect
    self._real_connect(addr, False)
  File "d:\python\python37\lib\ssl.py", line 1163, in _real_connect
    self.do_handshake()
  File "d:\python\python37\lib\ssl.py", line 1139, in do_handshake
    self._sslobj.do_handshake()
ConnectionResetError: [WinError 10054] Se ha forzado la interrupción de una conexión existente por el host remoto

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "d:\python\python37\lib\site-packages\torpy\utils.py", line 78, in newfn
    return func(*args, **kwargs)
  File "d:\python\python37\lib\site-packages\torpy\consesus.py", line 152, in renew
    raw_string = self.download_consensus(prev_hash)
  File "d:\python\python37\lib\site-packages\torpy\consesus.py", line 306, in download_consensus
    with self._get_auth_dir_client() as dir_client:
  File "d:\python\python37\lib\site-packages\torpy\consesus.py", line 287, in _get_auth_dir_client
    return self._auth_dir_circuit.create_dir_client()
  File "d:\python\python37\lib\site-packages\torpy\utils.py", line 60, in __get__
    value = obj.__dict__[self.func.__name__] = self.func(obj)
  File "d:\python\python37\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 "d:\python\python37\lib\site-packages\torpy\consesus.py", line 278, in _create_dir_circuit
    guard = TorGuard(router, purpose=purpose)
  File "d:\python\python37\lib\site-packages\torpy\guard.py", line 66, in __init__
    self.__tor_socket.connect()
  File "d:\python\python37\lib\site-packages\torpy\cell_socket.py", line 69, in connect
    raise TorSocketConnectError(e)
torpy.cell_socket.TorSocketConnectError: [WinError 10054] Se ha forzado la interrupción de una conexión existente por el host remoto
Retry with another authority...
Downloading new consensus...
Connecting to guard node 204.13.164.118:443 (bastet; None)... (Consensus/PublicKeys downloader)
_ssl.c:1059: The handshake operation timed out
[ignored]
Traceback (most recent call last):
  File "d:\python\python37\lib\site-packages\torpy\cell_socket.py", line 63, in connect
    self._socket.connect((self._router.ip, self._router.or_port))
  File "d:\python\python37\lib\ssl.py", line 1172, in connect
    self._real_connect(addr, False)
  File "d:\python\python37\lib\ssl.py", line 1163, in _real_connect
    self.do_handshake()
  File "d:\python\python37\lib\ssl.py", line 1139, in do_handshake
    self._sslobj.do_handshake()
socket.timeout: _ssl.c:1059: The handshake operation timed out

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "d:\python\python37\lib\site-packages\torpy\utils.py", line 78, in newfn
    return func(*args, **kwargs)
  File "d:\python\python37\lib\site-packages\torpy\consesus.py", line 152, in renew
    raw_string = self.download_consensus(prev_hash)
  File "d:\python\python37\lib\site-packages\torpy\consesus.py", line 306, in download_consensus
    with self._get_auth_dir_client() as dir_client:
  File "d:\python\python37\lib\site-packages\torpy\consesus.py", line 287, in _get_auth_dir_client
    return self._auth_dir_circuit.create_dir_client()
  File "d:\python\python37\lib\site-packages\torpy\utils.py", line 60, in __get__
    value = obj.__dict__[self.func.__name__] = self.func(obj)
  File "d:\python\python37\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 "d:\python\python37\lib\site-packages\torpy\consesus.py", line 278, in _create_dir_circuit
    guard = TorGuard(router, purpose=purpose)
  File "d:\python\python37\lib\site-packages\torpy\guard.py", line 66, in __init__
    self.__tor_socket.connect()
  File "d:\python\python37\lib\site-packages\torpy\cell_socket.py", line 69, in connect
    raise TorSocketConnectError(e)
torpy.cell_socket.TorSocketConnectError: _ssl.c:1059: The handshake operation timed out
Retry with another authority...
Traceback (most recent call last):
  File "d:\python\python37\lib\site-packages\torpy\cell_socket.py", line 63, in connect
    self._socket.connect((self._router.ip, self._router.or_port))
  File "d:\python\python37\lib\ssl.py", line 1172, in connect
    self._real_connect(addr, False)
  File "d:\python\python37\lib\ssl.py", line 1163, in _real_connect
    self.do_handshake()
  File "d:\python\python37\lib\ssl.py", line 1139, in do_handshake
    self._sslobj.do_handshake()
socket.timeout: _ssl.c:1059: The handshake operation timed out

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "d:\python\python37\lib\runpy.py", line 193, in _run_module_as_main
    "__main__", mod_spec)
  File "d:\python\python37\lib\runpy.py", line 85, in _run_code
    exec(code, run_globals)
  File "D:\Python\Python37\Scripts\torpy_cli.exe\__main__.py", line 7, in <module>
  File "d:\python\python37\lib\site-packages\torpy\cli\console.py", line 60, in main
    auth_data=args.auth_data, verbose=args.verbose)
  File "d:\python\python37\lib\site-packages\torpy\http\urlopener.py", line 142, in do_request
    with tor_opener(hops_count=hops, auth_data=auth_data, debuglevel=verbose) as opener:
  File "d:\python\python37\lib\contextlib.py", line 112, in __enter__
    return next(self.gen)
  File "d:\python\python37\lib\site-packages\torpy\http\urlopener.py", line 136, in tor_opener
    with TorClient(auth_data=auth_data) as tor:
  File "d:\python\python37\lib\site-packages\torpy\client.py", line 37, in __init__
    self._consensus = consensus or TorConsensus()
  File "d:\python\python37\lib\site-packages\torpy\consesus.py", line 130, in __init__
    self.renew()
  File "d:\python\python37\lib\site-packages\torpy\utils.py", line 78, in newfn
    return func(*args, **kwargs)
  File "d:\python\python37\lib\site-packages\torpy\consesus.py", line 152, in renew
    raw_string = self.download_consensus(prev_hash)
  File "d:\python\python37\lib\site-packages\torpy\consesus.py", line 306, in download_consensus
    with self._get_auth_dir_client() as dir_client:
  File "d:\python\python37\lib\site-packages\torpy\consesus.py", line 287, in _get_auth_dir_client
    return self._auth_dir_circuit.create_dir_client()
  File "d:\python\python37\lib\site-packages\torpy\utils.py", line 60, in __get__
    value = obj.__dict__[self.func.__name__] = self.func(obj)
  File "d:\python\python37\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 "d:\python\python37\lib\site-packages\torpy\consesus.py", line 278, in _create_dir_circuit
    guard = TorGuard(router, purpose=purpose)
  File "d:\python\python37\lib\site-packages\torpy\guard.py", line 66, in __init__
    self.__tor_socket.connect()
  File "d:\python\python37\lib\site-packages\torpy\cell_socket.py", line 69, in connect
    raise TorSocketConnectError(e)
torpy.cell_socket.TorSocketConnectError: _ssl.c:1059: The handshake operation timed out

TOR browser seems to work fine. The thing is, it was working fine until a while ago.

Same here! Until like 6/7 hours ago it was working but at some point it always returned your log. Tested on Ubuntu 20.04 and Windows 10.
A minimal example:

from torpy.http.requests import TorRequests
with TorRequests() as tor_requests:
    with tor_requests.get_session() as sess:
        response = sess.get("https://webscraper.io/test-sites/e-commerce/allinone") # fire request
        print(response)

My log is slightly different from yours but mainly the same.

Python 3.8.5 (default, Sep  4 2020, 07:30:14)
[GCC 7.3.0] :: Anaconda, Inc. on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> from torpy.http.requests import TorRequests
quests() as tor_requests:
    with tor_requests.get_session() as sess:
        response = sess.get("https://webscraper.io/test-sites/e-commerce/allinone") # fire request
        print(response)>>> with TorRequests() as tor_requests:
...     with tor_requests.get_session() as sess:
...         response = sess.get("https://webscraper.io/test-sites/e-commerce/allinone") # fire request
...         print(response)
...
timed out
ERROR:root:[ignored]
Traceback (most recent call last):
  File "/home/dome/miniconda3/lib/python3.8/site-packages/torpy/cell_socket.py", line 63, in connect
    self._socket.connect((self._router.ip, self._router.or_port))
  File "/home/dome/miniconda3/lib/python3.8/ssl.py", line 1342, in connect
    self._real_connect(addr, False)
  File "/home/dome/miniconda3/lib/python3.8/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 "/home/dome/miniconda3/lib/python3.8/site-packages/torpy/utils.py", line 78, in newfn
    return func(*args, **kwargs)
  File "/home/dome/miniconda3/lib/python3.8/site-packages/torpy/consesus.py", line 152, in renew
    raw_string = self.download_consensus(prev_hash)
  File "/home/dome/miniconda3/lib/python3.8/site-packages/torpy/consesus.py", line 306, in download_consensus
    with self._get_auth_dir_client() as dir_client:
  File "/home/dome/miniconda3/lib/python3.8/site-packages/torpy/consesus.py", line 287, in _get_auth_dir_client
    return self._auth_dir_circuit.create_dir_client()
  File "/home/dome/miniconda3/lib/python3.8/site-packages/torpy/utils.py", line 60, in __get__
    value = obj.__dict__[self.func.__name__] = self.func(obj)
  File "/home/dome/miniconda3/lib/python3.8/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 "/home/dome/miniconda3/lib/python3.8/site-packages/torpy/consesus.py", line 278, in _create_dir_circuit
    guard = TorGuard(router, purpose=purpose)
  File "/home/dome/miniconda3/lib/python3.8/site-packages/torpy/guard.py", line 66, in __init__
    self.__tor_socket.connect()
  File "/home/dome/miniconda3/lib/python3.8/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 "/home/dome/miniconda3/lib/python3.8/site-packages/torpy/cell_socket.py", line 63, in connect
    self._socket.connect((self._router.ip, self._router.or_port))
  File "/home/dome/miniconda3/lib/python3.8/ssl.py", line 1342, in connect
    self._real_connect(addr, False)
  File "/home/dome/miniconda3/lib/python3.8/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 "/home/dome/miniconda3/lib/python3.8/site-packages/torpy/utils.py", line 78, in newfn
    return func(*args, **kwargs)
  File "/home/dome/miniconda3/lib/python3.8/site-packages/torpy/consesus.py", line 152, in renew
    raw_string = self.download_consensus(prev_hash)
  File "/home/dome/miniconda3/lib/python3.8/site-packages/torpy/consesus.py", line 306, in download_consensus
    with self._get_auth_dir_client() as dir_client:
  File "/home/dome/miniconda3/lib/python3.8/site-packages/torpy/consesus.py", line 287, in _get_auth_dir_client
    return self._auth_dir_circuit.create_dir_client()
  File "/home/dome/miniconda3/lib/python3.8/site-packages/torpy/utils.py", line 60, in __get__
    value = obj.__dict__[self.func.__name__] = self.func(obj)
  File "/home/dome/miniconda3/lib/python3.8/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 "/home/dome/miniconda3/lib/python3.8/site-packages/torpy/consesus.py", line 278, in _create_dir_circuit
    guard = TorGuard(router, purpose=purpose)
  File "/home/dome/miniconda3/lib/python3.8/site-packages/torpy/guard.py", line 66, in __init__
    self.__tor_socket.connect()
  File "/home/dome/miniconda3/lib/python3.8/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 "/home/dome/miniconda3/lib/python3.8/site-packages/torpy/cell_socket.py", line 63, in connect
    self._socket.connect((self._router.ip, self._router.or_port))
  File "/home/dome/miniconda3/lib/python3.8/ssl.py", line 1342, in connect
    self._real_connect(addr, False)
  File "/home/dome/miniconda3/lib/python3.8/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 "/home/dome/miniconda3/lib/python3.8/site-packages/torpy/utils.py", line 78, in newfn
    return func(*args, **kwargs)
  File "/home/dome/miniconda3/lib/python3.8/site-packages/torpy/consesus.py", line 152, in renew
    raw_string = self.download_consensus(prev_hash)
  File "/home/dome/miniconda3/lib/python3.8/site-packages/torpy/consesus.py", line 306, in download_consensus
    with self._get_auth_dir_client() as dir_client:
  File "/home/dome/miniconda3/lib/python3.8/site-packages/torpy/consesus.py", line 287, in _get_auth_dir_client
    return self._auth_dir_circuit.create_dir_client()
  File "/home/dome/miniconda3/lib/python3.8/site-packages/torpy/utils.py", line 60, in __get__
    value = obj.__dict__[self.func.__name__] = self.func(obj)
  File "/home/dome/miniconda3/lib/python3.8/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 "/home/dome/miniconda3/lib/python3.8/site-packages/torpy/consesus.py", line 278, in _create_dir_circuit
    guard = TorGuard(router, purpose=purpose)
  File "/home/dome/miniconda3/lib/python3.8/site-packages/torpy/guard.py", line 66, in __init__
    self.__tor_socket.connect()
  File "/home/dome/miniconda3/lib/python3.8/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):
  File "/home/dome/miniconda3/lib/python3.8/site-packages/torpy/cell_socket.py", line 63, in connect
    self._socket.connect((self._router.ip, self._router.or_port))
  File "/home/dome/miniconda3/lib/python3.8/ssl.py", line 1342, in connect
    self._real_connect(addr, False)
  File "/home/dome/miniconda3/lib/python3.8/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 "<stdin>", line 1, in <module>
  File "/home/dome/miniconda3/lib/python3.8/site-packages/torpy/http/requests.py", line 40, in __enter__
    self._tor = TorClient(auth_data=self._auth_data)
  File "/home/dome/miniconda3/lib/python3.8/site-packages/torpy/client.py", line 37, in __init__
    self._consensus = consensus or TorConsensus()
  File "/home/dome/miniconda3/lib/python3.8/site-packages/torpy/consesus.py", line 130, in __init__
    self.renew()
  File "/home/dome/miniconda3/lib/python3.8/site-packages/torpy/utils.py", line 78, in newfn
    return func(*args, **kwargs)
  File "/home/dome/miniconda3/lib/python3.8/site-packages/torpy/consesus.py", line 152, in renew
    raw_string = self.download_consensus(prev_hash)
  File "/home/dome/miniconda3/lib/python3.8/site-packages/torpy/consesus.py", line 306, in download_consensus
    with self._get_auth_dir_client() as dir_client:
  File "/home/dome/miniconda3/lib/python3.8/site-packages/torpy/consesus.py", line 287, in _get_auth_dir_client
    return self._auth_dir_circuit.create_dir_client()
  File "/home/dome/miniconda3/lib/python3.8/site-packages/torpy/utils.py", line 60, in __get__
    value = obj.__dict__[self.func.__name__] = self.func(obj)
  File "/home/dome/miniconda3/lib/python3.8/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 "/home/dome/miniconda3/lib/python3.8/site-packages/torpy/consesus.py", line 278, in _create_dir_circuit
    guard = TorGuard(router, purpose=purpose)
  File "/home/dome/miniconda3/lib/python3.8/site-packages/torpy/guard.py", line 66, in __init__
    self.__tor_socket.connect()
  File "/home/dome/miniconda3/lib/python3.8/site-packages/torpy/cell_socket.py", line 69, in connect
    raise TorSocketConnectError(e)
torpy.cell_socket.TorSocketConnectError: timed out

It seems like it came back for me now... It was probably an issue with the guard and not the library itself.

Confirm working on Ubuntu again, but Windows always returning [WinError 10054] which might have a different reason. I'll open a new Windows specific issue.

The error is a little erratic, a few days ago I was still receiving it and then it worked fine. I'm getting it again right now.

This error has happened several times in the last few days and has been resolved after 4-5 hours automatically, but now it is 7-8 hours that this error still exists

It is a quite unusual error, maybe it's related to the guard (as an upper comment said), it would be interesting to understand why it happens. I saw some issue related to network blocking problem #12 , maybe it's the same kind of error.

I don't think it has to do with network blocking problems, because when one of my torpy crashed on one server, my other torpy, which is completely hosted on a different data center, also crashed.

As far as I understand it can't be a network error, tried with different VPNs as well and failed for all.

commented

DirAuth returns 503 Directory voting, try again later

I believe I know what is the problem is. But need more time to investigate.

commented

This is related too: #8

DirAuth returns 503 Directory voting, try again later

I believe I know what is the problem is. But need more time to investigate.

Is there a solution to that?

commented

Is there a solution to that?

yes, but need some time to fix it

commented

445bc22 should fix this
So try latest sources from master branch.