datのcrawlerを共用鯖に置く非

利 「設置が容易」「コストが安価」
非 「共用鯖ではスクリプトに強制時間制限があることが多い」「共用鯖からの複数アクセスは相手にとって区別が付かない」「IPが変わらない」

自己中心で考えていくとこれ以上ない利なわけですが、使い方によっては各所に迷惑を掛けてしまいます。以下その非について触れます。
ちなみにここでは共用鯖、専用鯖、グローバルIPが割り当てられてる鯖(専用鯖、自宅鯖)ぐらいに分けて考えています。

クローラはクロールされる側から見れば、比較的短時間に同じIPから繰り返し呼び出す対象です。このとき、独自ドメインを取っていようと同じサーバの別のアカウントだろうと、同じIPからのアクセスは同一の相手からのアクセスにしか見えません。もちろんUserAgentやリファラ等で区別することが可能な場合もありますが、「どこからのアクセス」を見る際にそんなところはチェック対象にしないので大差はないです。これはアクセスに対してIPで対応しようがホストを引こうが同じことです。

要するに、自分が節度を持ってアクセスしていても同じIPから(同じサーバじゃなくても)無茶するやつがいればまとめて規制を受けます。逆もまた然りです。

次に、共用鯖のスクリプトは大量のアクセス・重い処理を一気に処理することは想定していても、ぽつぽつと定期的に(数秒〜数十秒間隔)軽い処理をすることは想定していません。だいたいどのサーバでも10秒から30秒程度で強制的にストップされてしまいます。settimelimit等の設定しだいですが、これを弄れないサーバも多いです。

制限時間内に巡回を終えなければ、という方向にばかり意識が向かってしまうと、毎秒n回の連打アクセスなんてことになってしまいます。

そして、こと2chそれも読み込みに限った規制の話をします。とかげの尻尾切り、バーボンハウス、海外規制、htaccessで手動、知っているのはこれぐらいです。2chwikiを見れば大体のことは把握できます。それ以上詳しい情報は各自調べてください。
2ちゃんねるWiki – いきいき Wiki ( http://info.2ch.net/wiki/ )

一番食らいやすいのはとかげの尻尾切り規制です。これは、K秒・分単位に、L回アクセスがあった場合、M時間アクセスできなくなる、ものです。これに引っかかると規制リスト入りしてバーボンハウスとなります。巡回プログラムをパラメータ調整しながら作っていたときに私も実際に何度か食らいました。これは回線切ってIP変えられる場合は簡単に対応できます。自分が繋いでいたIPを割り当てられた人はドンマイですが。しかし、固定IPの場合そうも行きません。ただしこの規制は、ほっとくと直ります。

連続書き込み、クローラで地引、なんて場合に引っかかるのがバーボンハウス規制です。トカゲの尻尾きり→規制リスト入りでバーボンハウスの場合は前述の通りほっとけば直ります。しかし、それ以外のルートでバーボンハウスの場合はほっといても直りません。クロール専用鯖( http://liveb1.2ch.net/ )が用意されている場合、そこは地引いてもバーボンハウスにはならないそうです。しかし、クロール鯖が用意されていない板も多々あるのでその場合は気を付ける必要があります。

海外規制は書き込みのみ規制、読み込みも規制を含めて何段階もありそうです。ここは推測にすぎません。具体的には、海外無料鯖からつないだ時に2chから接続を拒否されるものがありました。個別に規制されていたのか、IPで包括的に規制されているのか、その辺がわかる術は私にありません。

最後に手動規制。以前自分が悪さをしたり、あるいはそのIPから誰かが悪さをした場合、手動で永久規制になっているものがあります。その場合解除の見込みはほぼ無いです。

以上の規制はブラックリスト型ですが、逆にホワイトリストも存在します。みみずん、肉ちゃんねる、p2.2ch.netクラスになるとそっちに入れてもらえるらしいですが、そこまではなかなか。

「共用鯖ではスクリプトに強制時間制限があることが多い」「共用鯖からの複数アクセスは相手にとって区別が付かない」「IPが変わらない」

これらの理由から共用鯖にcrawlerを置くことは非なのです。回線負荷、ハードウェア負荷が小さくても、です。

2chのp2スレのテンプレ「※レンタル鯖にp2設置は2ch運営とp2ユーザーに迷惑なのでやめましょう。 」はこの辺も含めて言ってるんだと思います。

でもさあ、グローバルIPもらえる専用鯖や自宅鯖って技術的にも金銭的にもハードル高い…

広告

2chのdat仕様 その4

色付きキャップなんてのもあるのね。
datの名前欄に<font color=green>なんてのや<font color=red>なんてのが出てくるそうな。

というわけで改訂版
名前欄 <a> <b> (ただしdat中には</b><b>の順番) <font>
メール欄 なし
ID等 <a>
本文 <br> <a>

2chのdat仕様 その3

名前欄、メール欄、本文ともに

& → そのまま
< → &lt;
> → &gt;
" → &quot;
‘ → そのまま

現在はこの仕様なんだけど過去もこれなのかな?

他の実体参照を直書きできるようにってことで&が書けるようになってるんだろうけど、これhtmlにする時そのまま表示するとダメだよな。と思ったら2chのread.cgiもそのまま表示してんのねー

いちいち読む時にdatが不正じゃないか確認するよりもdatを取り込むときにvalidかどうか確認すればいいのか

というかdatのvalidator作ったほうがいいのね。

でもこれ互換板のログなんての考えていくと頭痛くなりそうだなあ。ていうか2chのログだって過去から仕様変わってるしそれ追うのだけでもめんどくさそう。

表示の時にvalidか確かめるよりvalidator通すほうが一見楽だけど、整合性調べてdat書き換えるよりはエスケープするだけなら表示の時にやるほうが楽なのかな?グルグル。