Модераторы: Aliance, skyboy, MoLeX, ksnk

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Не могу авторизироваться через CURL, cURL, https, aspx 
:(
    Опции темы
Kornev
  Дата 27.6.2012, 01:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 39
Регистрация: 12.12.2006

Репутация: нет
Всего: нет



Помогите, пожалуйста, разобраться. 
Написал код, который заходит на сайт и потом пробует на нем авторизироваться POST запросом.
Но почему то не авторизируется :(
Не могу разобраться в чем ошибся...?
Код

<?php
$user_agent = 'Mozilla/5.0 (Windows; U; Windows NT 6.0; ru; rv:1.9.2.13) ' .
            'Gecko/20101203 Firefox/3.6.13 ( .NET CLR 3.5.30729)';

$login = 'user';
$password = 'password';

$ch = curl_init();

// чтобы сайт думал, что мы - браузер:
curl_setopt($ch, CURLOPT_USERAGENT, $user_agent);

//Максимальное время в секундах, которое вы отводите для работы CURL-функций.
curl_setopt($ch, CURLOPT_TIMEOUT, 40);

// ответ сервера будем записывать в переменную
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);

//Внимание, важный момент, сертификатов, естественно, у нас нет, так что все отключаем
curl_setopt ($ch, CURLOPT_SSL_VERIFYPEER, 0);// не проверять SSL сертификат
curl_setopt ($ch, CURLOPT_SSL_VERIFYHOST, 0);// не проверять Host SSL сертификата

// по редиректам будем переходить автоматически.
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);

//Установите эту опцию в ненулевое значение, если вы хотите, чтобы шапка/header ответа включалась в вывод.
curl_setopt($ch, CURLOPT_HEADER, 1);

//Настойка опций cookie
curl_setopt($ch, CURLOPT_COOKIEJAR, 'cook.txt');//сохранить куки в файл
curl_setopt($ch, CURLOPT_COOKIEFILE, 'cook.txt');//считать куки из файла

// false т.к. мы не будем отправлять post запрос:
curl_setopt($ch, CURLOPT_POST, false);

// укажем страницу, с которой мы получим данные для старта
curl_setopt($ch, CURLOPT_URL, 'https://e-shop.pcshop.ua/');

$answer = curl_exec($ch);

$VIEWSTATE = substr($answer, strpos($answer, "VIEWSTATE\" value=\"") + 18, 60);

// true т.к. мы будем отправлять post запрос:
curl_setopt($ch, CURLOPT_POST, true);  

//Устанавливаем значение referer - адрес последней активной страницы
curl_setopt($curl, CURLOPT_REFERER, 'https://e-shop.pcshop.ua/');

curl_setopt($ch, CURLOPT_URL, 'https://e-shop.pcshop.ua/Login.aspx?ReturnUrl=%2fMainPage.aspx');

curl_setopt($ch, CURLOPT_COOKIEFILE, 'cook.txt');//считать куки из файла

//Формирование запроса таким образом, я счел более наглядным
$post = array(
            '__VIEWSTATE' => $VIEWSTATE,
            'usr' => $login,
            'pwd' => $password
        );
            
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($post));

$answer = curl_exec($ch);

echo $answer;

curl_close($ch);

?>

PM MAIL WWW   Вверх
Kornev
Дата 8.7.2012, 00:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 39
Регистрация: 12.12.2006

Репутация: нет
Всего: нет



Ув. форумчане, очень жду ответов, так как сам не могу решить эту проблему, хоть и пытаюсь всю неделю... smile 
PM MAIL WWW   Вверх
krypt3r
Дата 9.7.2012, 06:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 359
Регистрация: 9.6.2009

Репутация: 1
Всего: 16



Вы эта, включите хотя бы дебажный режим. А также запустите сниффер
PM MAIL   Вверх
MaXL
Дата 9.7.2012, 06:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Developer
**


Профиль
Группа: Участник
Сообщений: 380
Регистрация: 24.10.2005
Где: Владивосток

Репутация: нет
Всего: 2



Код

curl_setopt($ch, CURLOPT_COOKIEFILE, 'cook.txt');//считать куки из файла

а зачем вы ещё раз это делаете ?
вообще, в этот файл что-нибудь записывается после работы скрипта ?
Код

$VIEWSTATE = substr($answer, strpos($answer, "VIEWSTATE\" value=\"") + 18, 60);

 smile  в переменную viewstate точно попадает полный viewstate из страницы ? Посмотроите в строну ф-ции preg_match

И вообще, повыводите контент, что возвращает сервак.


--------------------
MaXL
PM MAIL   Вверх
Kornev
Дата 11.7.2012, 22:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 39
Регистрация: 12.12.2006

Репутация: нет
Всего: нет



Цитата(krypt3r @ 9.7.2012,  06:01)
Вы эта, включите хотя бы дебажный режим. А также запустите сниффер

Вы уж извините, но совсем не понимаю о чем именно идет речь. Если возможно, поясните более детально, пожалуйста.

Добавлено через 13 минут и 45 секунд
Цитата(MaXL @ 9.7.2012,  06:50)
Код

curl_setopt($ch, CURLOPT_COOKIEFILE, 'cook.txt');//считать куки из файла

а зачем вы ещё раз это делаете ?
вообще, в этот файл что-нибудь записывается после работы скрипта ?
Код

$VIEWSTATE = substr($answer, strpos($answer, "VIEWSTATE\" value=\"") + 18, 60);

 smile  в переменную viewstate точно попадает полный viewstate из страницы ? Посмотроите в строну ф-ции preg_match

И вообще, повыводите контент, что возвращает сервак.

закомментировал вторую часть кода и сделал echo $VIEWSTATE на этапе ее формирования.
Результат вроде как правильный... По крайней мере похож на тот, который выдает мне браузер, когда захожу на https://e-shop.pcshop.ua/

Я так понял, что эта переменная формируется каждый раз новая. По этому и сделал парсинг в 2-а этапа. Сначала захожу на https://e-shop.pcshop.ua/ для получения этой переменной. Потом передаю на https://e-shop.pcshop.ua/Login.aspx?ReturnU...2fMainPage.aspx Пост запрос с этой переменной включительно.

Почитал еще немного форумные обсуждения... Говорят, что вроде бы нужно в переменные пост запроса добавить имя кнопки Submit. В моем случае это вроде как <input type="submit" name="PleaseWaitButton" value="" id="PleaseWaitButton" class="WaitBtnClass"

Теперь массив $post выглядит так: $post = array(
            '__VIEWSTATE' => $VIEWSTATE,
            'usr' => $login,
            'pwd' => $password,
            'PleaseWaitButton' => ""
        );

Но все равно ничего не работает.

Ответ сервера: 
Код

HTTP/1.1 500 Internal Server Error Cache-Control: private Transfer-Encoding: chunked Content-Type: text/html; charset=windows-1251 Server: Microsoft-IIS/7.5 X-AspNet-Version: 2.0.50727 X-Powered-By: ASP.NET Date: Wed, 11 Jul 2012 19:04:39 GMT
Server Error in '/' Application.
Runtime Error
Description: An application error occurred on the server. The current custom error settings for this application prevent the details of the application error from being viewed remotely (for security reasons). It could, however, be viewed by browsers running on the local server machine.

Details: To enable the details of this specific error message to be viewable on remote machines, please create a <customErrors> tag within a "web.config" configuration file located in the root directory of the current web application. This <customErrors> tag should then have its "mode" attribute set to "Off".


<!-- Web.Config Configuration File -->

<configuration>
    <system.web>
        <customErrors mode="Off"/>
    </system.web>
</configuration>


Notes: The current error page you are seeing can be replaced by a custom error page by modifying the "defaultRedirect" attribute of the application's <customErrors> configuration tag to point to a custom error page URL.


<!-- Web.Config Configuration File -->

<configuration>
    <system.web>
        <customErrors mode="RemoteOnly" defaultRedirect="mycustompage.htm"/>
    </system.web>
</configuration>



Мой файл php изменил так:

Код

<?php
$user_agent = 'Mozilla/5.0 (Windows; U; Windows NT 6.0; ru; rv:1.9.2.13) ' .
            'Gecko/20101203 Firefox/3.6.13 ( .NET CLR 3.5.30729)';

$login = 'user';
$password = 'password';

$ch = curl_init();

// чтобы сайт думал, что мы - браузер:
curl_setopt($ch, CURLOPT_USERAGENT, $user_agent);

//Максимальное время в секундах, которое вы отводите для работы CURL-функций.
curl_setopt($ch, CURLOPT_TIMEOUT, 40);

// ответ сервера будем записывать в переменную
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);

//Внимание, важный момент, сертификатов, естественно, у нас нет, так что все отключаем
curl_setopt ($ch, CURLOPT_SSL_VERIFYPEER, 0);// не проверять SSL сертификат
curl_setopt ($ch, CURLOPT_SSL_VERIFYHOST, 0);// не проверять Host SSL сертификата

// по редиректам будем переходить автоматически.
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);

//Установите эту опцию в ненулевое значение, если вы хотите, чтобы шапка/header ответа включалась в вывод.
curl_setopt($ch, CURLOPT_HEADER, 1);

//Настойка опций cookie
curl_setopt($ch, CURLOPT_COOKIEJAR, 'cook.txt');//сохранить куки в файл
curl_setopt($ch, CURLOPT_COOKIEFILE, 'cook.txt');//считать куки из файла

// false т.к. мы не будем отправлять post запрос:
curl_setopt($ch, CURLOPT_POST, false);

// укажем страницу, с которой мы получим данные для старта
curl_setopt($ch, CURLOPT_URL, 'https://e-shop.pcshop.ua/');

$answer = curl_exec($ch);

$VIEWSTATE = substr($answer, strpos($answer, "VIEWSTATE\" value=\"") + 18, 60);

//echo $VIEWSTATE;

// true т.к. мы будем отправлять post запрос:
curl_setopt($ch, CURLOPT_POST, true);  

//Устанавливаем значение referer - адрес последней активной страницы
curl_setopt($curl, CURLOPT_REFERER, 'https://e-shop.pcshop.ua/');

curl_setopt($ch, CURLOPT_URL, 'https://e-shop.pcshop.ua/Login.aspx?ReturnUrl=%2fMainPage.aspx');

//curl_setopt($ch, CURLOPT_COOKIEFILE, 'cook.txt');//считать куки из файла

//Формирование запроса таким образом, я счел более наглядным
$post = array(
            '__VIEWSTATE' => $VIEWSTATE,
            'usr' => $login,
            'pwd' => $password,
            'PleaseWaitButton' => ""
        );
            
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($post));

$answer = curl_exec($ch);

echo $answer;

curl_close($ch);

?>


Ребята, помогите разобраться, пожалуйста.
Если нужно, готов отблагодорить  smile 
PM MAIL WWW   Вверх
Kornev
Дата 12.7.2012, 09:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 39
Регистрация: 12.12.2006

Репутация: нет
Всего: нет



Нашел следующую проблему:

Функция http_build_query($post) на выходе выдает такие данные:

__VIEWSTATE=%2FwEPaA8FDzhjZjJlMjNlM2FiMmU0NWQ1%2BCXU18LG2jhs23A8AjWmNL5yzQ%3D%3D&usr=user&pwd=password

Хотя в оригинале они должны выглядеть так:

__VIEWSTATE=/wEPaA8FDzhjZjJlMjNlM2FiMmU0NWQ1+CXU18LG2jhs23A8AjWmNL5yzQ==&usr=user&pwd=password

Т.е. переменная __VIEWSTATE должна быть "/wEPaA8FDzhjZjJlMjNlM2FiMmU0NWQ1+CXU18LG2jhs23A8AjWmNL5yzQ==" 
Смущает то, что она заканчивается на два знака ==, это никак не повлиеет на Post запрос?
PM MAIL WWW   Вверх
Kornev
Дата 12.7.2012, 09:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 39
Регистрация: 12.12.2006

Репутация: нет
Всего: нет



значения user и password не настоящие.
Если кому то необходимы настоящие значения для тестирования, дайте знать.
PM MAIL WWW   Вверх
MaXL
Дата 13.7.2012, 08:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Developer
**


Профиль
Группа: Участник
Сообщений: 380
Регистрация: 24.10.2005
Где: Владивосток

Репутация: нет
Всего: 2



Цитата(Kornev @  12.7.2012,  09:06 Найти цитируемый пост)
Функция http_build_query($post) на выходе выдает такие данные:


Всё правильно она выдаёт. Значения параметров преобразованные с помощью urlencode.


--------------------
MaXL
PM MAIL   Вверх
Kornev
Дата 15.7.2012, 17:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 39
Регистрация: 12.12.2006

Репутация: нет
Всего: нет



В чем же тогда проблема?

Может кто-то может сказать что нибудь умное по поводу ответа сервера.
Я его выкладывал ранее...

В какую сторону копать?
PM MAIL WWW   Вверх
MaXL
Дата 16.7.2012, 06:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Developer
**


Профиль
Группа: Участник
Сообщений: 380
Регистрация: 24.10.2005
Где: Владивосток

Репутация: нет
Всего: 2



Kornev, файл с cookies имеет права на запись скриптом ?


--------------------
MaXL
PM MAIL   Вверх
Kornev
Дата 16.7.2012, 11:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 39
Регистрация: 12.12.2006

Репутация: нет
Всего: нет



Цитата(MaXL @ 16.7.2012,  06:49)
Kornev, файл с cookies имеет права на запись скриптом ?

Проверил. Права доступа 777
Содержимое файла:

# Netscape HTTP Cookie File
http://www.netscape.com/newsref/std/cookie_spec.html
# This file was generated by libcurl! Edit at your own risk.

e-shop.pcshop.ua    FALSE    /    FALSE    0    ASP.NET_SessionId    udvnh055ix2jwz23jcjez145

Добавлено через 5 минут и 48 секунд
Вы не знаете, сколько может стоит реализовать этот скрипт?
Я уже задумываюсь, может стоит кому то денег заплптить...
PM MAIL WWW   Вверх
MaXL
Дата 17.7.2012, 05:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Developer
**


Профиль
Группа: Участник
Сообщений: 380
Регистрация: 24.10.2005
Где: Владивосток

Репутация: нет
Всего: 2



зашёл. посмотрел. вы не все поля передаёте. при нажатии на кнопку отправляются такие поля:
Цитата

PleaseWaitButton    
__EVENTVALIDATION    /wEWBALGnoWPDQLbs8iXBQLGmdGVDALAluXJCxHTAr4avhc3v+PVp/SyEuF6c1Ta
__VIEWSTATE    /wEPaA8FDzhjZjMxZjFkZWVlMTk0YWQVhDtiALAU57rsHDSfGmTQkwk44Q==
pwd    123
usr    test


Цитата

Вы не знаете, сколько может стоит реализовать этот скрипт?

знаю. в личку smile


--------------------
MaXL
PM MAIL   Вверх
Kornev
Дата 16.8.2012, 22:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 39
Регистрация: 12.12.2006

Репутация: нет
Всего: нет



Установил снифер ( HttpAnalyzerStdV6 ), чтоб проанализировать поведение браузера...
Пока ничего нового не заметил.
Во вкладке PostData вроде теже переменные:
Код

__VIEWSTATE        /wEPaA8FDzhjZjRhMTMxMmViYWFlNGTsCxvwsQEpMzANfz/jO2JWU5JyDg==      
__EVENTVALIDATION  /wEWBAKTwKX8AQLbs8iXBQLGmdGVDALAluXJCywCnX5V3Kq2Y0yedHaPWt4x70EI  
usr                login                                                          
pwd               password                                                      
PleaseWaitButton          
                         

во вкладке Header информации конечно немного больше:
Код

(Request-Line):POST /Login.aspx?ReturnUrl=%2fMainPage.aspx HTTP/1.1
Host:e-shop.pcshop.ua
User-Agent:Mozilla/5.0 (Windows NT 6.1; rv:13.0) Gecko/20100101 Firefox/13.0.1
Accept:text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language:ru-ru,ru;q=0.8,en-us;q=0.5,en;q=0.3
Accept-Encoding:gzip, deflate
Connection:keep-alive
Referer:https://e-shop.pcshop.ua/Login.aspx?ReturnUrl=%2fMainPage.aspx
Cookie:__utma=143786292.1824087480.1309086981.1334392891.1334426837.7; __utmz=143786292.1334426837.7.3.utmcsr=pcshop.ua|utmccn=(referral)|utmcmd=referral|utmcct=/; ASP.NET_SessionId=ucqa4l551v1x3i55m3enbk45
Content-Type:application/x-www-form-urlencoded
Content-Length:212
          

Нашел на форумах, что есть такая настройка для CURL:
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
а массив $headers выглядит примерно так:
Код

$headers = array(
            "Host: e-shop.pcshop.ua",
            "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8",
            "Accept-Language: ru-ru,ru;q=0.8,en-us;q=0.5,en;q=0.3",
            "Accept-Encoding: gzip, deflate",
            "Connection: keep-alive",
            "Content-Type: application/x-www-form-urlencoded"
        );    
                    
Но не могу разобраться, стоит ли вообще в эту сторону копать. Или проблема лежит где то в другом месте...
Написанный код по прежнему вызывает ошибку на сервере.
Вот принт скрин:
user posted image
http://s2.ipicture.ru/uploads/20120816/U5A1yo9W.jpg
На текущий момент код приобрел следующий вид:
Логин и пароль указанны не настоящие.
Если для тестирования нужны настоящие, пишите...
Код

<?php
$user_agent = 'Mozilla/5.0 (Windows; U; Windows NT 6.0; ru; rv:1.9.2.13) ' .
            'Gecko/20101203 Firefox/3.6.13 ( .NET CLR 3.5.30729)';

$usr = "sawka88";
$pwd = "password";

$ch = curl_init();

// чтобы сайт думал, что мы - браузер:
curl_setopt($ch, CURLOPT_USERAGENT, $user_agent);

//Максимальное время в секундах, которое вы отводите для работы CURL-функций.
curl_setopt($ch, CURLOPT_TIMEOUT, 60);

// ответ сервера будем записывать в переменную
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);

//Внимание, важный момент, сертификатов, естественно, у нас нет, так что все отключаем
curl_setopt ($ch, CURLOPT_SSL_VERIFYPEER, 0);// не проверять SSL сертификат
curl_setopt ($ch, CURLOPT_SSL_VERIFYHOST, 0);// не проверять Host SSL сертификата

// по редиректам будем переходить автоматически.
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);

//Установите эту опцию в ненулевое значение, если вы хотите, чтобы шапка/header ответа включалась в вывод.
curl_setopt($ch, CURLOPT_HEADER, 1);

//Настойка опций cookie
curl_setopt($ch, CURLOPT_COOKIEJAR, 'cook.txt');//сохранить куки в файл
curl_setopt($ch, CURLOPT_COOKIEFILE, 'cook.txt');//считать куки из файла

// false т.к. мы не будем отправлять post запрос:
curl_setopt($ch, CURLOPT_POST, false);

// укажем страницу, с которой мы получим данные для старта
curl_setopt($ch, CURLOPT_URL, 'https://e-shop.pcshop.ua/');

$answer = curl_exec($ch);

$VIEWSTATE = substr($answer, strpos($answer, "VIEWSTATE\" value=\"") + 18, 60);
$EVENTVALIDATION = substr($answer, strpos($answer, "EVENTVALIDATION\" value=\"") + 24, 64);

//echo $VIEWSTATE;

// true т.к. мы будем отправлять post запрос:
curl_setopt($ch, CURLOPT_POST, true);  

//==========================================================================

$headers = array(
            "Host: e-shop.pcshop.ua",
            "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8",
            "Accept-Language: ru-ru,ru;q=0.8,en-us;q=0.5,en;q=0.3",
            "Accept-Encoding: gzip, deflate",
            "Connection: keep-alive",
            "Content-Type: application/x-www-form-urlencoded"
        );

curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
//==========================================================================

//Устанавливаем значение referer - адрес последней активной страницы
curl_setopt($curl, CURLOPT_REFERER, 'https://e-shop.pcshop.ua/');

curl_setopt($ch, CURLOPT_URL, 'https://e-shop.pcshop.ua/Login.aspx?ReturnUrl=%2fMainPage.aspx');

//curl_setopt($ch, CURLOPT_COOKIEFILE, 'cook.txt');//считать куки из файла

//Формирование запроса таким образом, я счел более наглядным
$post = array(
           '__VIEWSTATE' => $VIEWSTATE,
           '__EVENTVALIDATION' => $EVENTVALIDATION,
            'usr' => $usr,
            'pwd' => $pwd,
            'PleaseWaitButton' => ""
        );

//curl_setopt($cl, CURLOPT_HTTPHEADER, array('X-REQUESTED-WITH: XMLHttpRequest'));  //иммитируем AJAX запрос        
$headers = array(
            "POST ".$page." HTTP/1.0",
            "Content-type: text/xml;charset=\"utf-8\"",
            "Accept: text/xml",
            "Cache-Control: no-cache",
            "Pragma: no-cache",
            "SOAPAction: \"run\"",
            "Content-length: ".strlen($xml_data),
            "Authorization: Basic " . base64_encode($credentials)
        );
            
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($post));

//$http_query="PleaseWaitButton=&__VIEWSTATE=".$VIEWSTATE."&__EVENTVALIDATION=".$EVENTVALIDATION."&usr=".$usr."&pwd=".$pwd;
//$http_query="__VIEWSTATE=".$VIEWSTATE."&usr=".$usr."&pwd=".$pwd;
//curl_setopt($ch, CURLOPT_POSTFIELDS, $http_query);

$answer = curl_exec($ch);

//echo $http_query;
echo http_build_query($post);
echo "<br>";

echo $answer;

curl_close($ch);

?>

PM MAIL WWW   Вверх
нуп
Дата 17.8.2012, 01:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ботокодер
**


Профиль
Группа: Участник
Сообщений: 987
Регистрация: 22.6.2009
Где: Кременчуг

Репутация: нет
Всего: 33



В коде много переменных которые не объявлены: $curl, $page, $xml_data, $credentials
Делайте все поэтапно, выводите результат и смотрите что не так.

Это сообщение отредактировал(а) нуп - 17.8.2012, 01:32
PM MAIL   Вверх
Kornev
Дата 17.8.2012, 12:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 39
Регистрация: 12.12.2006

Репутация: нет
Всего: нет



Извиняюсь.
Из-за неправильного КОПИ - ПАСТА в коде был неиспользуемый кусок кода.
отредактированный вариант по прежнему не работает:
Код

<?php
$user_agent = 'Mozilla/5.0 (Windows; U; Windows NT 6.0; ru; rv:1.9.2.13) ' .
            'Gecko/20101203 Firefox/3.6.13 ( .NET CLR 3.5.30729)';

$usr = "sawka88";
$pwd = "password";

$ch = curl_init();

// чтобы сайт думал, что мы - браузер:
curl_setopt($ch, CURLOPT_USERAGENT, $user_agent);

//Максимальное время в секундах, которое вы отводите для работы CURL-функций.
curl_setopt($ch, CURLOPT_TIMEOUT, 60);

// ответ сервера будем записывать в переменную
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);

//Внимание, важный момент, сертификатов, естественно, у нас нет, так что все отключаем
curl_setopt ($ch, CURLOPT_SSL_VERIFYPEER, 0);// не проверять SSL сертификат
curl_setopt ($ch, CURLOPT_SSL_VERIFYHOST, 0);// не проверять Host SSL сертификата

// по редиректам будем переходить автоматически.
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);

//Установите эту опцию в ненулевое значение, если вы хотите, чтобы шапка/header ответа включалась в вывод.
curl_setopt($ch, CURLOPT_HEADER, 1);

//Настойка опций cookie
curl_setopt($ch, CURLOPT_COOKIEJAR, 'cook.txt');//сохранить куки в файл
curl_setopt($ch, CURLOPT_COOKIEFILE, 'cook.txt');//считать куки из файла

// false т.к. мы не будем отправлять post запрос:
curl_setopt($ch, CURLOPT_POST, false);

// укажем страницу, с которой мы получим данные для старта
curl_setopt($ch, CURLOPT_URL, 'https://e-shop.pcshop.ua/');

$answer = curl_exec($ch);

$VIEWSTATE = substr($answer, strpos($answer, "VIEWSTATE\" value=\"") + 18, 60);
$EVENTVALIDATION = substr($answer, strpos($answer, "EVENTVALIDATION\" value=\"") + 24, 64);

//echo $VIEWSTATE;

// true т.к. мы будем отправлять post запрос:
curl_setopt($ch, CURLOPT_POST, true);  

//==========================================================================

$headers = array(
            "Host: e-shop.pcshop.ua",
            "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8",
            "Accept-Language: ru-ru,ru;q=0.8,en-us;q=0.5,en;q=0.3",
            "Accept-Encoding: gzip, deflate",
            "Connection: keep-alive",
            "Content-Type: application/x-www-form-urlencoded"
        );

curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
//==========================================================================

//Устанавливаем значение referer - адрес последней активной страницы
curl_setopt($curl, CURLOPT_REFERER, 'https://e-shop.pcshop.ua/');

curl_setopt($ch, CURLOPT_URL, 'https://e-shop.pcshop.ua/Login.aspx?ReturnUrl=%2fMainPage.aspx');

//curl_setopt($ch, CURLOPT_COOKIEFILE, 'cook.txt');//считать куки из файла

//Формирование запроса таким образом, я счел более наглядным
$post = array(
           'PleaseWaitButton' => "",
           '__VIEWSTATE' => $VIEWSTATE,
           '__EVENTVALIDATION' => $EVENTVALIDATION,
            'usr' => $usr,
            'pwd' => $pwd
        );
            
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($post));

//$http_query="PleaseWaitButton=&__VIEWSTATE=".$VIEWSTATE."&__EVENTVALIDATION=".$EVENTVALIDATION."&usr=".$usr."&pwd=".$pwd;
//$http_query="__VIEWSTATE=".$VIEWSTATE."&usr=".$usr."&pwd=".$pwd;
//curl_setopt($ch, CURLOPT_POSTFIELDS, $http_query);

$answer = curl_exec($ch);

//echo $http_query;
echo http_build_query($post);
echo "<br>";

echo $answer;

curl_close($ch);

?>


Вопрос в следующем:
стоит ли копать в сторону передаваемой переменной $headers
и функции curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);

Могут ли они вызывать такую ошибку?
В прошлых версиях кода эта переменная и функция вообще не использовались. Ошибка была такая же...
PM MAIL WWW   Вверх
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Сеть | Следующая тема »


 




[ Время генерации скрипта: 0.1023 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.