0

Python で CherryPy を使用して Onion-Website を作成したいと考えています (Stem を使用して Tor ネットワークにアクセスします)。私の問題は、サイトの展開です。そのために、次の記事の例を採用しました: https://jordan-wright.com/blog/2014/10/06/creating-tor-hidden-services-with-python/ (素晴らしい記事ですが、もともとは Flask と組み合わせていました) 、しかしこれはCherryPyでも動作し、その逆も同様です)。唯一の違いは、Flask がポート 5000 で動作し、CherryPy が 8080 で動作することです (以下のコードで変更しました)。

私の最終的なテストコードは次のようになります。

import cherrypy
from stem.control import Controller


class HelloWorld(object):
    @cherrypy.expose
    def index(self):
        return "Hello world!"


if __name__ == '__main__':
    
    port = 8080
    host = "127.0.0.1"
    hidden_svc_dir = '/home/python/'

    print(" * Getting controller")
    controller = Controller.from_port(address="127.0.0.1", port=9151)
    try:
        controller.authenticate(password="")
        controller.set_options([
            ("HiddenServiceDir", hidden_svc_dir),
            ("HiddenServicePort", "80 %s:%s" % (host, str(port)))
            ])
        svc_name = open(hidden_svc_dir + "/hostname", "r").read().strip()
        print(" * Created host: %s" % svc_name)
    except Exception as e:
        print(e)
        
    cherrypy.quickstart(HelloWorld())
    

私の /etc/tor/torrc にはこれが含まれています:

ControlPort 9051
HashedControlPassword xxx
CookieAuthentication 1

(パスワードの有無にかかわらず、1 と 0 に設定された Cookie の有無にかかわらず、すべて同じエラー メッセージで試しました。)

他のコードでは Stem / Tor を使用しており、それらは適切に動作しますが、これは以下のエラー メッセージをスローします。

 * Getting controller
Traceback (most recent call last):
  File "/home/xxx/.local/lib/python3.6/site-packages/stem/socket.py", line 535, in _make_socket
    control_socket.connect((self.address, self.port))
ConnectionRefusedError: [Errno 111] Connection refused

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "onion_server_1.py", line 20, in <module>
    controller = Controller.from_port(address="127.0.0.1", port=9151)
  File "/home/xxx/.local/lib/python3.6/site-packages/stem/control.py", line 1033, in from_port
    control_port = stem.socket.ControlPort(address, port)
  File "/home/xxx/.local/lib/python3.6/site-packages/stem/socket.py", line 503, in __init__
    self.connect()
  File "/home/xxx/.local/lib/python3.6/site-packages/stem/socket.py", line 172, in connect
    self._socket = self._make_socket()
  File "/home/xxx/.local/lib/python3.6/site-packages/stem/socket.py", line 538, in _make_socket
    raise stem.SocketError(exc)
stem.SocketError: [Errno 111] Connection refused

なぜこれが機能しないのか、これ以上の考えはありません。

動作するコード (上記の私のものから採用) は素晴らしいでしょう。

4

0 に答える 0