簡體   English   中英

PHP curl:無法獲取網站內容-Cookies問題?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM