Я запрашиваю сайт с cURL, который автоматически входит в систему, и хотя все работает идеально каждый GET
запрос после входа в систему скрипта будет содержать «localhost» в URL-адресе, а не фактический домен сайта, поэтому он выдает 404
не найдена ошибка.
Пример: вместо того, чтобы быть https://remotesite.com/dashboard оно делает http://localhost.com/dashboard (Также обратите внимание, что он не использует https для http://localhost.com/dashboard)
Вот мой код:
$curl = curl_init();
$user_agent = 'Mozilla/5.0 (Windows NT 6.1; rv:8.0) Gecko/20100101 Firefox/8.0';
$url = 'https://remotesite.com/dashboard';
$post_data = 'username=username&password=password&cookie=true&destination=&login=Log+In';
curl_setopt ($curl, CURLOPT_URL, $url);
curl_setopt ($curl, CURLOPT_USERAGENT, $user_agent);
curl_setopt ($curl, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt ($curl, CURLOPT_HEADER, 0);
curl_setopt ($curl, CURLOPT_POSTFIELDS, $post_data);
curl_setopt ($curl, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt ($curl, CURLOPT_RETURNTRANSFER, 1);
curl_setopt ($curl, CURLOPT_AUTOREFERER, 1);
curl_setopt ($curl, CURLOPT_COOKIEFILE, "cookie.txt");
curl_setopt ($curl, CURLOPT_COOKIEJAR, "cookie.txt");
$result = curl_exec ($curl);
$errmsg = curl_error($curl);
echo $result;
Это происходит потому, что сайт, к которому вы пытаетесь получить доступ, использует пути родственников в своих ссылках.
Поэтому вы должны попробовать изменить базовый тег использовать правильный домен.
Этот вопрос может помочь вам: Скручиваемость и относительный путь в <голова> .
Других решений пока нет …