Я пытаюсь опубликовать форму с помощью cUrl.
Я использую PHP, но сайт, на котором я хочу публиковать, использует aspx. Последние два дня я просматривал интернет-решения и думаю, что зашел довольно далеко, но он все еще не работает. У меня есть скрытые поля и идентификатор сессии asp, и мне также удалось отправить соответствующие куки.
Это не веб-сайт https, поэтому не требуется проверка SSL, а также не используются прокси-серверы или какая-либо другая форма аутентификации.
Curl не возвращает никаких ошибок.
После публикации вручную, та же страница возвращается с некоторой дополнительной информацией, которая является результатами, которые мне нужны. Но с curl, результат такой же, как на странице только с формой.
Страница требует куки, но я думаю, что я решил эту проблему, потому что я больше не получаю уведомления об этом.
Тем не менее, на панели Firebug Net не отображаются данные Post. Так может керл ничего не публикует?
Вот мой код:
$fields = array(
'ToolkitScriptManager_HiddenField' => '',
'__EVENTTARGET' => '',
'__EVENTARGUMENT' => '',
'__VIEWSTATE' => $viewstate, // when using urlencode() or rawurlencode(), i get message: Object moved to here, which links to an error page.
'__EVENTVALIDATION' => $eventval,
'scrollY' => 460
);
// get ASP.NET_SessionId from cookie file (need to do this because cookie file doen not contain AcceptCookie=Accept=True)
// set the cookies we need
// looks like we only need 2 relevant cookies: ASP.NET_SessionId and AcceptCookie
$cookie_string = 'SC_ANALYTICS_GLOBAL_COOKIE=64d9c94544d04fb6ac221265e99cb914; mf_user=1; __utma=66847866.1614717554.1414684101.1415373395.1415378138.6; __utmz=66847866.1414684101.1.1.utmcsr=(direct)|utmccn=(direct)|utmcmd=(none); ';
$cookie_string .= 'AcceptCookie=Accept=True; ' . 'ASP.NET_SessionId=' .getAspSessionidFromCookiefile($cookies) . ';';
var_dump($cookie_string);
curl_setOpt($ch, CURLOPT_POST, TRUE);
curl_setopt($ch, CURLOPT_POSTFIELDS, $fields); // can be passed as array or not ??
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows NT 6.3; WOW64; rv:33.0) Gecko/20100101 Firefox/33.0");
// curl_setopt($ch, CURLOPT_AUTOREFERER, TRUE);
curl_setopt($ch, CURLOPT_REFERER, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
'Content-Type: text/html;',
'Connection: Keep-Alive',
'Host: www.website.com'
));
// curl_setopt($ch,CURLOPT_HEADER,true);
// curl_setopt($ch,CURLINFO_HEADER_OUT,true);
// curl_setopt($ch, CURLOPT_COOKIEFILE, $cookies); // gives notice 'this site requires cookies'
curl_setopt($ch, CURLOPT_COOKIE, $cookie_string); // no notice, but still not get the result page
// $cookie = 'SC_ANALYTICS_GLOBAL_COOKIE=64d9c94544d04fb6ac221265e99cb914; mf_user=1; __utma=66847866.1614717554.1414684101.1415373395.1415378138.6; __utmz=66847866.1414684101.1.1.utmcsr=(direct)|utmccn=(direct)|utmcmd=(none); AcceptCookie=Accept=True; ASP.NET_SessionId=hz3yt4blbfaiv2eyd4zds155;';
// curl_setopt($ch, CURLOPT_COOKIE, $cookie); // no notice about cookies, but cookie content probably not good, so try to rewrite cookie data as string$result = curl_exec($ch);
echo 'Error: ';
var_dump(curl_error($ch)); // returns: Error: string(0)
echo ' - Code: ';
var_dump(curl_errno($ch)); // returns: Code: int(0)
echo ' - curl getinfo: ';
var_dump(curl_getinfo($ch),true);
echo ' result = <br/><br/><br/>';
var_dump($result);
//close connection
curl_close($ch);
Любая помощь будет принята с благодарностью.
Задача ещё не решена.
Других решений пока нет …