我下载了恩格罗克对于 Windows 来说,它运行良好。
当您启动 ngrok ( ngrok.exe http x
) 时,它会将 localhost:x 映射到一个公共 IP 地址。例如abcd123.ngrok.io
。
问:是否可以检测出这个分配的转发地址是什么(具体来说,就是abcd123
我虚构的例子中的子域)...或者这在技术上是不可能的?如果可能的话,在 Windows 上用什么命令来确定这一点?
谢谢!
答案1
没有内置命令来实现您想要的功能,但是 ngrok 提供了一个实时 Web UI,您可以在其中检查隧道上运行的所有 HTTP 流量,并查看所有请求(包括主机域)。启动 ngrok 后,只需打开http://本地主机:4040在网络浏览器中检查请求详细信息。
Ngrok 还提供客户端 API 列表http://本地主机:4040/api
例如,如果你使用命令打开端口 4000 上的请求
ngrok http 4000
它将创建 2 个隧道(http 和 https)。如果您要发出请求http://localhost:4040/api/隧道您将收到一个 JSON 编码的响应,其中列出了当前在您的计算机上运行的所有隧道。类似于此
{
"tunnels": [
{
"name": "command_line",
"uri": "/api/tunnels/command_line",
"public_url": "https://92802df6.ngrok.io",
"proto": "https",
"config": {
"addr": "http://localhost:4000",
"inspect": true
},
"metrics": {
"conns": {
"count": 12,
"gauge": 0,
"rate1": 3.010161493334155e-20,
"rate5": 0.0000023116701144869783,
"rate15": 0.00031425303226642,
"p50": 5006072050,
"p90": 7160137960.000004,
"p95": 8080786000,
"p99": 8080786000
},
"http": {
"count": 13,
"rate1": 4.1641366552993466e-20,
"rate5": 0.0000030815031931566885,
"rate15": 0.00038190674419415834,
"p50": 4962400,
"p90": 649465039.9999996,
"p95": 1076411200,
"p99": 1076411200
}
}
},
{
"name": "command_line (http)",
"uri": "/api/tunnels/command_line%20%28http%29",
"public_url": "http://92802df6.ngrok.io",
"proto": "http",
"config": {
"addr": "http://localhost:4000",
"inspect": true
},
"metrics": {
"conns": {
"count": 0,
"gauge": 0,
"rate1": 0,
"rate5": 0,
"rate15": 0,
"p50": 0,
"p90": 0,
"p95": 0,
"p99": 0
},
"http": {
"count": 0,
"rate1": 0,
"rate5": 0,
"rate15": 0,
"p50": 0,
"p90": 0,
"p95": 0,
"p99": 0
}
}
}
],
"uri": "/api/tunnels"
}
您可以在tunnels.[index].public_url
您还可以请求http://localhost:4040/api/tunnels/隧道名称仅获取名为tunnel-name