PHPのcurl関数たちはとても便利です。PHPのプログラム上からサイトやAPIにアクセスするためには必須の関数となっています。今回は、curlでサイトやAPIに接続するときにproxyを経由して通信を行うサンプルを紹介します。
■サンプルコードです
サンプルコードを紹介します。プロキシのポートも指定することができます。デフォルトの3128ポート以外の時にも対応しています。また、プロキシサーバにユーザIDとパスワードが必要な場合にも引数に情報を入れることで対応可能です。サンプルでは、エラーコードを取得していませんが、より詳細なエラーハンドリングをする必要がある場合は、curl_errno関数などを使って情報を取得してください。
以下、サンプルコードです。
public function searchExecute($url, $proxyAddress, $proxyPort = 3128, $userName = null, $password = null) {
// 検索エンジンへアクセスする
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url ); // 接続先のURL
curl_setopt($ch, CURLOPT_HEADER, false );
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true );
curl_setopt($ch, CURLOPT_TIMEOUT, 30 ); //タイムアウト時間 30秒
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 30); // タイムアウト時間 30秒
curl_setopt($ch, CURLOPT_PROXY, $proxyAddress);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_FRESH_CONNECT, true);
// ポート指定
curl_setopt($ch, CURLOPT_PROXYPORT, $proxyPort);
// ユーザ名・PWが設定されているときは設定
if (!empty($userName) && !empty($password)) {
curl_setopt($ch, CURLOPT_PROXYUSERPWD, $userName . ':' . $password);
}
$result = curl_exec( $ch );
curl_close( $ch );
return $result;
}
特定のIPからのみ接続を許可されている場合などに利用できるかと思います。参考にしてみてください。