Попытка передать учетные данные для входа через HTTP, необходимо обойти

Моим друзьям по веб-разработке:

Я недавно купил GoGoGate2 Garage Door Opener, и я пытаюсь настроить локальный обходной путь через HTTP-запрос для запуска события open Garage Door Opener. (Это для использования с концентратором IoT). Я подключился к своему GoGoGate2 через IP, и это привело меня к пользовательскому интерфейсу на основе браузера. Я использовал WireShark, чтобы прослушивать HTTP-запросы, которые запускались при открытии события. Я пришел к выводу, что дверь можно открывать и закрывать с помощью следующего HTTP-запроса.

ОТКРЫВАЕТ ДВЕРЬ:
HTTP: //device-ip/isg/opendoor.php numdoor = 1&статус = 2

ЗАКРЫВАЕТ ДВЕРЬ:
HTTP: //device-ip/isg/opendoor.php numdoor = 1&статус = 0

Хорошо, это было достаточно просто. Когда я запускаю HTTP-запрос с компьютера или телефона в моей сети, запрос работает, и дверь открывается и закрывается идеально. Однако, когда я пытаюсь запустить HTTP-запрос от моего Hubitat, событие не запускается. Я попытался использовать свой HTTP в точности так, как он был написан в окне инкогнито в Chrome, и я получил сообщение «Ограниченный доступ». Таким образом, очевидно, что Hubitat нужна какая-то аутентификация для связи с устройством GoGoGate2.

Есть ли какой-нибудь способ, которым я могу подключиться к своему Hubitat и использовать его для подключения к своему GoGoGate2 и сохранить его учетные данные для входа? Вот как я это сделал со своего телефона / компьютера. Нет ли способа сделать то же самое с самого Хубитата?

Извините, если это нубский вопрос.

Обратите внимание, я также пытался использовать формат login:password@device-ip/isg/opendoor.php?numdoor=1&status=2без успеха

Кроме того, не уверен, что это поможет, но во время процесса аутентификации на устройстве открывания гаражных ворот вход в систему выполняется с помощью метода записи. Из того, что я понюхал, это соответствующая информация.

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-запрос, если у кого-то есть понимание того, как это сделать, или обойти?

Заранее спасибо,

Энди

1

Решение

Вы должны быть в состоянии использовать cURL для этого запроса:

curl -d «login = mylogin&передать = mypass&Sesion-Abierta = 1&send-login = Войти «-X POST http://www.requestdomain.com

найти больше информации на https://ec.haxx.se/http-post.html

0

Другие решения

Поскольку имя входа основано на форме, вероятно, учетные данные хранятся в виде файлов cookie. Если эти файлы cookie являются долгоживущими, вы можете использовать их повторно при подключении к API. Можно ли указать куки в запросе HTTP? В противном случае возможно ли выполнить последовательность из нескольких запросов от устройства — POST для аутентификации затем операции.

Кроме того, вы можете разместить свой собственный прокси в локальной сети, которая выполняет вход в систему и последующий запрос внутри. Это можно сделать программно с помощью curl в PHP. Вот пример: http://blog.andyhunt.info/2011/12/21/using-php-and-curl-to-log-in-to-a-website/

Убедитесь, что вы используете опцию CURLOPT_COOKIEJAR для сохранения файлов cookie аутентификации из формы входа, чтобы они могли быть включены в последующие запросы.

0

По вопросам рекламы [email protected]