0

多くのサイトでスクレイピングを行いましたが、特に 1 つのサイトで Cookie が Cookie ファイルに保存されていません。何か案は?

$ch = curl_init($url); 
curl_setopt($ch, CURLOPT_URL,$url);
curl_setopt($ch,CURLOPT_TIMEOUT,8200);
curl_setopt($ch,CURLOPT_TIMEOUT_MS,8200);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT ,8200);
$cookie_file = "cookies/zapper.txt";
curl_setopt($ch, CURLOPT_COOKIESESSION, true);
curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie_file);
curl_setopt($ch, CURLOPT_COOKIEJAR, $cookie_file);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_HEADER, 0);
if ($fields) {curl_setopt($ch,CURLOPT_POST, count($fields)); }
if ($fields) {curl_setopt($ch,CURLOPT_POSTFIELDS, $fields_string); }

これは、Cookie の保存に応答しない最初のサイトです。他のすべては同じコードを使用し、完全に機能します。私は彼らのフォームの投稿をエミュレートし、チェックしている場合に備えてヘッダーを偽造しました[それら.

カートに追加するプロセスを模倣しようとしているサイトは、http://zapper.co.uk/です。

4

1 に答える 1

1

curl_setopt に関する php.net サイトから可能な解決策を直接読んでください。ヘッダー出力から Cookie コンテンツを取得することは回避策です。クールな代替案のようです。

また、curl_setop でいくつかのルールを変更すると、驚くべき結果が得られる場合があります。必要以上のオプションを使用することがあります。

echoまた、コンテンツ全体をお勧めします$ch(ブラウザのようにページを印刷します)。ライブ結果のコンテンツを表示するヘッダーに詳細なエラーが表示されないことがあります。

于 2013-11-01T14:21:02.350 に答える