2006/12/3 日曜日

見てきた全てを記録するmod_estraier

Filed under: 技術メモ — dev0000 @ 23:13:34 このエントリをはてなブックマークに追加このエントリをdel.icio.usに追加このエントリをLivedoor Clipに追加このエントリをBuzzurl(バザール)に追加

フォワードプロキシを利用して、見てきたURL全てを記録する仕組みを考えていて、SetOutputFilter+PHP外部スクリプトでそれっぽいのを作ってみた。

trace.php

PHP:
  1. #!/usr/bin/php -q
  2. <?php
  3. /**
  4. * CREATE TABLE `log` (
  5. *  `id` int(11) NOT NULL auto_increment,
  6. *  `timestamp` timestamp NOT NULL default CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP,
  7. *  `uri` varchar(255) NOT NULL,
  8. *  `title` varchar(255) NOT NULL,
  9. *  `contents` text,
  10. *  PRIMARY KEY  (`id`),
  11. *  UNIQUE KEY `uri` (`uri`)
  12. * );
  13. */
  14. mb_detect_order('EUC-JP,SJIS,UTF-8,ASCII');
  15. $documentUri = getenv('DOCUMENT_URI');
  16. $documentPathInfo = getenv('DOCUMENT_PATH_INFO');
  17. $queryStringUnescaped = getenv('QUERY_STRING_UNESCAPED');
  18. $buf = @file_get_contents('php://stdin');
  19.  
  20. echo $buf;
  21.  
  22. $documentUri = mysql_real_escape_string($documentUri);
  23.  
  24. $enc = 'auto';
  25. if (preg_match('/<meta http-equiv="Content-Type" content="text\/html; charset=([^"]+)"/i', $buf, $matches)) {
  26.    $enc = $matches[1];
  27. }
  28. $buf = mb_convert_encoding($buf, 'UTF-8', $enc);
  29.  
  30. $title = '';
  31. if(preg_match('/<title>([^<]+)<\/title>/i', $buf, $matches)) {
  32.    $title = mysql_real_escape_string($matches[1]);
  33. }
  34.  
  35. $dbh = mysql_connect('localhost', 'user','password');
  36. $sql =<<<_EOD_
  37. INSERT DELAYED IGNORE INTO
  38.    log
  39. SET
  40.    uri = '$documentUri', title='$title', contents = '$buf'
  41. _EOD_;
  42. mysql_query($sql, $dbh);
  43.  
  44. exit();

httpd.conf

ExtFilterDefine trace mode=output intype=text/html cmd="/usr/local/bin/trace.php" EnableEnv=PROXY_TRACE
SetOutputFilter trace

ProxyRequests On
<Proxy *>
SetEnv PROXY_TRACE
</Proxy *>

ってかさ、あるじゃんかね、そういうの。
mod_estraierによる履歴全文検索
WWWOFFLE & Estraier で快適キャッシュ検索
コード書く前に気付けよなぁ。。。
あとこれも。
「Firefox」閲覧履歴を詳細表示・検索できる「Enhanced History Manager」

コメントはまだありません »

コメントはまだありません。

この投稿へのコメントの RSS フィード。 TrackBack URL

コメントする

HTML convert time: 0.594 sec. Powered by WordPress ME