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
120 :
一スレ800件!!:01/11/01 05:47
しかも全て準デッドリンクだし。。。。
>>119 無意味にキャッシュが効かなくなるだけ。何がいいのかわからん。
123 :
名無しさん:01/11/01 15:28
125 :
デフォルトの名無しさん:01/11/01 16:43
>>124 カキコの趣旨が違うと思う。
移転してもうないにもかかわらず、一つのスレに対して800件もヒットさせてしまう,
悲惨なGooglebotを晒し上げているのでしょう。
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を置けば解決するってことで終了してるんじゃないの?
printf("\t\t\b\b\t\t\b\b");
monazilla BBS で,ここで作ってる新 read.cgi の仕様欲しがってる開発者が結構いるみたい.
洩れは新 cgi の機能や実装の根拠が分からんので手がでそうに無いけど,
分かる人がまとめてあげると良いと思いますがどうでしょう.
ツール開発者に新仕様の効果的な使い方を啓蒙することも転送量削減につながるんじゃないかと.
# 自分は仕様を把握してないんで sage