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}

