2015-12-30 185 views
0

Firefox有一個名爲httprequester的插件。 (https://addons.mozilla.org/en-US/firefox/addon/httprequester/PHP捲曲頭(?)問題

當我使用插件發送帶有特定cookie的GET請求時,一切正常。

請求頭:

GET https://store.steampowered.com/account/ 
Cookie: steamLogin=*removed because of obvious reasons* 

響應頭:

200 OK 
Server: Apache 
... (continued, not important) 

然後我試圖做同樣的事情與捲曲:

$ch = curl_init("https://store.steampowered.com/account/"); 
curl_setopt($ch, CURLOPT_VERBOSE, 1); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0); 
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0); 
curl_setopt($ch, CURLOPT_HEADER, 1); 
curl_setopt($ch, CURLOPT_HTTPHEADER, array("Cookie: steamLogin=*removed because of obvious reasons*")); 
curl_setopt($ch, CURLINFO_HEADER_OUT, 1); 
$response = curl_exec($ch); 
$request_header = curl_getinfo($ch, CURLINFO_HEADER_OUT); 

echo "<pre>$request_header</pre>"; 
echo "<pre>$response</pre>"; 

請求頭:

GET /account/ HTTP/1.1 
Host: store.steampowered.com 
Accept: */* 
Cookie: steamLogin=*removed because of obvious reasons* 

響應頭:

HTTP/1.1 302 Moved Temporarily 
Server: Apache 
... (continued, not important) 

我不知道是否有任何與我的問題,但我注意到一件事是,請求頭的第一線是不同的

GET https://store.steampowered.com/account/ 

GET /account/ HTTP/1.1 
Host: store.steampowered.com 

我的問題是,我得到與插件和302捲曲200 HTTP代碼,但我要送(或嘗試發送)相同請求。

+0

讓我直截了當地說,問題是爲什麼請求停在302 HTTP代碼上? –

+0

您似乎忘記提及問題所在。 – marekful

+0

我的問題是,我得到200的HTTP代碼與插件和302捲曲,但我發送(或試圖發送)相同的請求。 – user3210615

回答

1

頁面做一些重定向,所以你必須遵循它

curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true); 
+0

我編輯了我的問題。我的問題是,我得到了200個http代碼與addon和302 curl,但我發送(或嘗試發送)相同的請求。 – user3210615

+0

@ user3210615您是否嘗試過使用此代碼發佈?我不知道這個插件是如何構建的,所以我不能確切地說它是如何工作的,但我很確定這個302可以使用我提供的代碼在curl中解析。 –

+0

我剛試過。我打印出回覆,並且網站要求我登錄 - >登錄未成功。 (有插件,是的) – user3210615

1

如果我真的瞭解你的問題,那麼cURL並沒有遵循重定向。他不這樣做默認情況下,你需要設置一個選項:

curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true); 

有了這個,cURL能夠跟隨重定向。

要設置cookie來要求使用的,(你可能需要通過用戶代理):

curl_setopt($ch, CURLOPT_COOKIE, "Cookie: steamLogin=*removed because of obvious reasons*; User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:43.0) Gecko/20100101 Firefox/43.0"); 
+0

我編輯了我的問題。我的問題是,我得到了200個http代碼與addon和302 curl,但我發送(或嘗試發送)相同的請求。 – user3210615

+0

隨着CURL選項,我在我的答案中提到,你會得到200響應 –

+0

是的,但隨着插件,我立即得到代碼200,因爲我設法用cookie登錄,但與捲曲登錄不成功 – user3210615

0

我認爲你的插件默認從瀏覽器發送useragent字符串。如果你添加curra請求的useragent字符串,我相信你的問題將解決!

curl_setopt($ch, CURLOPT_HTTPHEADER, array(
    "Cookie: steamLogin=*removed because of obvious reasons*", 
    "User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:43.0) Gecko/20100101 Firefox/43.0" 
));