首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何使用Python和Javascript自动验证ngrok密码?

如何使用Python和Javascript自动验证ngrok密码?
EN

Stack Overflow用户
提问于 2021-03-14 01:28:18
回答 3查看 2.2K关注 0票数 3

我使用ngrok在raspberry pi上公开我的本地主机,ngrok是受密码保护的。我在网络外的另一台计算机上使用Django访问这个raspberry pi上的网页(简单服务器)。我不想手动输入用户名和密码给ngrok。

我如何自动填写ngrok用户/密码,这是一个弹出的铬询问用户和密码?

我尝试过的是:我第一次尝试在模板中使用JS,只使用一个fetch请求:https://user:password@myngrokdomain.ngrok.io,但是chrome在控制台中抛出一个错误,说我不能以这样的纯文本传递凭据,这是正确的.

然后我尝试使用python请求:

代码语言:javascript
运行
复制
    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 Unauthorized {'Content-Length': '16', 'Content-Type': 'text/plain', 'Www-Authenticate': 'Basic realm="ngrok"', 'Date': 'Tue, 16 Mar 2021 15:22:15 GMT'}

EN

Stack Overflow用户

发布于 2021-03-22 23:18:23

您需要区分是从浏览器还是从服务器应用程序发出请求。

浏览器

如果您是在浏览器中执行此操作,则会遇到CORS问题,而ngrok在提供--auth时不支持该问题。来自文档

您不能使用ngrok的-auth选项。ngrok的http隧道允许您指定基本身份验证凭据来保护您的隧道。但是,ngrok对所有请求强制执行此策略,包括CORS规范所要求的飞行前选项请求。在这种情况下,应用程序必须实现自己的基本身份验证。

在这种情况下,您唯一的选择是在应用程序中实现身份验证,而不是使用ngrok的--auth

服务器

如果您从服务器应用程序发送请求,则不会遇到任何CORS问题,但需要正确提供基本身份验证凭据。

假设您的应用程序是通过ngrok在http://myapp.ngrok.io上通过--auth user:pass进行保护的。

在普通的Node.js中,您可以这样做:

代码语言:javascript
运行
复制
const http = require('http')

http.get('http://myapp.ngrok.io', { auth: 'user:pass' }, res => {
  const chunks = []

  res.on('data', chunk => {
    chunks.push(chunk)
  })

  res.on('end', () => {
    console.log(Buffer.concat(chunks).toString('utf-8'))
  })
})

注意,要访问https url,您可以使用Node的https模块而不是http,或者使用更高级别的库来为您处理这个问题,比如node-fetch

在Python中,您可以做类似的事情,这个问题可能会让您走上正确的道路。

票数 0
EN
查看全部 3 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66620221

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档