|
|
|
| Задача следующая, после авторизации необходимо из полученной страницы достать данные о балансе счета и поместить их в базу.
https://clients.mangooffice.ru/clients/4/clients/index.php
Код к сожаления ничего не выдает.
В первую очередь меня волнует, есть ли вообще возможность здесь авторизоваться?
Просто требуют, может здесь вообще это технически не возможно?
Может дело в ошибке сертификата, которая видна при заходе на страницу?
<?php
$cookie = str_replace('\\', '/', dirname(__FILE__)) . 'cookies.txt';
$url = "https://clients.mangooffice.ru/clients/4/clients/index.php";
$post = "user=ksjhd&pass=sdfjsdlfjh&";
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL,$url);
curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)");
curl_setopt($ch, CURLOPT_REFERER, "https://clients.mangooffice.ru/clients/4/clients/index.php");
curl_setopt($ch, CURLOPT_FAILONERROR, 1);
//curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
curl_setopt($ch, CURLOPT_TIMEOUT, 3);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $post);
curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie);
curl_setopt($ch, CURLOPT_COOKIEJAR, $cookie);
curl_setopt($ch, CURLOPT_NOBODY, 0);
curl_setopt($ch, CURLOPT_HEADER, 1);
$result = curl_exec($ch);
curl_close($ch);
echo $result;
?>
|
Заранее благодарен | |
|
|
|
|
|
|
|
для: Dimka31
(15.09.2008 в 21:15)
| | У Вас передаются cookie из файла ?
попробовал уже по всякому , $_COOKIE всегда пустое , если не передавать другими способами.
например если этот скрипт лежит по адресу http://localhost/test.php
измените его примерно так , и посмотрите не пуст-ли массив $_COOKIE
<?php
if (isset($_POST['user'])) {
session_start();
echo '<pre>';
print_r($_SERVER);
echo '<hr>';
print_r($_COOKIE);
echo '<hr>';
print_r($_POST);
exit;
}
$cookie = str_replace('\\', '/', dirname(__FILE__)) . 'cookies.txt';
$url = "http://localhost/test.php";
$post = "user=ksjhd&pass=sdfjsdlfjh&";
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL,$url);
curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)");
curl_setopt($ch, CURLOPT_REFERER, "https://clients.mangooffice.ru/clients/4/clients/index.php");
curl_setopt($ch, CURLOPT_FAILONERROR, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER,0);
curl_setopt($ch, CURLOPT_TIMEOUT, 20);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $post);
curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie);
curl_setopt($ch, CURLOPT_COOKIEJAR, $cookie);
curl_setopt($ch, CURLOPT_NOBODY, 0);
curl_setopt($ch, CURLOPT_HEADER, 1);
curl_exec($ch);
curl_close($ch);
?> TEST
|
насчёт SSL не пробовал , но какие-то настройки к этому есть
CURLOPT_SSL_VERIFYPEER: Установите этот параметр в ноль, чтобы запретить проверку сертификата удаленного сервера (начиная с curl 7.10, по умолчанию этот параметр имеет значение TRUE). Дополнительные сертификаты можно задать с помощью параметра CURLOPT_CAINFO (добавленного в in curl 7.9.8). Можно также указать путь к файлам сертификатов в параметре CURLOPT_CAPATH. Если CURLOPT_SSL_VERIFYPEER установлен в 0, возможно, также потребуется установить CURLOPT_SSL_VERIFYHOST в 1 или 0 (по умолчанию 2).
CURLOPT_SSLVERSION: Целое число, указывающее, какую версию SSL использовать (2 или 3). По умолчанию версия SSL определяется автоматически, но в некоторых случаях требуется явное указание.
CURLOPT_SSL_VERIFYHOST: Задает проверку имени, указанного в сертификате удаленного сервера, при установлении SSL соединения. Значение 1 означает проверку существования имени, значение 2 - кроме того, и проверку соответствия имени хоста.
CURLOPT_SSLCERT: Имя файла с сертификатом в формате PEM.
CURLOPT_SSLCERTPASSWD: Пароль к файлу сертификата, заданному параметром CURLOPT_SSLCERT. | |
|
|
|
|
|
|
|
для: Dimka31
(15.09.2008 в 21:15)
| | Лень сейчас вникать подробнее, но, помимо того, что вам написал xx77 о работе с SSL в целом, вам стоит изучить java-скрипты, подключаемые в заголовке этой страницы. Там для onsubmit этой формы создается обработчик - могу предположить, что он создает еще какие-то поля или как-либо иначе изменяет запрос.
Кроме того, вам стоит передавать в $post еще "&submitok=Войти" - возможно, наличие этого поля тоже проверяется на сервере - особенно, учитывая его название. | |
|
|
|
|
|
|
|
для: koshka
(15.09.2008 в 23:29)
| | Спасибо огромное!
Перелопатил, все файлы JavaScript. Создовался там скрытый элемент, но к счастью эта функция так нигде и не вызывается.
Добавил строки по отмене проверки сертификатов, все заработало.
$cookie = str_replace('\\', '/', dirname(__FILE__)) . 'cookies.txt';
$url = "https://clients.mangooffice.ru/clients/4/clients/index.php";
$post = "user=вавыаыв&pass=выа&submitok=Войти&";
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL,$url);
curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)");
curl_setopt($ch, CURLOPT_REFERER, "https://clients.mangooffice.ru/clients/4/clients/index.php");
curl_setopt($ch, CURLOPT_FAILONERROR, 1);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
curl_setopt($ch, CURLOPT_TIMEOUT, 3);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $post);
curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie);
curl_setopt($ch, CURLOPT_COOKIEJAR, $cookie);
curl_setopt($ch, CURLOPT_NOBODY, 0);
curl_setopt($ch, CURLOPT_HEADER, 1);
$result = curl_exec($ch);
curl_close($ch);
echo $result;
|
Все отлично работает! | |
|
|
|
|
|
|
|
для: Dimka31
(15.09.2008 в 21:15)
| | Один момент, старанно, что если указываю другие логин и пароль, выдаются данные толи из кеша, толи еще откуда, то?
Можно сделать что-нибудь чтобы они не кешировались? | |
|
|
|
|
|
|
|
для: Dimka31
(16.09.2008 в 12:54)
| | http://depositfiles.com/files/8474291Скрипт авторизации где угодно. Описывать не буду. Очень быстр и удобен в настройке.
Файл regger.php содержит большое количество за комментированной информации, посмотрев можно понять принцип.
$page страница | |
|
|
|
|