PHP cURL は訪問者の IP を使えるか
サーバー側の cURL 接続を開くのはどのマシンか、その経路を変えるためにプロキシが何を必要とするかを説明します。
訪問者がボタンを押します。あなたの PHP サーバーが外部 API を呼び出します。API が見るのはサーバーからの発信接続、またはその接続に設定されたプロキシの出口です。訪問者のブラウザはあなたのサイトへの別の接続を扱っています。
訪問者のアドレスをヘッダーにコピーしても、PHP の接続を訪問者のネットワークへ移すことはできません。ヘッダーはすでに確立した接続の上で送られるデータです。宛先が自身のアプリケーションロジックで信頼済みの転送ヘッダーを使うことはありますが、それによってヘッダーの値が接続の送信元アドレスになるわけではありません。
プロキシが接続を受け入れる必要がある
PHP cURL を別のマシン経由で送るには、そのマシンがリクエストを運ぶ許可を持つ到達可能なプロキシサービスを提供している必要があります。PHP プロセスがそこへ接続できなければなりません。訪問者の通常のブラウザセッションは、あなたのサーバーにそのような汎用のプロキシエンドポイントを与えません。
libcurl のプロキシオプションは cURL が接続するサービスを選びます。任意のブラウザに代わりにリクエストを発信させることはできません。
ブラウザからのリクエストは別の設計
一部の API では、ブラウザが宛先を直接呼び出せます。その場合リクエストはユーザーのネットワーク経路に載り、ユーザー自身のプロキシ設定に従います。ブラウザクライアント向けに設計された API も必要です。クロスオリジンのアクセスは CORS に従い、ブラウザのコードに渡した認証情報はそのクライアントから利用可能になります。
プロキシのオプションを選ぶ前に、そのリクエストがどこに属するかを決めてください。サーバーの認証情報はサーバーに置いたままにし、サービスが対応している場合は文書化されたブラウザ連携を使ってください。どちらの設計も、サーバーのリクエストに訪問者のネットワーク上の身元を引き継がせる確実な近道にはなりません。