PHP file_get_contents でプロキシ経由の HTTP URL を取得する
PHP の HTTP ストリームラッパーをフォワードプロキシ用に設定します。リクエストの書式とストリームコンテキストの制約も含みます。
PHP cURL を使わない通常の HTTP リクエストでは、HTTP ストリームラッパーにプロキシコンテキストを渡します:
$context = stream_context_create([
'http' => [
'proxy' => 'tcp://203.0.113.10:8080',
'request_fulluri' => true,
'timeout' => 10,
],
]);
$body = file_get_contents('http://example.com/', false, $context);
ドキュメント用のエンドポイントは、ご自身の HTTP プロキシ、または HTTP プロキシ一覧の候補に置き換えてください。HTTP コンテキストのインターフェースは、proxy に TCP アドレスを要求します。request_fulluri=true は完全な宛先 URI をリクエスト行に置きます。多くのフォワードプロキシがこれを要求します。タイムアウトは、そのラッパーの規則に従ってストリーム操作を制限します。
本文を解析する前に、戻り値と警告を確認してください。読み取りの失敗と、空のまま成功した応答では、扱いが異なります。まずこの単一の HTTP 宛先と制限付きのリクエストで診断を始めてください。HTTPS はトンネリングと TLS の挙動を追加するため、実際のラッパーと PHP のバージョンで確認する必要があります。この例はそうした能力を立証するものではありません。
この呼び出しでコンテキストを渡すと、経路が可視化され、無関係な URL 読み取りを変更せずに済みます。共有のデフォルトコンテキストは、アプリケーションがその方針を意図的に望む場合にのみ適切です。ライブラリはその広い適用範囲を考慮すべきです。
これは PHP ストリームを設定するものであり、独立に作成した cURL ハンドルや、ブラウザ、その他のプロセスを設定するものではありません。パッケージがこのコンテキストを使うと期待する前に、その実際の HTTP トランスポートを確認してください。