Как отправить cookie на внешнюю страницу .cgi с помощью curl и php? - PullRequest
0 голосов
/ 09 октября 2018

Мне нужно отобразить изображения с камер безопасности в моей веб-системе в php.Я использую curl, чтобы попытаться выполнить эту задачу.Интеграция состоит из входа в систему, после чего генерируется SessionID внешнего сервера, и мне нужно отправить еще раз для завершения аутентификации.Тем не менее, изображение с камеры отображается.Как я могу это сделать?Вот код, который я использую:

<?php

$Cookie = (dirname(__FILE__) . "/cookie.txt");


# PRIMEIRA REQUISIÇÃO, RECEBE O COOKIE PARA O DOMINIO
$curl = curl_init();

curl_setopt_array($curl, array(
    CURLOPT_COOKIEJAR => $Cookie,
    CURLOPT_PORT => '8000',
    CURLOPT_URL => 'http://camerasquadion.ddns.net:8000/camera.cgi',
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_ENCODING => "",
    CURLOPT_MAXREDIRS => 10,
    CURLOPT_TIMEOUT => 30,
    CURLOPT_USERPWD =>  "usuario:senha",
    CURLOPT_SSL_VERIFYPEER => false,
    CURLOPT_HTTPAUTH => CURLAUTH_BASIC,
    CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
    CURLOPT_CUSTOMREQUEST => "GET",
));


$response = curl_exec($curl);
$err      = curl_error($curl);

curl_close($curl);


if ($err) {
      echo "cURL Error #: <br>" . $err;
} else {
      //$this->Result = json_decode($response, true);
      echo "Resposta : " . $response;
}


# SEGUNDA REQUISIÇÃO, ENVIA O COOKIE RECEBIDO DE VOLTA PARA O DOMINIO
$ch = curl_init();
// Através da operação CURLOPT_COOKIEFILE estarei enviando meu COOKIE.
curl_setopt_array($ch, array(
    CURLOPT_COOKIEFILE => $Cookie,
    CURLOPT_URL => 'http://camerasquadion.ddns.net:8000/camera.cgi',
    //CURLOPT_URL => 'camerasquadion.ddns.net',
    CURLOPT_RETURNTRANSFER => true,
));

$output = curl_exec($ch);


//print_r($output);

?>


<html>    
    <body>
        <h1>Access D-Guard</h1>
        <hr>

        <img src="http://camerasquadion.ddns.net:8000/camera.cgi?camera=108801&resolucao=640x480&qualidade=100&formato=jpg" />

    </body>
</html>

1 Ответ

0 голосов
/ 10 октября 2018

Похоже, логин / пароль неверны, поэтому ваш первый запрос не выполнен.

Кроме того, если вы хотите использовать PHP для аутентификации и конечный пользователь увидит изображение сразу без аутентификации, вам потребуетсячтобы загрузить изображение с помощью curl - оно будет в $response вашего первого звонка, где вам нужно сразу запросить URL изображения:

<?php
// ...
CURLOPT_URL => 'http://camerasquadion.ddns.net:8000/camera.cgi?camera=108801&resolucao=640x480&qualidade=100&formato=jpg',

Затем вы сохраните изображение на своем сервере или простовыведите его прямо в браузер:

<img src="data:image/jpg;base64,
<?=base64_encode($response)?>">

Возможно, вам придется настроить код, чтобы он работал, но это основная идея.

Опять же, первый шаг - это допустимыйимя пользователя и пароль для прохождения аутентификации.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...