read.cgi改良スレッド 3

このエントリーをはてなブックマークに追加
106名無しさん@MZ-2000
bbs.cgiの動作チェックのためのスレッド
http://teri.2ch.net/test/read.cgi/accuse/1001913490/

のスレで話が出たんですが、

http://www.google.co.jp/search?hl=ja&q=site%3A2ch.net+%96%E9%8B%CE+YaKIN%2Feo+%81%9A&lr=

PATH_INFO 形式の URL は Google の巡回対象になるようです。
中身のリンクもすべて巡回されるので、転送量もかなりのものになると
思われます。
read.cgi にボット除けを入れたほうがいいかと思うのですが、どうでしょう?
robots.txtを入れるという話になってたのでは
http://piza2.2ch.net/tech/kako/998/998845501.html
ここの285-286
CGIで対応するとしたら、
1)BadAccess()でロボットっぽいURLを弾く
2)METAタグで巡回をご遠慮願う
3)URLの末尾に ? を付ける
などのオプションが考えられます。
マルチリクエスト、だいたいできたよ。
まだcommitしてないけど。

仕様としては、
(path)/test/read.cgi?raw=0.0&dat=board/999999999.12345&dat=board2/999888777.2345&board3/999777666.345
という形にするつもり。
同じboardが連続する時は、2番目からはboard/を省略可能とした。
レスポンスには、全体のサイズは返さず(返せない)、
+OK 1234/512K Request:board/999999999.12345 LastModify:1003111222
・・・
+OK 0/512K Request:board2/999888777 LastModify:1000000000
+OK 4567/512K Request:board3/999777666.345 LastModify:1003222333
・・・
が続くようにする。

"."以降を既得サイズとするが、差分に限定するため(上位50件の全取得等に使われないため)に、
".0"は受け付けないことにした。
ただし、".0"(0以下も含む)の時はエラー扱いせずに
+OK 0/512K
を返すようにした。
また、Last-Modifiedはtime()の数値のまま、ヘッダの"Lastmodify:"に入れた。
それと、一応リクエスト側のことを考えて、"&dat="以下の内容を
ヘッダの"Request:"にboard/key.diffの形式で入れた(boardは補完して)。

また、-ERR時に、文字列比較をしなければいけないのが疑問だったので、
この形式の時だけ、エラーコードを入れるようにした。
UA側が一通りこの形式に対応したら、
他の(rawモードの)エラーにもエラーコードを含めるようにしたい。
(その場合は、Request:やLastModify:は含まれない)
例)
-ERR 200 そんな板orスレッドないです。 Request:tech/999999999.12345
-ERR 201 過去ログ倉庫で発見 ../tech/kako/100/1000000003.dat Request:tech/1000000003.123
-ERR 201 過去ログ倉庫で発見 ../tech/kako/100/1000000005.dat.gz Request:tech/1000000005.123
-ERR 202 html化待ち Request:tech/1000000001.123
-ERR 600 どこかであぼーんがあったみたいです。 Request:tech/1002820903.24646 LastModify:1004511622
注意点としては、板別のセッティングを読みこまない(読みこめない)ので、
返される/512Kはただのデフォルト値であり信用できない、
そのため、通常の形式では読めないdatが読めてしまう可能性もある、
というのがある。
また、path形式(で板を指定)だと内部的に気持ちがよくないことが起こるので、
通常のquery_stringのみとした。

また、有効になるのは、raw=0.0で、bbs=とkey=が指定されていない時のみとした。
一括して受け付ける最大数は一応50とした。
apacheのGETリクエスト長制限とどちらが先に来るかは知らない。

とりあえず、例。
read.cgi?raw=0.0&dat=tech/1000035521.345329&dat=1002820903.24648
&dat=981726544.321672&dat=998908559.51344&dat=tech/967778156.59818
&prog/949623869.77371&dat=prog/980900290.146756&dat=1000335545.186069
&dat=unix/999166513.243075&dat=win/1003508243.184355&dat=1004351681.49566
&dat=software/1004096526.38369

+OK 0/512K Request:tech/1000035521.345329 LastModify:1004361816
+OK 680/512K Request:tech/1002820903.24648 LastModify:1004511622
・・・
+OK 0/512K Request:tech/981726544.321672 LastModify:1004467586
+OK 0/512K Request:tech/998908559.51344 LastModify:1004177482
+OK 0/512K Request:tech/967778156.59818 LastModify:1003324384
+OK 2877/512K Request:prog/980900290.146756 LastModify:1004504546
・・・
+OK 398/512K Request:prog/1000335545.186069 LastModify:1004511632
・・・
+OK 1827/512K Request:unix/999166513.243075 LastModify:1004504560
・・・
+OK 0/512K Request:win/1003508243.184355 LastModify:1004024020
+OK 2900/512K Request:win/1004351681.49566 LastModify:1004511770
・・・
+OK 7808/512K Request:software/1004096526.38369 LastModify:1004511760
・・・

なんかまずい点とかあったら指摘お願い。
一応commitした。
おかしい所やバグなどがあったら、直してくださいな。
今度同鯖を巡回するクライアントはマルチリクエストを
使用することが推奨される…と。
113デフォルトの名無しさん:01/10/31 18:16
>>108
1) : いちいちチェックするコストがもったいない(接続要求は腐る程ある).
2) : 最初の1回は META を読むために HTML の転送が発生してしまう.
3) : せっかくきれいな PATH_INFO url が汚くなる(私見).

って感じなので robots.txt がコスト的にも一番良いと思う.
http://<鯖名>.2ch.net/robot.txt を作って

User-agent: *
Disallow: /test/

って書いて、 read.cgi は巡回されずに過去ログはいままでどおり
巡回してくれるってのがいいな。
115名無しさん:01/10/31 19:50
PATH_INFOをやめて元に戻すのが一番スマートな解のような
robots.txtのほうがスマートだと思うな。
どっちにしろロボットは必ずrobots.txtを一発取りに来るし
過去ログとかも同様に制限できるしね。
117デフォルトの名無しさん:01/10/31 20:56
Disallow: /test/read.cgi/tech/*/
みたいな指定はできないんですか?
できると思うけど /test/ でいいんじゃない?
全板まとめて規制できるし。
119デフォルトの名無しさん:01/11/01 02:33
http://pc.2ch.net/test/read.cgi/tech/100282090
みたいな間違ったリクエストをした時でも、ステータスは
200 OKが返っていますけど、これは、404 Not Foundを返すようにした方がいいんじゃありません?
120一スレ800件!!:01/11/01 05:47
ちょっとこれを見てやって下さいよ。
ttp://www.google.com/search?num=100&q=read.cgi+%89%FC%97%C7%83X%83%8C%83b%83h+site%3Apiza2.2ch.net
ここまでくると、検索エンジン荒しと見紛う勢いです。。。
121120:01/11/01 05:48
しかも全て準デッドリンクだし。。。。
>>119
無意味にキャッシュが効かなくなるだけ。何がいいのかわからん。
123名無しさん:01/11/01 15:28
>>120
ワロタ
site:を付けずに検索すればちゃんとまとまるじゃん。
http://www.google.com/search?num=100&hl=ja&q=read.cgi+%89%FC%97%C7%83X%83%8C%83b%83h&lr=
125デフォルトの名無しさん:01/11/01 16:43
>>124 カキコの趣旨が違うと思う。
移転してもうないにもかかわらず、一つのスレに対して800件もヒットさせてしまう,
悲惨なGooglebotを晒し上げているのでしょう。
得意げな顔して何が、800件ヒットしました、だ。
お前は本当にキャッシュを更新してるのかと問いたい。問い詰めたい。小1時間問い詰めたい。
お前、個人情報を晒しあげたいだけちゃうんかと。
検索ロボット通の俺から言わせてもらえば今、検索ロボット通の間での最新流行はやっぱり、
http://web.archive.org/、これだね。
http://web.archive.org/*/にURLを追加。これが通の検索の仕方。
http://web.archive.org/ってのは昔のコンテンツが多めに入ってる。そん代わり著作権への配慮が少なめ。これ。
で、それにNOARCHIVEタグ無視。これ最強。
しかしこれを晒すと次から自分のページも晒し上げられるという危険も伴う、諸刃の剣。
素人にはお薦め出来ない。
まあお前、夜勤 ★は、robots.txtでも置いてなさいってこった。
>>126
ハゲシクワラタ
128名無しさん:01/11/03 02:07
robots.txtを無視するエンジンもあるってきいたことあるけどどうなんだろ
あの激戦の名残がまだ残っていたとは…
正直、あの時は感動した。
>>128 そういう非常識なロボットには2chボムをくらって貰いましょう。
一つのスレで800件のヒット。。。
131名無しさん:01/11/03 02:21
2chが食らってるんでしょ?転送量でいうと
2ch全体の転送量から見てどうなんでしょうね?
何万サイトからのロボットが走りまわっているわけでもないでしょうから。。
133デフォルトの名無しさん:01/11/03 17:23
どっちににしろ&ls=50とかの形式にもどせばいいだけだとおもうけど
>>128
robots.txtを見ないロボットがあっても、それがメジャーなところでなければ
問題ないよね。問題になりそうなところって具体的にどこがあるか
知ってる人いる?

>>133
それだとそれ自体の転送量が増える。
(PATH形式にしたのは転送量を減らすためだし)
robots.txtを置けば解決するってことで終了してるんじゃないの?
135read.cgi ver4.1:01/11/09 21:19
printf("\t\t\b\b\t\t\b\b");
monazilla BBS で,ここで作ってる新 read.cgi の仕様欲しがってる開発者が結構いるみたい.
洩れは新 cgi の機能や実装の根拠が分からんので手がでそうに無いけど,
分かる人がまとめてあげると良いと思いますがどうでしょう.
ツール開発者に新仕様の効果的な使い方を啓蒙することも転送量削減につながるんじゃないかと.

# 自分は仕様を把握してないんで sage