Proxy経由でfopen()やfile_get_contents() を使う場合は、stream_context_create()を使ってプロキシ経由のストリームコンテキストを作成してやる。
そいでそいつをfopen()やらfile_get_contents()に渡してあげればOK。
(1) Proxy用オプション設定(必要最低限Ver.)
$sc_opts = array(
‘http’=>array(
‘proxy’ => ‘tcp://192.168.0.XX:8888‘,
‘request_fulluri’ => True
)
(2) ストリームコンテキスト作成
$sc= stream_context_create($sc_opts);
(3) コンテンツ取得
$contents = file_get_contents(‘http://www.tokiwasou.com‘, TRUE, $sc);
(4) 結果表示
var_dump($contents);
—
ただし上記設定はProxy経由で通信するために最低限必要なオプションを指定しているだけなので、例えばユーザーエージェントで表示するページを変えているサイトとかだと、期待したコンテンツを取得できない(あるいはアクセスそのものが拒否されてしまう)ことがある。
あるいはコンテンツが複数回のリダイレクトの果てにようやくたどり着けるような、若干危険な香り漂うサイトとかだと、リダイレクト指定をちゃんとしてやらないと途中で泣きながら帰ってきてしまうケースもある。というかあった。
完全な解決策とはいきませんが、とりあえずこれだけ指定してやれば大丈夫だろ的なオプション設定を作ったので、どうぞ。
お約束ですがプロキシのIP/ポート番号とか取得先URLとかは自分の環境に合わせて適宜修正して下さいな。
各設定の詳細が知りたい勉強熱心な方は、文末に載せておいた参考サイトがおすすめです。勉強になります。
# Proxy用オプション設定(暫定最強Ver.)
$sc_opts = array(
‘http’=>array(
‘method’=> ‘GET’,
‘header’=>
“Host: www.tokiwasou.com\r\n” .
“Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8\r\n”.
“Accept-Language: ja,en-us;q=0.7,en;q=0.3\r\n”.
“Accept-Charset: Shift_JIS,utf-8;q=0.7,*;q=0.7\r\n”.
“Keep-Alive: 300\r\n”,
‘user_agent’ => ‘Mozilla/5.0 (Windows; U; Windows NT 5.1; ja; rv:1.9.0.10)’,
‘proxy’ => ‘tcp://192.168.0.XX:8888‘,
‘request_fulluri’ => True,
‘max_refirects’ => 20
)
参考になったサイト:
PHP.net(file_get_contents)
HTTPとHTTPS (コンテキストのオプションが載ってる)