2013年12月05日

cURL 関数で、任意の URL からのヘッダ情報を収集する

cURL 関数を使うと細かいコントーロールが可能な状態で、WEB 上のコンテンツにアクセスする事ができます。

CURLOPT_NOBODY で、本文を削除しています。CURLOPT_HEADER を指定しているので、ヘッダー情報のみを取得できます。

その結果から、正規表現で良く使われる情報を取り出しています。

( 画像の URL を指定すると、Content-Length を取得できます )
( ▼ この下の iframe に結果を表示します )
<?php
$ch = curl_init($_GET['url']);
curl_setopt($ch, CURLOPT_NOBODY, true);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HEADER, true);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
// *********************************************************
// https 用
// *********************************************************
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 1);

$data = curl_exec($ch);
curl_close($ch);
if ($data === false) {
	echo 'cURL failed';
	exit;
}

$result = array();
if (preg_match('/(Content-Type: .+)/i', $data, $matches)) {
	$result[] = $matches[1];
}
if (preg_match('/(charset.+)/i', $data, $matches)) {
	$result[] = $matches[1];
}
if (preg_match('/^HTTP\/1\.[01] (\d\d\d)/i', $data, $matches)) {
	$result[] = $matches[1];
}
if (preg_match('/Content-Length: (\d+)/i', $data, $matches)) {
	$result[] = $matches[1];
}

header( "Content-Type: text/plain" );
header( "pragma: no-cache" );
header( "Expires: Wed, 31 May 2000 14:59:58 GMT" );
header( "Cache-control: no-cache" );

print_r($result);
print "----------------------------------------------------------------\n";
print $data;


?>

関連する記事

任意のサイトのソースコードを表示させる PHP



タグ:Curl
【通信の最新記事】
posted by at 2013-12-05 20:55 | 通信 | このブログの読者になる | 更新情報をチェックする