如何使用 Python 或 Javascript 自动验证 ngrok 密码?
我正在使用 ngrok 将我的树莓派上的本地主机暴露出来,并且 ngrok 有密码保护。我正在使用网络外的另一台计算机上的 Django 来访问这台树莓派上的一个网页(简单服务器)。我不想手动输入 ngrok 的用户名和密码。
我如何自动填写 ngrok 用户名/密码,这是 Chrome 弹出的要求输入用户名和密码的窗口?
我尝试过的方式:我首先尝试在模板中使用 JS,只是使用了一个 fetch 请求:https://user:[email ,但是 Chrome 在控制台中抛出了一个错误,说我不能以这种明文方式传递凭证,这是合理的……
然后我尝试使用 Python requests:
UN= "myuser"
PWD = "mypassword"
loginURL = "https://myngrokdomain.ngrok.io"
client = requests.session()
login_data = dict(username=UN, password=PWD,)
r = client.post(loginURL, data=login_data)
这返回了 401 访问被拒绝
r.headers + r.reason 返回: 401 未经授权 Unauthorized {'Content-Length': '16', 'Content-Type': 'text/plain', 'Www-Authenticate': 'Basic realm="ngrok"', 'Date': 'Tue, 16 Mar 2021 15:22:15 GMT'}
答案#1
ngrok 使用的认证方法称为 HTTP 基本认证。要在 requests 库中使用它,你可以将登录名和密码作为元组传递给 auth 参数:
r = client.post(loginURL, auth=(UN, PWD))
文档:基础认证 — 请求
答案#2
先尝试在登录页面进行一次 GET 请求。也许它会设置一些期望在 POST 请求中存在的 cookies:
UN= "myuser"
PWD = "mypassword"
loginURL = "https://myngrokdomain.ngrok.io"
client = requests.session()
login_data = dict(username=UN, password=PWD,)
client.get(loginURL )
r = client.post(loginURL, data=login_data)
