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 トランスポートを確認してください。

関連記事