![](/img/trans.png)
[英]How to get Cookies content from HTTP Request Header in CURL php?
[英]PHP curl: Can't get site content - cookies issue?
我正在嘗試獲取該網站的內容: http://www.gratka.pl/
: http://www.gratka.pl/
,但我僅收到以下信息:
*關於connect()到gratka.pl端口80
*正在嘗試195.8.99.42 ... *已連接
*連接到gratka.pl(195.8.99.42)端口80
GET / HTTP / 1.1
用戶代理:Mozilla / 5.0(Windows; U; Windows NT 5.1; pl; rv:1.9.1.2)Gecko / 20090729 Firefox / 3.5.2
主持人:gratka.pl
接受:* / *<HTTP / 1.1 302找到
<緩存控制:無緩存
<內容長度:0
<位置:..
*連接#0到主機gratka.pl完好無損
*向該URL發出另一個請求:' http : //blad.gratka.pl/403.html '
*關於connect()到blad.gratka.pl端口80
*嘗試195.8.99.1 ... *已連接
*連接到blad.gratka.pl(195.8.99.1)端口80
GET /403.html HTTP / 1.1
用戶代理:Mozilla / 5.0(Windows; U; Windows NT 5.1; pl; rv:1.9.1.2)Gecko / 20090729 Firefox / 3.5.2
主持人:blad.gratka.pl
接受:* / *
...
<HTTP / 1.1 302找到
<緩存控制:無緩存
<內容長度:0
<位置: http : //blad.gratka.pl/403.html
*與主機blad.gratka.pl的連接#1保持不變
*最大(20)個重定向
*關閉連接#0
*關閉連接#1
這意味着我一直用來獲取內容的腳本不起作用:
$ch = curl_init();
$timeout = 15;
$cookie_file_path = 'c.txt';
$fp = fopen($cookie_file_path, "w");
fclose($fp);
$url = 'http://gratka.pl';
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_HEADER, 1);
curl_setopt($ch, CURLOPT_VERBOSE, true);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows; U; Windows NT 5.1; pl; rv:1.9.1.2) Gecko/20090729 Firefox/3.5.2');
curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie_file_path);
curl_setopt($ch, CURLOPT_COOKIEJAR, $cookie_file_path);
$info = curl_exec($ch);
curl_close($ch);
執行腳本后,cookie文件(c.txt)為空。 怎么了? 也許網站需要有效的Cookie,或者是正確的HTTP標頭問題? 任何幫助將不勝感激!
編輯:當我在本地主機上執行以上腳本時,它正在工作,但是在專用服務器上執行時,它不工作。 有猜到嗎?
您的代碼是正確的。 只需將這條線添加到curl section
$curl = curl_init();
curl_setopt($curl, CURLOPT_HTTPHEADER, Array("User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.15) Gecko/20080623 Firefox/2.0.0.15") );
curl_setopt($curl, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_ENCODING, "gzip");
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
$data = curl_exec($curl);
curl_close($curl);
return $data;
我遇到了同樣的問題,我在另一台服務器上嘗試了我的代碼,然后它起作用了。 我想我的第一台服務器被禁止了。 :)
我猜想gratka在不需要您時會指向http://blad.gratka.pl/403.html 。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.