1

これは私のコードです:

$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 には何の効果もありませんでした。

ありがとう

4

1 に答える 1

4

サーバーの応答に基づいて curl 自動更新 Cookie の値が必要な場合は、CURLOPT_COOKIE を使用しないでください。リクエスト Cookie は CURLOPT_COOKIE の値にハードコードされるためです。この場合、CURLOPT_COOKIEFILE と CURLOPT_COOKIEJAR は無視されます。

また、提供されたネットワーク スニフが上記の PHP コードからのものであると確信していますか? コードに USER_AGENT が設定されていませんが、スニフで使用できます。

于 2012-05-17T10:48:17.237 に答える