Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: CURL работает ли с HTTPS
 
 автор: Dimka31   (15.09.2008 в 21:15)   письмо автору
 
 

Задача следующая, после авторизации необходимо из полученной страницы достать данные о балансе счета и поместить их в базу.

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($chCURLOPT_URL,$url); 
curl_setopt($chCURLOPT_USERAGENT"Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)"); 
curl_setopt($chCURLOPT_REFERER"https://clients.mangooffice.ru/clients/4/clients/index.php"); 
curl_setopt($chCURLOPT_FAILONERROR1); 
//curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1); 
curl_setopt($chCURLOPT_RETURNTRANSFER,1); 
curl_setopt($chCURLOPT_TIMEOUT3); 
curl_setopt($chCURLOPT_POST1); 
curl_setopt($chCURLOPT_POSTFIELDS$post); 
curl_setopt($chCURLOPT_COOKIEFILE$cookie); 
curl_setopt($chCURLOPT_COOKIEJAR$cookie); 
curl_setopt($chCURLOPT_NOBODY0); 
curl_setopt($chCURLOPT_HEADER1); 
$result curl_exec($ch); 
curl_close($ch); 
echo 
$result
?> 


Заранее благодарен

  Ответить  
 
 автор: xx77   (15.09.2008 в 23:05)   письмо автору
 
   для: 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($chCURLOPT_URL,$url);  
curl_setopt($chCURLOPT_USERAGENT"Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)");  
curl_setopt($chCURLOPT_REFERER"https://clients.mangooffice.ru/clients/4/clients/index.php");  
curl_setopt($chCURLOPT_FAILONERROR1);  
curl_setopt($chCURLOPT_RETURNTRANSFER,0);  
curl_setopt($chCURLOPT_TIMEOUT20);  
curl_setopt($chCURLOPT_POST1);  
curl_setopt($chCURLOPT_POSTFIELDS$post);  
curl_setopt($chCURLOPT_COOKIEFILE$cookie);  
curl_setopt($chCURLOPT_COOKIEJAR$cookie);  
curl_setopt($chCURLOPT_NOBODY0);  
curl_setopt($chCURLOPT_HEADER1);  
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.

  Ответить  
 
 автор: koshka   (15.09.2008 в 23:29)   письмо автору
 
   для: Dimka31   (15.09.2008 в 21:15)
 

Лень сейчас вникать подробнее, но, помимо того, что вам написал xx77 о работе с SSL в целом, вам стоит изучить java-скрипты, подключаемые в заголовке этой страницы. Там для onsubmit этой формы создается обработчик - могу предположить, что он создает еще какие-то поля или как-либо иначе изменяет запрос.

Кроме того, вам стоит передавать в $post еще "&submitok=Войти" - возможно, наличие этого поля тоже проверяется на сервере - особенно, учитывая его название.

  Ответить  
 
 автор: Dimka31   (16.09.2008 в 11:49)   письмо автору
 
   для: 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   (16.09.2008 в 12:54)   письмо автору
 
   для: Dimka31   (15.09.2008 в 21:15)
 

Один момент, старанно, что если указываю другие логин и пароль, выдаются данные толи из кеша, толи еще откуда, то?

Можно сделать что-нибудь чтобы они не кешировались?

  Ответить  
 
 автор: qyest-gmx   (05.10.2008 в 20:18)   письмо автору
 
   для: Dimka31   (16.09.2008 в 12:54)
 

http://depositfiles.com/files/8474291Скрипт авторизации где угодно. Описывать не буду. Очень быстр и удобен в настройке.

Файл regger.php содержит большое количество за комментированной информации, посмотрев можно понять принцип.

$page страница

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования