Параметры URL CURL не получены сервером - PullRequest
0 голосов
/ 26 декабря 2018

Я хочу получить полный исходный код HTML с помощью curl / php с веб-сайта, который имеет простой логин.Я могу выполнить процесс входа в систему и получить исходный код, но сервер на другом конце, похоже, игнорирует все параметры html.

Когда я запускаю приведенный ниже код, я получаю исходный код этого URL: https://www.example.com/page, а не https://www.example.com/page?user=1&date=2018-12-12. Если я открою URL с параметрами в любом веб-браузере, он покажет правильный веб-сайт.

Я попытался получить другой сайт с параметрами с другого сервераи веб-сайт, который работал отлично: https://www.example2.com/otherpage?user=1&date=2018-12-12

<?php define('USERNAME', 'user');
define('PASSWORD', '1234');
define('USER_AGENT', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64)
AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.113
Safari/537.36'); 
define('COOKIE_FILE', 'cookie.txt');
define('LOGIN_FORM_URL', 'https://www.example.com/admin');
define('LOGIN_ACTION_URL', 'https://www.example.com/admin');

$postValues = array(
    'user' => USERNAME,
    'pass' => PASSWORD 
); 
$curl = curl_init();

curl_setopt($curl, CURLOPT_URL, LOGIN_ACTION_URL); 
curl_setopt($curl, CURLOPT_POST, true); 
curl_setopt($curl, CURLOPT_POSTFIELDS, http_build_query($postValues));   

curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false); 
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false); 
curl_setopt($curl, CURLOPT_COOKIEJAR, COOKIE_FILE); 
curl_setopt($curl, CURLOPT_USERAGENT, USER_AGENT);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true); 
curl_setopt($curl, CURLOPT_REFERER, LOGIN_FORM_URL); 
curl_setopt($curl, CURLOPT_FOLLOWLOCATION, true);   

curl_exec($curl);
if(curl_errno($curl)){
    throw new Exception(curl_error($curl)); 
}  

curl_setopt($curl, CURLOPT_URL, "https://www.example.com/page?user=1&date=2018-12-12");
curl_setopt($curl, CURLOPT_COOKIEJAR, COOKIE_FILE); 
curl_setopt($curl, CURLOPT_USERAGENT, USER_AGENT); 
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false); 
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);

echo curl_exec($curl);

?>

Источник: http://thisinterestsme.com/php-login-to-website-with-curl/

Я запутался, потому что он работает с example2.com, но не с example.com (которыеКонечно два разных веб-сервера и сайты).Есть идеи?

1 Ответ

0 голосов
/ 20 февраля 2019

Я нашел обходной путь, который работает:

Создайте новый файл .php с этой простой строкой кода:

header('Location: https://www.example.com/page?user=1&date=2018-12-12');

И в основном файле .php просто замените URLвыше с новыми файлами .php url:

curl_setopt($curl, CURLOPT_URL, "newfile.php");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...