2014-03-05 29 views
0

我打開一個頁面作爲登錄用戶,它似乎工作,除了網站有某種保護系統。如果我通常這樣做,我會得到我想要的頁面,但如果我用cURL來做,我會得到'Welcome back user(userid)'和一個鏈接到我請求的頁面。一旦我點擊鏈接,我就會得到我想要的位置。現在我嘗試僞造引用者並檢查發送到頁面的數據,這裏沒有什麼特別的。當我點擊鏈接時,我只是簡單地重定向到我想要的頁面。我的問題是,爲什麼沒有這個代碼讓我有作爲:作爲登錄用戶失敗的cURL/PHP開放

$ch = curl_init(); 
curl_setopt($ch, CURLOPT_URL , "http://www.site.com/sell/index"); 
curl_setopt($ch, CURLOPT_REFERER, 'http://www.site.com'); 
curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/525.13 (KHTML, like Gecko) Chrome/0.A.B.C Safari/525.13"); 
curl_setopt($ch, CURLOPT_COOKIESESSION, true); 
curl_setopt($ch, CURLOPT_FAILONERROR, false); 
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true); 
curl_setopt($ch, CURLOPT_FRESH_CONNECT, false); 
curl_setopt($ch, CURLOPT_POST, false); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 30); 
curl_setopt($ch, CURLOPT_COOKIEJAR, "cookie.txt"); 
$response = curl_exec($ch); 
curl_close($ch); 
echo $response; 

我這樣做只是之前,我進行登錄過程和搶餅乾。而且我確實可以以登錄用戶的身份打開頁面,我似乎無法訪問它,而無需點擊ahref。

PS。如果我登錄,打開我想要的頁面,關閉瀏覽器並再次打開它,也會發生同樣的情況。所以我認爲這與推薦人有關?

+0

是否使用'curl_setopt($ ch,CURLOPT_MAXREDIRS,10);'有什麼幫助? – Quixrick

+0

@Quixrick nope我得到了同樣的結果。該網站知道我已登錄,但似乎知道我也在使用cURL。如果它有所不同,則Cookie文件在其中包含多個Cookie。 –

+0

嗯,那我不知道。除此之外,我能想到的是將瀏覽器訪問的頭文件與cURL訪問頭文件進行比較。聽起來像你可能已經這樣做了,但。 – Quixrick

回答

1

cookie-jar意味着它會保存你的cookie從curl的響應。這就是爲什麼它不適合你。相反,使用的cookie文件,使您的捲曲發送存儲的cookie要求:

curl_setopt($ch, CURLOPT_COOKEFILE, "cookie.txt"); 

此外,而不是使用相對路徑絕對路徑(/var/tmp/cookie.txt)。

現在,快樂!

+0

謝謝!但我很高興,但這並沒有解決問題。該網站仍然知道我使用捲曲並迫使我點擊'href',這實質上會重新加載頁面以達到我想要的=) –

+0

@SamFisher檢查其他http標題。可能是瀏覽器發送了諸如'x-http-header'之類的頭文件,這會爲ajax調用生成。 –

+0

我會確保我這樣做,有沒有更好的方法來檢查究竟需要什麼捲曲,或者我用瀏覽器挖掘並試圖捕捉它? –

相關問題