N.B: Я просмотрел Login with PHP curl and CSRF token и cURL CSRF Token, Login with CURL php and CSRF token, а затем некоторые перед публикацией.PHP: cURL с маркером CSRF
Я создаю систему, которая имеет функцию (если она работает) для анализа данных с другого сайта. Этот сайт требует входа с пользователем, пароль & csrf token. См. Ниже код.
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_COOKIEJAR, $cookie);
curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($ch);
if (curl_errno($ch)) die(curl_error($ch));
$doc = new DOMDocument();
$doc->loadHTML($response);
$token = $doc->getElementsByTagName("csrf")->attributes->getNamedItem("value")->value[0];
echo "TOKEN: {$token} ";
curl_setopt($ch, CURLOPT_RETURNTRANSFER, false);
curl_setopt($ch, CURLOPT_POST, true);
$params = array(
'username' => $username,
'password' => $password,
'csrf' => $token
);
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($params));
curl_exec($ch);
if (curl_errno($ch)) print curl_error($ch);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, false);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_COOKIEJAR, $cookie);
curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie);
curl_setopt($ch, CURLOPT_POSTFIELDS, $postinfo);
$html = curl_exec($ch);
print("<br />HTML: ".$html);
if (curl_errno($ch)) print curl_error($ch);
curl_close($ch);
Я слегка модифицировал сценарии из приведенных выше вопросов, но я получать эти ошибки:
Предупреждения: DOMDocument :: loadHTML(): htmlParseEntityRef: ожидающие ';' в Entity, строка: 24 в /home/dlip/subdomains$/eportaltest.website.com/public_html/ticket_load.php на линии 18
Внимание: DOMDocument :: loadHTML(): Неожиданный конечный тег: формы в Сущности, линия: 76 в /home/dlip/subdomains$/eportaltest.website.com/public_html/ticket_load.php на линии 18
Внимание: DOMDocument :: loadHTML(): Tag нав недействительным в Entity , строка: 124 в /home/dlip/subdomains$/eportaltest.website.com/public_html/ticket_load.php on line 18
Внимание: DOMDocument :: loadHTML(): Метка раздела недействителен в Сущности, строка: 140 в /home/dlip/subdomains$/eportaltest.website.com/public_html/ticket_load.php на линии 18
Предупреждение: DOMDocument :: loadHTML(): имя ошибки синтаксического анализа атрибутов в Entity, строка: 176 в /home/dlip/subdomains$/eportaltest.website.com/public_html/ticket_load.php на линии 18
Следуя инструкциям по вышеуказанным вопросам, я также пробовал использовать
$doc->loadHTML(htmlentities($response))
не имеет никакой пользы.
У кого-нибудь есть подсказки, что происходит не так? Я понимаю, что это может быть связано с сайтом, но как мне обойти его?
Спасибо :)
Вы получаете токен csrf? Причина, по которой вы видите эти предупреждения, заключается в том, что на сайте, который вы пытаетесь проанализировать, есть недопустимый HTML. – OptimusCrime
Нет. Считаете ли вы, что просто будет проще взорвать страницу и просто взять бит, который мне нужен в этом случае? – DLipscombe