首页 > 解决方案 > 尝试通过 HTTP 传递登录凭据,需要解决方法

问题描述

致我的 Web 开发朋友:

我最近刚买了一个 GoGoGate2 车库门开启器,我正在尝试通过 HTTP 请求设置一个本地解决方法来触发车库门开启器的打开事件。(这适用于 IoT 中心)。我通过 IP 接入了我的 GoGoGate2,它把我带到了一个基于浏览器的 UI。我使用 WireShark 嗅探在 open 事件上触发的 HTTP 请求。我得出的结论是,可以通过以下 HTTP 请求打开和关闭门。

打开门: http://device-ip/isg/opendoor.php?numdoor=1&status=2

关门: http://device-ip/isg/opendoor.php?numdoor=1&status=0

好的,这很简单。当我从网络上的计算机或电话发出 HTTP 请求时,请求有效并且门完美地打开和关闭。但是,当我尝试从我的 Hubitat 触发 HTTP 请求时,该事件没有触发。我试图完全按照从 chrome 的隐身窗口中写入的方式使用我的 HTTP,并收到一条消息“限制访问”。显然,Hubitat 需要某种身份验证才能与 GoGoGate2 设备对话。

有什么方法可以接入我的 Hubitat 并使用它连接到我的 GoGoGate2 并让它保存登录凭据?这就是我从手机/电脑上做的事情。有没有办法从 Hubitat 本身做同样的事情?

对不起,如果这是一个菜鸟问题。

请注意,我也尝试使用该格式login:password@device-ip/isg/opendoor.php?numdoor=1&status=2但没有成功

此外,不确定这是否有帮助,但在车库门开启器的身份验证过程中,通过执行 post 方法执行登录。从我嗅出的,这是相关的信息。

Request Method: POST
Request URI : /index.php/index.php
Connection: keep-alive\r\n
Upgrade-Insecure-Requests: 1\r\n
Content-Type: application/x-www-form-urlencoded\r\n

Form Item: "login" = "mylogin"
Key: login
Value: mylogin

Form Item: "pass" = "mypass"
Key: pass
Value: mypass

Form Item: "sesion-abierta" = "1"
Key: sesion-abierta
Value: 1

Form Item: "send-login" = "Sign In"
Key: send-login
Value: Sign In

我不确定如何通过 HTTP 请求传递发布信息,如果有人对如何执行此操作或解决方法有所了解?

提前致谢,

安迪

标签: phphttppostgetiot

解决方案


您应该能够对这个请求使用 cURL:

curl -d "login=mylogin&pass=mypass&sesion-abierta=1&send-login=登录" -X POST http://www.requestdomain.com

在https://ec.haxx.se/http-post.html找到更多信息


推荐阅读