我正在请求具有cURL的站点,该站点可以自动登录,但是在脚本登录后,每个GET
请求的所有内容都能完美运行,并且URL中包含“localhost”而不是站点的实际域,因此它会抛出找不到404
错误。
示例:而不是https://remotesite.com/dashboard http://localhost.com/dashboard (另请注意,http://localhost.com/dashboard没有使用https)
这是我的代码:
$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;
答案 0 :(得分:0)
这是因为您尝试访问的站点在其href中使用亲戚路径。 因此,您应该尝试更改base tag以使用正确的域名。
这个问题可能会对您有所帮助:Curl and relative path in <head>。