Авторизуйтесь с помощью curl и разбирайте с помощью простого HTML, который не работает

0

Я пытаюсь прочитать html-страницу, используя простой html dom, для которого требуется авторизация входа.

например: http://example.com/login/ - страница входа в систему, а http://example.com/page/ - это где я должен разбирать html.

Поэтому я использовал завиток, чтобы выполнить логин и простой html dom для разбора.

Но я не знаю, зарегистрирована ли моя страница или нет, потому что когда я показываю ответ от curl, это содержимое страницы входа!

Я просматривал стек по всем связанным вопросам в течение многих часов, но я не мог найти, что происходит не так.

ниже мой код

<?php
$curlPost['username']="username";
$curlPost['password']="pass";
$curlPost['token']="xxxxxxxxxx";

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL , "http://example.com/login/");
curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/525.13 (KHTML, like Gecko) Chrome/0.A.B.C Safari/525.13");
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $curlPost);
curl_setopt($ch, CURLOPT_HEADER, true);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($ch, CURLOPT_COOKIEFILE, "cookies.txt");
curl_setopt($ch, CURLOPT_COOKIEJAR, "cookies.txt");
$response= curl_exec ($ch);
curl_close($ch);

И код для извлечения html-страницы

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL , "http://example.com/page/");
curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/525.13 (KHTML, like Gecko) Chrome/0.A.B.C Safari/525.13");
curl_setopt($ch, CURLOPT_HEADER, true);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_COOKIEFILE, "cookies.txt");
curl_setopt($ch, CURLOPT_COOKIEJAR, "cookies.txt");
$reponse= curl_exec ($ch);
curl_close($ch);

echo $response;
?>

Ниже я получаю ответ в верхней части моей страницы:

HTTP/1.1 302 Найдено
Дата: ср, 28 янв 2015 06:59:44 GMT
Сервер: Apache
X-Powered-By: PHP/5.3.3
Cache-Control: no-cache
Откуда:
Передача-кодирование: chunked
Content-Type: text/html; кодировка = UTF-8

HTTP/1.1 200 OK
Дата: ср, 28 янв 2015 06:59:45 GMT
Сервер: Apache
X-Powered-By: PHP/5.3.3
Cache-Control: no-cache
Передача-кодирование: chunked
Content-Type: text/html; кодировка = UTF-8

а затем содержимое html страницы входа в систему.

Любой может посоветовать мне, что я делаю неправильно.

Я запускаю это в своем локальном хосте с местом назначения, размещенным на сервере.

И я не видел никаких изменений, происходящих с файлом "cookies.txt".

Большое спасибо.

  • 0
    Попробуйте установить путь к cookies.txt как абсолютный путь, например /var/www/app/cookies.txt, а затем установите соответствующее разрешение для cookies.txt. Если вход выполнен успешно, вы можете увидеть текст в cookies.txt
  • 0
    Я попытался запустить, загрузив на сервер, но по-прежнему не произошло никаких изменений с файлами cookie. ps: следовал по полному пути, как указано для cookie.txt
Теги:
curl
simple-html-dom

1 ответ

0

Это выглядит как обычный выход для меня. Если вы не хотите заголовки, не устанавливайте CURLOPT_HEADER

  • 0
    хорошо, если он войдет в систему, он должен вернуть содержимое содержимого example.com/page, а не содержимое exmple.com/login .
  • 0
    Похоже, вам нужно работать над своим вопросом. Сначала выясните, что вы пытаетесь спросить, и убедитесь, что где-то есть (?).
Показать ещё 5 комментариев

Ещё вопросы

Сообщество Overcoder
Наверх
Меню