PHPのcurlからproxy経由でサイトアクセスをするサンプルを書いた

      2016/07/14

PHPのcurlでproxy経由でのアクセスを行うサンプルを書いた

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からのみ接続を許可されている場合などに利用できるかと思います。参考にしてみてください。

 

megane

megane

エンジニア歴13年位です。PHPとかMysqlを使ってWebシステムを構築します。 Javaも書きます。 CakePHPも使います。 サーバのチューニングもごりごりやります。 あと、お肉と自動車が好きです。Twitterとか申請どうぞ。

 - PHP , ,