Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Сеть > Не могу авторизироваться через CURL


Автор: Kornev 27.6.2012, 01:44
Помогите, пожалуйста, разобраться. 
Написал код, который заходит на сайт и потом пробует на нем авторизироваться 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);

?>

Автор: Kornev 8.7.2012, 00:39
Ув. форумчане, очень жду ответов, так как сам не могу решить эту проблему, хоть и пытаюсь всю неделю... smile 

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

Автор: 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

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

Автор: Kornev 11.7.2012, 22:07
Цитата(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?ReturnUrl=%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 

Автор: Kornev 12.7.2012, 09:06
Нашел следующую проблему:

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

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

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

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

Т.е. переменная __VIEWSTATE должна быть "/wEPaA8FDzhjZjJlMjNlM2FiMmU0NWQ1+CXU18LG2jhs23A8AjWmNL5yzQ==" 
Смущает то, что она заканчивается на два знака ==, это никак не повлиеет на Post запрос?

Автор: Kornev 12.7.2012, 09:50
значения user и password не настоящие.
Если кому то необходимы настоящие значения для тестирования, дайте знать.

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


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

Автор: Kornev 15.7.2012, 17:48
В чем же тогда проблема?

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

В какую сторону копать?

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

Автор: Kornev 16.7.2012, 11:16
Цитата(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 секунд
Вы не знаете, сколько может стоит реализовать этот скрипт?
Я уже задумываюсь, может стоит кому то денег заплптить...

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

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


Цитата

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

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

Автор: Kornev 16.8.2012, 22:49
Установил снифер ( 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"
        );    
                    
Но не могу разобраться, стоит ли вообще в эту сторону копать. Или проблема лежит где то в другом месте...
Написанный код по прежнему вызывает ошибку на сервере.
Вот принт скрин:
http://s2.ipicture.ru/Gallery/Viewfull/12519010.html
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);

?>

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

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

<?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);

Могут ли они вызывать такую ошибку?
В прошлых версиях кода эта переменная и функция вообще не использовались. Ошибка была такая же...

Автор: Fortop 17.8.2012, 22:52
Цитата(Kornev @  16.8.2012,  22:49 Найти цитируемый пост)
HttpAnalyzerStdV6 

Что-то он на таких сайтах лежит, что я даже опасаюсь его качать...

Fiddler2 вам в помощь.

Добавлено через 43 секунды
В нем вы можете и просмотреть отправленные запросы и сэмулировать свои.
Когда получите результат, пишите в код.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)