PHP卷头(?)问题

PHP卷头(?)问题,php,curl,header,Php,Curl,Header,firefox有一个插件叫做httprequester。() 当我使用插件发送带有特定cookie的GET请求时,一切正常 请求标头: GET https://store.steampowered.com/account/ Cookie: steamLogin=*removed because of obvious reasons* GET https://store.steampowered.com/account/ 响应标题: 200 OK Server: Apache ... (co

firefox有一个插件叫做httprequester。()

当我使用插件发送带有特定cookie的GET请求时,一切正常

请求标头:

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

200 OK
Server:  Apache
... (continued, not important)
GET /account/ HTTP/1.1
Host: store.steampowered.com
然后我试着用卷曲做同样的事情:

$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>";
响应标题:

200 OK
Server:  Apache
... (continued, not important)
GET /account/ HTTP/1.1
Host: store.steampowered.com
我不知道这是否与我的问题有关,但我注意到请求头的第一行是不同的

curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);


我的问题是,我用插件得到200个http代码,用curl得到302个,但是我正在发送(或试图发送)相同的请求。

如果我真的理解您的问题,问题是curl没有遵循重定向。默认情况下,他不会这样做,您需要设置一个选项:

curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
有了这个,cURL就能够跟踪重定向

要将Cookie设置为请求使用(您可能需要传递用户代理):


页面正在进行重定向,因此您必须遵循它


我认为您的插件默认情况下会从浏览器发送useragent字符串。如果您在curl请求中添加useragent字符串,我相信您的问题将得到解决


让我直截了当地说,问题是为什么请求在302 HTTP代码上停止?您似乎忘记了提到问题是什么。我的问题是,我使用插件获得200 HTTP代码,使用curl获得302 HTTP代码,但是我正在发送(或试图发送)相同的请求。我编辑了我的问题。我的问题是,我用插件获得了200个http代码,用curl获得了302个,但是我正在发送(或试图发送)相同的请求。@user3210615您是否尝试过使用我发布的代码?我不知道这个插件是如何构建的,所以我不能确切地说它是如何工作的,但是我非常确定这个302可以用我提供的代码在curl中解决。我只是尝试了一下。我打印了回复,网站希望我登录->登录不成功。(使用插件,是的)@user3210615我刚刚尝试了我的帐户,我可以使用cookie
streamloginsecure
成功地使用curl,它与另一个略有不同。另外,请注意,只有在运行此脚本的浏览器中已登录steam的情况下,您使用的此方法才会起作用。每次登录时,Cookies都会更改in@user3210615是的,成功了。请注意,它的值与其他值不同,因此您需要将其保存到我编辑的问题中。我的问题是,我用插件得到了200个http代码,而用curl得到了302个代码,但是我正在发送(或试图发送)相同的请求。使用我在回答中提到的curl选项,您将得到200个responseYea,但用插件我立即得到了代码200,因为我已设法用cookie登录,但是,使用curl登录失败。您试图通过curl头进行登录,对吗?如果是,则不是
CURLOPT\u HTTPHEADER
选项,而是
CURLOPT\u COOKIE
。看这个:@VitorLuis这不应该有任何区别,因为他正确地使用了Cookie头。如果你使用
CURLOPT_COOKIE
你应该摆脱
COOKIE:
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
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"
));