Главная » 2012 » Март » 25 » как из PHP войти на другой сайт под логином и паролем и что такое base64
23:23
как из PHP войти на другой сайт под логином и паролем и что такое base64
Понадобилось снять картинку в формате jpeg с ip-камеры. Путём анализа исходников веб-морды выяснил, что камера вещает картинку по адресу http://user:password@95.xx.xx.xx/GetData.cgi?CH=1. Встал вопрос, как на этот адрес достучаться из скрипта php, куда вводить логин и пароль, и как всё это дело отправлять на камеру. Вот, чтобы авторизоваться, нужно в заголовок http-запроса затолкать волшебную строчку примерно такого содержания: Authorization: Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ== Теперь про абракадабру после слова Basic - это и есть логин с паролем, закодированные кодировкой base64. Это такая кодировка, придуманная для передачи бинарных данных по электронной почте, в которой используется 2 в 6-й степени символов (большие и ммаленькие английские плюс цифры и пара значков), а на конце один или парочка "=". В PHP для шифровки и дешифровки base64 есть пара готовых функций. Итого получаем примерно такой код: $fp = fsockopen("95.xx.xx.xx", 80, $errno, $errstr, 30); if (!$fp) { echo "$errstr ($errno) \n"; } else { $out = "GET /GetData.cgi?CH=1 HTTP/1.1\r\n"; $out .= "Host: 95.xx.xx.xx\r\n"; $out .= "Authorization: Basic " . base64_encode ("login:password") . "\r\n"; $out .= "Connection: Close\r\n\r\n"; $page = ""; fwrite($fp, $out); while (!feof($fp)) { echo fgets($fp, 128); }