というのも、ここに来て2回目の水遁祭りが発生したからである。

全快は串側の問題だろうと言うことで、一応の決着をみて、「今後その串は使わない」
ということにしたのだけれど、さして間をおかず2回目の水遁祭り。
二度続くというのは偶然では無いだろうと思われる。

とすると、2ch側で新しいチェック項目を入れていて、串経由のアクセスを見破られて、
当該ホストの場合は「やられたでござる」を出すようにしている。
と、考えるのが自然な発想だと思う。

とりあえず、今のところアテが無いわけでは無いのだけれど、裏付けを取るにはまだ
事例が足りない。
まぁ、事例のログをとるのも面倒くさいので、想像で先に対策コードを埋める、
と言うことも可能なのだけれど。

もし、この予想があたってると、臨時用2ch串が使える串は相当数削られると思われる。
今までは、500件串を試すと、10件前後使えそうな串を見つけていたのだけれど、
今後は500:3位のレートにまで落ち込むかもしれない。

もっとも、リストアップした時には有効でも時間を置いてアクセスすると
ダメになってる事も多々あるので、ユーザの目に見える形では、多少失敗が増える程度で
すむ可能性もある。

あすの空き時間は実験に使われそうだなぁ……
Diablo3をプレイ中なので、さっくり終わらせたいのだけれど、
そうそう上手く行くような話にもなりそうにない予感がする。

気がついたきっかけは、cronで定期起動している水遁履歴チェックスクリプト。
前日のログから水遁された記録を抜き出してメール送信するのだけれど、
朝メールを見たら、50件の水遁履歴(やられたでござる)が溜まっていた。

どうやら、昨日の23:40頃からずーっと「やられたでござる」だったっぽい。
が、その間にも書き込めている人がいるらしく、書き込みログは動いている。

水遁履歴を見ても、該当っぽい水遁は見つからず、「やられたでござる」
が、出ている割に、「忍法帖を作成します」が一度しかログに出ていない不思議。
本来なら、「やられたでござる」と「忍法帖を作成します」は同数出るはず。

臨時用2ch串は利用者のIPで利用するHAPをわけているので、
IP帯で書き込みの可否が決まるのかと思ったけれど、そんな様子もない。

2ch側のどっかの鯖がおかしいのかとも思ったのだけれど、
同じ鯖に書き込み成功と失敗が両方あったので、その可能性も無い。

こちらから送信しているCookieに何か不手際がある可能性も考えたのだけれど、
書き込めている人がある程度いることから、その可能性も低いと思われる。

で、判らんなぁ……と思っていたら、臨時用2ch串で利用している串が落ちて、
串が切り替わったら、ピタリと「やられたでござる」が止まった。
状況証拠的には、どうも、串側でCookieを落とされるか何かして、
「やられたでござる」になっていた気がする。

せっかく忍法帖もLv=10を超えるくらいには育ってたんだけどなぁ……

とりあえず、その時間帯に使っていた串「hodogaya.kanagawa.ocn.ne.jp」を
今後は利用しないようにして様子を見ることにする。

酷く愚痴っぽいタイトルだけれど、まぁ、そういうことです。

臨時用2ch串では、2ch側の都合で書き込みに失敗した際には、
臨時用2ch串側で設けている5分間の書き込み間隔制限を外すようにしているのだけれど、
書き込めない時に出てくるメッセージを読まないアホの子が時たま登場する。

という訳で、アホの子の活躍で2chのsamba規制に引っかかり、
臨時用2ch串はめでたくバーボンハウス行きになりました。(‘A`)

アレか、IP登録する時にIQテストでもやらんといかんのだろうか。
まさか、チンパンジーがキーボード叩いてるわけでもあるまいし。

しかたがないので、samba規制の前段階の
「ERROR – 593 xx sec たたないと書けません。(x回目、xx sec しかたってない)」
が帰ってきた場合は、そのIPからは待たないと連投できなくした。

閑話休題。
ふと、臨時用2ch串のアクセス元分布をちょろっとスクリプト書いて調べてみた。
結果はこんな感じ。

write count: 20742
HOST | count | percent
————————————————
dion.ne.jp | 6690 | 32.25
so-net.ne.jp | 5932 | 28.6
eaccess.ne.jp | 1500 | 7.23
eonet.ne.jp | 976 | 4.71
spmode.ne.jp | 912 | 4.4
au-net.ne.jp | 868 | 4.18
mopera.net | 613 | 2.96
uqwimax.jp | 543 | 2.62
ocn.ne.jp | 402 | 1.94
bbtec.net | 318 | 1.53
ucom.ne.jp | 166 | 0.8
home.ne.jp | 162 | 0.78
zaq.ne.jp | 151 | 0.73
plala.or.jp | 149 | 0.72
yournet.ne.jp | 137 | 0.66
NO HOST | 116 | 0.56

やはりというか、当然というか、TOPは現在進行形で規制されている
dion軍とso-netの一騎打ちとなった。
spmode、au-net、mopera、uqwimaxのモバイル勢が合計で15%程度占めているのも
気になる。

が、この数字を見たところで新機能をつけるとかそういうことは一切ない。
単に気になっただけなので。

ひと月ほど前に、Blogのコメントで臨時用2ch串が「怪しいサイトかと思いましたが」
とか書かれてしまったので、
CSS3と jQueryUI の動作テストも兼ねて、臨時用2ch串の近代化を計ってみた。
IEだとまっとうなCSS3の対応はIE10からなので、IEだとあんまり意味ないのだけれど。

ついでにマルチポストの対策が色々と怪しかったので手直し。
テストで2chにマルチポストして書き込むのもアレなので、
きちんと動いているかはぶっつけ本番で確認することになる。
まぁ、いつもどおりといえばいつもどおり。

月に一度程度の頻度でマルチポストさんが現れるので、
その時に結果が判るだろう。

うまく動かなくて水遁されたら、ホスト規制すればいいし。

なにやら意味深なタイトルつけたはいいものの、
言いたいことは単に、「お前ら連投しすぎ」というだけなのであんまり意味はない。

という訳で、先日プロクシ判定貰って水遁されたっぽい臨時用2ch串の忍法帖も、
Lv8まで育ち、ようやく「修行が足りません」の頻度も下がってきてひと安心。

と思ったら、連投しすぎが原因と思われる水遁に見舞われる。
この手の水遁は中の人含め全部の忍法帖が水遁されるのを学習したので、
もう、そんなに驚きはしない。

で、原因の書き込みなのだけれど、11:40~11:44にわたって21回連投を重ね、
「修行が足りません」を出し続けていた。
そりゃ、水遁されるわ。

「しばらくたってから投稿してください。(xx sec)」って日本語読めないのか?
XX秒待てって書いてあるんだよ。
待とうよ。
そんなに生き急いでどうするんだよ?

先日、書き込みできなかった時に書き込みを復帰させる機能をつけたのがいけなかった。
本来は、要望の通りの、ちょっと丁寧な長めの文章を書こうとした時の失敗時に、
再度書き込みする時に編集を補助する目的で作られたものだったのに。

結局、日本語読めない人の連投荒らしの助けをしただけだったなんて……

とりあえず、このままでは、第二、第三の連投さんが現れるのも時間の問題なので、
「修行が足りません」が出た場合には、そのホストからの書き込みは(xx sec)の秒数が
経過しないと、再書き込み出来ない仕様に変更した。
この間に書き込もうとすると、「書き込み間隔短すぎ」のエラーに飛ばされる。

加えて、 ppp.dion.ne.jp へのアクセス拒否を追加。
質問に答えてくれた、運用情報臨時板のDIONスレの人、ありがとう。
情報を元にこんな感じの Expression を書いて、POST要求を拒否するようにしてみた。

SetEnvIfExpr “%{REMOTE_HOST} =~ /[a-zA-Z]{1,2}[0-9]{6}.ppp.dion.ne.jp/ && %{REQUEST_METHOD} == ‘POST'” ng_host

これは今度の土日過ぎたら解除しようと思う。(忘れて無ければ)

というのも、今回のは心情的には割と理解できる点があるので。
わざわざ臨時用2ch串使うくらいだから、書き込みたい欲求はあるだろうし、
書き込み失敗したら、ちょっと熱くなってしまって、連投してしまうというのは、
あるかといえば、ありえるだろう。

21回はやり過ぎだと思うけど。

人はその時その時の感情で流されてしまうもの。
それはしかたのない事なのだ。

と、綺麗に纏まりそうなところで懸念点。
今回は一人の犯行だったわけなのだけれど、仕組み上、臨時用2ch串の負荷が今の数倍に
なるような事態になると、新しく作った仕組は破綻する。
大量のユーザーが1回ずつ出した「修行が足りません」も、
2chからの見え方としては、一人のユーザーが大量に「修行が足りません」にも
かかわらず、連投しているように見えるからだ。

本来なら、臨時用2ch串側で各板のsambaの値と、各板の最終書き込み時刻、
忍法帖Lvを保持して、最終書き込み時刻に忍法帖の制限値を加算して、
書き込み前に、2ch側で「修行が足りません」にならないかチェックし、
チェックを通った要求だけを2ch側に流す仕組みが必要になる。

が、良い感じの仕様が思い浮かばないので当面はこのまま行こうと思う。