Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: Авторизация с cURL
Форумы портала PHP.SU » PHP » Программирование на PHP » Авторизация с cURL

Страниц (1): [1]
 

1. Delovoy - 14 Января, 2011 - 10:00:49 - перейти к сообщению
Хочу написать скрипт, который автоматически авторизуется на сайте, но не до конца понимаю как это сделать!

Установил Proxomitron
получил следующую картину авторизации на сайте:

Цитата:

+++GET 35+++
Using Proxy - 10.224.100.2:18080
POST http://www[dot]cis[dot]net[dot]ua/Content/It[dot][dot][dot]inIntoSystem.php HTTP/1.0
User-Agent: Opera/9.80 (Windows NT 5.1; U; ru) Presto/2.7.62 Version/11.00
Host: www[dot]cis[dot]net[dot]ua
Accept: text/html, application/xml;q=0.9, application/xhtml+xml, image/png, image/jpeg, image/gif, image/x-xbitmap, */*;q=0.1
Accept-Language: ru-RU,ru;q=0.9,en;q=0.8
Accept-Charset: iso-8859-1, utf-8, utf-16, *;q=0.1
Accept-Encoding: deflate, gzip, x-gzip, identity, *;q=0
Proxy-Authorization: Basic a292YWxza2l5OmJlcmdoZWFz
Referer: http://www[dot]cis[dot]net[dot]ua/Content/It[dot][dot][dot]inIntoSystem.php
Cookie: b=b; iua=1; phpbb2mysql_data=a%3A2%3A%7Bs%3A11%3A%22autologinid%22%3Bs%3A0%3A%22%22%3Bs%3A6%3A%22userid%22%3Bi%3A-1%3B%7D; documentation=t7ekp8qg25bmdcvr6irfin70q2; b=b; iua=1
Cookie2: $Version=1
Content-Length: 27
Content-Type: application/x-www-form-urlencode d
Connection: keep-alive
Posting 27 bytes...

+++RESP 35+++
HTTP/1.0 200 OK
Date: Fri, 14 Jan 2011 07:58:26 GMT
Server: Apache/2.2.3 (CentOS)
X-Powered-By: PHP/5.2.17
Expires: Thu, 19 Nov 1981 08:52:00 GMT
Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Pragma: no-cache
Content-Type: text/html
X-Cache: MISS from mx.cis.net.ua
Proxy-Connection: close


В самой форме авторизации вводятся всего два параметра:
логин и пароль
Логично было бы, если бы они передались как параметры метода POST
но как это происходит ...не пойму
в данном листинге никакие параметры не передаются или я ошибаюсь ?
2. JustUserR - 14 Января, 2011 - 14:59:23 - перейти к сообщению
Delovoy пишет:
Логично было бы, если бы они передались как параметры метода POST
но как это происходит ...не пойму
В данном листинге никакие параметры не передаются или я ошибаюсь ?
Приведенная форма описания документов передаваемых HTTP-запросов на целевой web-сервер осуществляющая процесс авторизации с заданными параметрами - в действительности включает отправку требуемых информационных полей с реализаацией предварительной модификации уровеня трактовки элементов относительно операции URL-кодирования
Отсутсивие отображения реального передаваемого информационного поля POST-запроса связано с соответствующей конфигурацией приложения Proxomitron - поскольку в предполагаемом документе вместо реального значения используется выражение Posting 27 bytes...
3. Delovoy - 14 Января, 2011 - 18:32:37 - перейти к сообщению
О, спасибо! Дело сдвинулось с мертвой точки!
Нашел настройки отображения в журнале

получилось вот что:

Спойлер (Отобразить)



теперь собственно сам код авторизации:
PHP:
скопировать код в буфер обмена
  1.  // инициализация сеанса
  2.             $ch = curl_init();
  3.  
  4.             // установка URL и других необходимых параметров
  5.             curl_setopt($ch, CURLOPT_URL,"http://address.ua/");
  6.  
  7.             // установка метода передачи параметров
  8.             curl_setopt($ch, CURLOPT_POST, 1);
  9.            
  10.             // установка браузера
  11.             curl_setopt ($ch, CURLOPT_USERAGENT, "Opera/9.80 (Windows NT 5.1; U; ru) Presto/2.7.62 Version/11.00");
  12.  
  13.             // добавляем заголовков к нашему запросу. Чтоб смахивало на настоящего пользователя :)
  14.             $headers = array
  15.                 (
  16.                 'Accept: text/html, application/xml;q=0.9, application/xhtml+xml, image/png, image/jpeg, image/gif, image/x-xbitmap, */*;q=0.1',
  17.                 'Accept-Language: ru-RU,ru;q=0.9,en;q=0.8',
  18.                 'Accept-Encoding: deflate, gzip, x-gzip, identity, *;q=0',
  19.                 'Accept-Charset: iso-8859-1, utf-8, utf-16, *;q=0.1'
  20.             );
  21.  
  22.             curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
  23.  
  24.             // Прокси и авторизация
  25.             curl_setopt($ch, CURLOPT_PROXY, '10.224.100.2 : 18080');
  26.             curl_setopt($ch, CURLOPT_PROXYUSERPWD, 'username:userpass');
  27.  
  28.             // Подделываем значение - откуда пришли данные.
  29.             curl_setopt($ch, CURLOPT_REFERER, "http://address.ua/");
  30.  
  31.            
  32.             // Функции для обработки установливаемых сайтом кук.
  33.             curl_setopt($ch, CURLOPT_COOKIEJAR, "d:\out\my_cookies.txt");
  34.             curl_setopt($ch, CURLOPT_COOKIEFILE, "d:\out\my_cookies.txt");
  35.        
  36.             // разрешить переадресацию
  37.             curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
  38.  
  39.  
  40.             $param = 'formId=Logon
  41.                      &UserEmail=steel_d%40mail.ru
  42.                      &Password=address2010
  43.                      &RememberMe=false
  44.                      &x=50
  45.                      &y=12
  46.                          ';
  47.  
  48.  
  49.  
  50.             // параметры метода POST
  51.             curl_setopt($ch, CURLOPT_POSTFIELDS,$param);
  52.  
  53.  
  54.             // загрузка страницы и выдача её браузеру
  55.             $out = curl_exec($ch);
  56.  
  57.             // завершение сеанса и освобождение ресурсов
  58.             curl_close($ch);


но выдается повторно страница авторизации! следовательно авторизация происходит с ошибкой ...
подскажите где накосячил ?
4. Мелкий - 14 Января, 2011 - 18:57:00 - перейти к сообщению
У вас лишние символы передаются, попробуйте так:
PHP:
скопировать код в буфер обмена
  1. $param = 'formId=Logon&UserEmail=steel_d%40mail.ru&Password=address2010&RememberMe=false&x=50&y=12';


И вижу ещё одну потенциальную проблему: Accept-Encoding: deflate, gzip, x-gzip, identity, *;q=0
Вам и ответ зазипованный придёт, лучше их вырежьте.
5. JustUserR - 15 Января, 2011 - 19:05:49 - перейти к сообщению
Delovoy пишет:
О, спасибо! Дело сдвинулось с мертвой точки! Нашел настройки отображения в журнале
Пожалуйста! В качестве возможной причины осуществления некоррекного функционирования предполагаемого PHP-приложения автоматизированной авторизации на уделенном web-узле - может являться передача параметров информационных полей запроса в уровне трактования отличном о требуемого элеметного кодирования - что является прямым следствием интерполяции произвольных значений на этапе формирования целевого элемента запроса отличного от требуемого уровня
6. Delovoy - 17 Января, 2011 - 10:00:47 - перейти к сообщению
Убрал "лишние" символы и все заработало!
Спасибо, Мелкий!

Отдельное спасибо, JustUserR Радость
Ваш уровень трактования параметров моего запроса отличный от требуемого элемента кодирования, что скорее всего, как вы сами понимаете, является прямым следствием использования специфического построения излагаемых данных на этапе формирования ответа. Подумайте над этим ... Подмигивание
7. JustUserR - 17 Января, 2011 - 15:05:33 - перейти к сообщению
Delovoy пишет:
Отдельное спасибо, JustUserR
Ваш уровень трактования параметров моего запроса отличный от требуемого элемента кодирования, что скорее всего, как вы сами понимаете, является прямым следствием использования специфического построения излагаемых данных на этапе формирования ответа. Подумайте над этим ...
Пожалуйста! Улыбка В действительности предполагаемая вами сентенция является важной в вопросе о формировании конечной формы включения элементов в информационные поля при осуществлении их транспортировки на целевую строну - это является обусловленным тем фактом что построение конечных информационных полей производится из комбинации данных различного уровня представления и элементов кодирования - при этом возможные используемые средства диагностического просмотра также обеспечивает перевод трактования элементов данные в соответсвии с собственным форматом отображения - по этой причине для однозначного просмотра передаваемых информационных полей целесообразно осуществить их перевод в байтовый формат и производить сравнение с шаблоном Улыбка
8. Delovoy - 18 Января, 2011 - 12:16:01 - перейти к сообщению
все! сдаюсь ))))))

 

Powered by ExBB FM 1.0 RC1