プロキシを使う PHP cURL ハンドルで Cookie を有効にする
プロキシ経路を別途設定しつつ、宛先の Cookie を PHP cURL の Cookie エンジンに保持します。
リクエストを運ぶのはプロキシです。クライアントがどの宛先 Cookie を送るかを決めるのは PHP cURL の Cookie エンジンです。転送を行うハンドルで両方を設定します。この処理が公開の中継役を使ってよい場合、HTTP プロキシ一覧が経路の候補を提供します:
curl_setopt($handle, CURLOPT_PROXY, 'http://203.0.113.10:8080');
curl_setopt($handle, CURLOPT_COOKIEFILE, '');COOKIEFILE を空にすると、初期 Cookie ファイルを読み込まずに Cookie エンジンが有効になります。同じハンドルでの後続リクエストは、宛先から受け取った一致する Cookie を送信できます。
別々に作られたハンドルやプロセスをまたいで保持するには、意図した Cookie ファイルの方針を使ってください。COOKIEFILE は Cookie を読み取り、COOKIEJAR は libcurl が保持する Cookie を書き込みます。COOKIEJAR にパスを与えても、それを読み取ることはありません。
Cookie ファイルは、アプリケーションが意図するセッションやアカウントごとに分けてください。同時実行のジョブが共有するファイルは、各ジョブが選ぶプロキシとは無関係に状態を混在させます。セッション Cookie はパスワードと表示されていなくてもアクセスを与えうるため、ファイルを保護してください。
クリーンアップの前に現在の Cookie 状態を書き出す必要がある場合は、libcurl の文書化された Cookie コマンドを確認してください。古い PHP サンプルの curl_close 呼び出しを、状態が書き出される時機の唯一の説明として頼らないでください。
プロキシ IP が変わっても、アプリケーションが変更しない限りCookie の方針はそのままです。拒否されたセッションは、プロキシがログインを覚えているはずだと決めつけず、宛先からの応答として診断してください。