[Обновление] К сожалению, у меня никогда не было возможности решить эту проблему.Однако ниже приведены некоторые интересные ответы, которые стоит попробовать другим читателям, желающим сделать что-то подобное.
Я пытаюсь проанализировать данные с сайта, на котором работает ASP.NET.На этом сайте есть страница входа, по которой я успешно прошел (используя законную учетную запись) и для которой сохранен файл cookie, но когда я углубляюсь в сайт, мне нужно перемещаться по нему, обновляя UpdatePanels с помощью асинхронных обратных передач.UpdatePanels содержат данные, которые я хочу.
Я пытаюсь сделать все это с помощью PHP и curl.Я могу успешно загрузить начальную страницу.Когда я отправляю на целевую страницу POST со всеми соответствующими данными (полученными через плагин Tamper Data в Firefox), отраженный результат, возвращаемый curl, всегда очищает мою страницу.Как правило, отображение результата просто распечатывает (или издает ошибку / искаженный текст) дальше по странице.curl_error () ничего не распечатывает, поэтому что-то не так с тем, что мне возвращают.
Я не знаю, как это сделать отсюда.Пожалуйста, скажите мне, если: а) вы знаете, какую ошибку я получаю, б) если это вообще возможно с использованием исключительно PHP, и в) если, наоборот, мне нужно стряхнуть javascript для взаимодействия с UpdatePanels ASP.NET.
$uri = "TARGETURL";
$cl=curl_init();
curl_setopt($cl, CURLOPT_URL, $uri);
curl_setopt($cl, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:5.0) Gecko/20100101 Firefox/5.0');
curl_setopt($cl, CURLOPT_COOKIEFILE, "/tmp/cookie2.txt");
curl_setopt($cl, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($cl, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($cl, CURLOPT_CONNECTTIMEOUT, 0);
curl_setopt($cl, CURLOPT_POST, 1);
$postdata=array(
"__VIEWSTATE" => $viewstate,
"OTHER DATA" => "asdfkljsddflkjshdjf",
"__ASYNCPOST" => "true",
);
echo "";
print_r($postdata);
echo "
"; curl_setopt ($ cl, CURLOPT_POSTFIELDS, $ postdata); $ result = curl_exec ($ cl); // выполнить команду curl echo $ result;
ЗдесьЗаголовок и Тело, которые я получаю обратно с сервера (отправленные мне по электронной почте, чтобы обойти очистку страницы с помощью оператора echo):
HEADER RESPONSE:
HTTP/1.1 100 Continue
HTTP/1.1 200 OK
Cache-Control: no-cache
Pragma: no-cache
Content-Type: text/plain; charset=utf-8
Expires: -1
Server: Microsoft-IIS/7.5
X-Content-Type-Options: nosniff
Set-Cookie: culture=en-US; expires=Tue, 27-Nov-2012 20:02:37 GMT; path=/
X-Powered-By: ASP.NET Date: Mon, 28 Nov 2011 20:02:37 GMT
Content-Length: 112
BODY RESPONSE:
69|dataItem||<script type="text/javascript">window.location="about:blank"</script>|11|pageRedirect||/Error.aspx|
Это объясняет проблему, которую я получаю со страницейстановится пустым (javascript перенаправляет вывод из моего браузера). Это также указывает на то, что заголовок не является проблемой, так как я получаю ошибку HTTP из-за неправильных значений заголовка.