PHP プロキシサーバー経由でWEBサイトにアクセス

2013/07/30

プロキシサーバーを経由して間接的にアクセス

概要

PHPでサイトにするときに、通常は直接アクセスします。
これを別のサーバーを経由して外部のサイトへアクセスする方法を紹介します。
アクセスしたサイトのサーバーには、経由したサーバーのログが残るため、アクセス元Webサーバーの履歴は残りません。
履歴を残したくないときや、負荷を分散させたいとき、何かしらのIP判定から逃れたい時など、直接アクセスしたくないときなどに使用します。

プロキシサーバーについて

通常は、クライアントとWWWサーバーの間に存在します。
クライアントPCからの指示を受け取り、インターネット上のWEBサイトのHTML情報などを取得してクライアントに返します。

そのため通常は、「クライアント⇔プロキシサーバー⇔WWWサーバー」となりますが、今回は「Webサーバー⇔プロキシサーバー⇔WWWサーバー」といった配置になります。
PHPのfile_get_contentsを使用してプロキシサーバー経由でWebサイトにアクセスし、データを取得するサンプルコードを紹介します。

サンプルコード


$proxy = array(
      "http" => array(
         "proxy" => "tcp://xxx.xxx.xxx.xxx:8080",
         'request_fulluri' => true,
      ),
);
$proxy_context = stream_context_create($proxy);
echo file_get_contents("http://dog.tele.jp/lookup.php/", false, $proxy_context);

今回、http://dog.tele.jp/lookup.php/の接続元IPアドレスをチェックするサイトを使用して検証させていただきました。
プロキシサーバー経由でアクセスしたため、接続元IPが使用したProxyのIPで表示されます。

Related

Vagrant+Docker+PHP環境で「session.save_path」指定時に、セッションファイルが空になるエラー

ファイル共有でのフォルダの所有者を設定 結論 PHP5.4.28 からセッションファイルのownerはrootもしくはWebサーバのユーザに限るという制限が...

LINEと連携したテイクアウト事前注文システム徹底比較!

目次 テイクアウト予約・注文受付システムのトレンド LINEと連携したテイクアウト事前注文システムの価格表 L.B.B.Cloud テイクイーツ ...

PHPで動画の撮影日を取得

PHPで動画の撮影日を取得 概要 PHPからffprobeコマンドを実行し、動画の撮影日時を取得します。 コード $posted_at = ...

FullCalendarでGoogleカレンダーのようなUIを実装

jQueryプラグインFullCalendarのサンプル 概要 FullCalendarを使用して、GoogleカレンダーのようなUIを実装する使用例を...

PHP Laravel5.2でmulti-auth(複数テーブルでの認証)を実装

Laravel5.2でマルチ認証 概要 LaravelとはPHPの中で今最も伸びているフレームワークです。 処理速度が遅いなどありますが、かなり使い安く拡...

PHP 正規表現でIPアドレス形式の文字列か判定

正規表現でIPアドレスの入力チェック 概要 フォームで入力されたIPアドレスが正当な文字列か判定するためのバリデーション処理を実装します。 基本的...
トップへ戻る