はじめに
cloudflared はCloudflareが提供するサービスで無償で登録なしに利用できるトンネリングのサービスです。
-
ngrokの代わりにcloudflaredを使ってみよう - 技術的な何か。
はじめに Cloudflareでcloudflaredというクライアントで動いているサービスを公開できるアプリケーションがあるみたいです。ngrokの代わりなりそうなものです。特にユーザー登録などない
level69.net
そこでPythonに実装する方法を紹介します。
例えば、これを利用すると通常は外部からのアクセスが容認されていないサービスに、外部からのアクセスできるバックドアのようなものも利用できると思います。
これらを実装するためにpycloudflared
のモジュールを利用します。
-
GitHub - Bing-su/pycloudflared: python cloudflared wrapper
python cloudflared wrapper. Contribute to Bing-su/pycloudflared development by creating an account o ...
github.com
これはpython cloudflared wrapperです。
実装サンプル
pycloudflaredをインストールします。
pip install pycloudflared
簡単なPythonのシンプルHTTPサーバーをpycloudflaredで公開するサンプルです。
http_server.py
に保存しています。
import http.server import socketserver from http import HTTPStatus from pycloudflared import try_cloudflare class SilentRequestHandler(http.server.SimpleHTTPRequestHandler): def do_GET(self): self.send_response(HTTPStatus.OK) self.send_header("Content-type", "text/html") self.end_headers() self.wfile.write(b"Hello World") def log_message(self, format, *args): pass PORT = 8000 Handler = SilentRequestHandler server = http.server.HTTPServer(("", PORT), Handler) server.allow_reuse_address = True print(f"Serving on port {PORT}") try: print("Setting up Cloudflare tunnel...") try_cloudflare(port=PORT) server.serve_forever() except KeyboardInterrupt: print("Shutting down...") server.shutdown()
これを実行します。
python3 http_server.py
Serving on port 8000 Setting up Cloudflare tunnel... * Running on https://beads-respondent-charleston-reporter.trycloudflare.com * Traffic stats available on http://127.0.0.1:37747/metrics
外部からアクセスして確認します。
curl -Ssi https://great-testimonials-perl-accordingly.trycloudflare.com HTTP/2 200 date: Sun, 19 Mar 2023 02:31:02 GMT content-type: text/html cf-ray: 7aa24c009a111d97-NRT cf-cache-status: DYNAMIC server: cloudflare Hello World
内部からアクセスします。
curl -Ssi localhost:8000 HTTP/1.0 200 OK Server: SimpleHTTP/0.6 Python/3.10.6 Date: Sun, 19 Mar 2023 02:35:45 GMT Content-type: text/html Hello World
以上で確認は完了です。
*サンプルの一部コードはGPT-4により生成しています
まとめ
cloudflaredをpythonで実装する方法を紹介しました。cloudflareがホストしていることや、python に組み込んで簡単に利用したい場合にはよいツールなのではないでしょうか。
このようなツールには悪用されるケースがあるため注意も必要です。
-
PyPI に悪意のパッケージが登場:CloudFlare Tunnel を悪用するトロイの木馬 – IoT OT Security News
Malicious PyPi packages create CloudFlare Tunnels to bypass firewalls 2023/01/07 BleepingComputer -- ...
iototsecnews.jp