这是我的代码:
$ch = curl_init('http://www1.macys.com/index.ognc');
curl_setopt($ch,CURLOPT_COOKIE,"shippingCountry=US; currency=USD");
curl_setopt ($ch, CURLOPT_COOKIEFILE, "C:/cookie-techenclave.txt");
curl_setopt($ch, CURLOPT_COOKIEJAR, "C:/cookie-techenclave.txt");
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, TRUE); // Follow redirects
curl_setopt($ch, CURLOPT_MAXREDIRS, 8); // Limit redirections to four
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE); // Return in string
$pageString = curl_exec($ch);
curl_close($ch) ;
我试图设置的2个cookie没有设置。我用netcat测试了这个。 这是netcat捕获的输出。
D:\php\L.c.MSQL.E.T.DVD\EF\SQL> "D:\My Downloads\apps\nc111nt\nc.exe" -l -p 80
GET /beauty/index_template.php HTTP/1.1
User-Agent: Opera/9.80 (Windows NT 5.1; U; en) Presto/2.10.229 Version/11.64
Host: localhost
Accept: text/html, application/xml;q=0.9, application/xhtml+xml, image/png, image/webp, image/jpeg, image/gif, image/x-x
bitmap, */*;q=0.1
Accept-Language: en-US,en;q=0.9
Accept-Encoding: gzip, deflate
Connection: Keep-Alive
可以看出,那里没有cookie标题。我究竟做错了什么?我还能尝试什么? 我尝试捕获并设置所有标题,但我试图设置的cookie再没有任何效果。
由于
答案 0 :(得分:4)
如果您希望curl自动更新cookie的值基于服务器响应,请不要使用CURLOPT_COOKIE。 因为请求cookie将硬编码为CURLOPT_COOKIE的值。在这种情况下,CURLOPT_COOKIEFILE和CURLOPT_COOKIEJAR将被忽略。
你确定提供的网络嗅探来自上面的PHP代码吗?我没有看到USER_AGENT在代码上设置,但它可以在你的嗅探中使用。