使用 ngrok API 前需先设置 authtoken 或 API key;部分功能依赖 ngrok 账号与配置文件中的隧道定义

pyngrok
alexdlairdMIT活跃维护在 Python 代码里直接创建 ngrok 隧道,把本地服务暴露到公网,方便接收 webhook、做演示或调试 API,无需手动启动 ngrok 客户端。
The complete ngrok agent for Python: programmatic tunnels for ingress, inspection, webhooks, demos, and APIs
在 Python 里直接调用真正的 ngrok agent,把本地服务暴露成公网 URL
在 Python 代码里直接创建 ngrok 隧道,把本地服务暴露到公网,方便接收 webhook、做演示或调试 API,无需手动启动 ngrok 客户端。
核心能力
- 用 connect() 一行代码开隧道并返回 public_url
- 统一封装 ngrok v2 tunnel 与 v3 endpoint 概念
- 通过 api() 调用本地 agent 访问 ngrok API
- 安装后自带 ngrok 二进制,可直接命令行使用
- 支持命名隧道、内部端点与负载均衡配置
容易踩的坑
- 9.1.3最新正式版2026-11-05 · 2026-11-05 15:37 UTC
Fixed
- Stability and bug fixes.
- 9.1.22026-11-02 · 2026-11-02 22:29 UTC
查看更新说明
Fixed
- Stability and bug fixes.
- 9.1.12026-10-31 · 2026-10-31 18:43 UTC
查看更新说明
Fixed
- Stability and bug fixes.
- 9.1.02026-10-26 · 2026-10-26 14:43 UTC
查看更新说明
Added
- Support for Python 3.14 and 3.15.
- 9.0.32026-10-23 · 2026-10-23 18:40 UTC
查看更新说明
Fixed
- Stability and bug fixes.
用户点评
登录用户的真实使用记录,可按版本和硬件筛选还没有人点评。第一个说出真实体验的人最有价值。
pyngrok gives Python the complete ngrok agent, with programmatic tunnels for
ingress, inspection, webhooks, demos, and APIs. ngrok is a reverse proxy that opens secure
tunnels from public URLs to localhost, and because pyngrok runs the real agent, you get everything it offers, from
traffic policies and OAuth to its web inspector and request replay, all callable from Python.
Installation
pyngrok is available on PyPI and can be installed
using pip:
pip install pyngrok
or conda:
conda install -c conda-forge pyngrok
That's it! pyngrok is now available as a package to your Python projects, and ngrok is now available from
the command line.
Basic Usage
Open a Tunnel
To open a tunnel, use the connect method,
which returns a NgrokTunnel, and this
returned object has a reference to the public URL generated by ngrok in its public_url
attribute.
from pyngrok import ngrok
# Open a HTTP tunnel on the default port 80
# <NgrokTunnel: "https://<public_sub>.ngrok.io" -> "http://localhost:80">
http_tunnel = ngrok.connect()
# Open a SSH tunnel
# <NgrokTunnel: "tcp://0.tcp.ngrok.io:12345" -> "localhost:22">
ssh_tunnel = ngrok.connect("22", "tcp")
# Open a named tunnel from the config file
named_tunnel = ngrok.connect(name="my-config-file-tunnel")
# Open an Internal Endpoint that's load balanced
# <NgrokTunnel: "https://some-endpoint.internal" -> "http://localhost:9000">
internal_endpoint = ngrok.connect(addr="9000",
url="https://some-endpoint.internal",
pooling_enabled=True)
The connect method takes kwargs as well,
which allows
you to pass additional tunnel configurations that are supported by ngrok (or the name of a tunnel defined in
ngrok's config file), as documented here.
Note:
pyngrokunifiesngrok's "tunnel" (v2) and "endpoint" (v3) concepts behind a single API:connect()returns anNgrokTunneland handles the differences for you through theconfig_versionyou set. Allngrokfeatures are available to you through this. For v3-specific Endpoints, see Using v3 Endpoints.
ngrok's API
The api method allows you to use the local
ngrok agent to make requests against the ngrok API, if you
have set an API key.
For example, here's how you would reserve a ngrok domain, then create a Cloud Endpoint with an associated traffic
policy:
from pyngrok import ngrok
domain = "some-domain.ngrok.dev"
ngrok.api("reserved-domains", "create",
"--domain", domain)
ngrok.api("endpoints", "create",
"--bindings", "public",
"--url", f"https://{domain}",
"--traffic-policy-file", "policy.yml")
Command Line Usage
This package puts the default ngrok binary on your path, so all features of ngrok are
available on the command line.
ngrok http 80
For details on how to fully leverage ngrok from the command line,
see ngrok's official documentation.
Documentation
For more advanced usage, pyngrok's official documentation is available
on Read the Docs.
Integration Examples
Contributing
If you would like to get involved, be sure to review the Contribution Guide.
Want to contribute financially? If you've found pyngrok useful, sponsorship
would also be greatly appreciated!