サーブルさんとこで『たかたにさんところのチェッカは、もう少し判別しやすい固有のUA名がついているといいのですが…? 』のご指摘(汗
そういえば、WWWCの代わりに自分のページのリンク集で更新日取得をするようになったのですが、PHPのfopenをそのまま使っていたものだから、User-Agentが "PHP/バージョン番号" というなんかアヤしいものになっていたのです。HTTPで取ってくるのもなんか難しそうなのでほったらかして様子を見ていたのですが、ご指摘をうけて急いで変更(笑)。とりあえず、
takatani crawler/20030406 (http://toriyu.dd.que.ne.jp/~takatani/chacha/link/crawl.html)というこれまたアヤしい UA を付ける事にしてみました。 (覚え書き) PHPで User-Agentを付けてfopenする関数
function fopenurl($url,$mode)はじめは array $ret にて値を受けようとしていたのですが、途中で面倒になって(^^;) fopen互換になりました。WWWサーバが期待通りの答えを返してくれなかった場合に誤動作する(笑)のと、"302 Found"を処理しない点で互換ではありません。今度書き直すときはヘッダの情報も使えるように・・・ということで残骸も残してあります。
{
$ret=array();
$p = parse_url($url);
$host = $p["host"];
if (isset($p["port"])) $port = $p["port"];
else $port = 80;
$path = $p["path"];
if (isset($p["query"])) $path .= "?" . $p["query"];
$ua = "TEST!!"; ← ここに適当な文字列
$fp = fsockopen ($host, $port,$errno,$errstr,30);
if (!$fp) {
return $fp;
} else {
fputs ($fp, "GET $path HTTP/1.0\r\nUser-Agent: $ua\r\nHost: $host\r\n\r\n");
$st = split(" ",fgets($fp,128),3);
$ret["_PROT"]=$st[0];
$ret["_STATCODE"]=$st[1];
$ret["_STATSTR"]=$st[2];
while(!feof($fp) && "\r\n"!=($s=fgets($fp,1024))) {
$st = split(": ",$s,2);
$ret[$st[0]] = $st[1];
}
// $ret["_BODY"] = fread($fp,100*1024);
// fclose ($fp);
}
return $fp;
}
□ 関連記事