Table of Contents
PHP で cURL を使用すると、簡単にサーバー間のデータ送受信を行うことができます。
以下では、指定したプロキシを利用してHTTPリクエストを送信するサンプルを紹介します。
cURLの使用例
cURLの基本的な使用の流れは、次の通りです。
- curl_initでcURLセッションを開始
- curl_setoptで転送用オプションを設定
- curl_execでセッションを実行して結果を受け取る
- curl_closeでセッションを終了
以下は、この流れに沿って適当なオプションを設定したcURLを実行するサンプルスクリプトです。プロキシを利用するにあたって重要なオプションは CURLOPT_HTTPPROXYTUNNEL および CURLOPT_PROXY です。
<?php // 接続するURL $url = 'https://○○○'; // アドレス:ポート番号 $proxy = 'XXX.XXX.XXX.XXX:8080'; // cURLの初期化 $ch = curl_init($url); // プロキシの有効化 curl_setopt($ch, CURLOPT_HTTPPROXYTUNNEL, true); //使用するプロキシの指定 curl_setopt($ch, CURLOPT_PROXY, 'http://' . $proxy); // curl_exec による HTML 出力を防ぐ curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); // 試行時間 curl_setopt($ch, CURLOPT_TIMEOUT, 16); // 最低速度 curl_setopt($ch, CURLOPT_LOW_SPEED_LIMIT, 8); // 最低速度が 3秒 続いたら終了させる curl_setopt($ch, CURLOPT_LOW_SPEED_TIME, 3); // HTTP で 400 以上のコードが返ってきた際に処理失敗と判断 curl_setopt($ch, CURLOPT_FAILONERROR, true); // 実行 $result = curl_exec($ch); if (!$result) { echo 'NG(' . curl_error($ch) . ')'; } else { echo 'OK'; } curl_close($ch); ?>
サンプルページ
以下のページは上記スクリプトを応用したもので、複数のプロキシの接続をテストすることができます。
実行結果の例です。
以上、PHPのcURLによるプロキシを利用した接続についてでした。cURLの詳しい利用方法などについては PHP: cURL – Manual を御覧ください。
コマンドのcurlを使う
わざわざPHPで行う必要がないのであれば、ターミナルなどでコマンド「curl」を使えば済みます。
以下は、出力の抑制やユーザーエージェントの指定、最大実行時間などのオプションを指定したcurlを実行するシェルスクリプトの例です。
#!/bin/sh url="接続先URL" address="アドレス:ポート番号" curl -sS -o /dev/null -A "任意のユーザーエージェント" -m 30 --proxy http://${address} ${url}