自分自身のための ものづくり / 自分自身のためのものづくりメモ

* RandomNoteWiki記法 - TextFormat

* Becomebot再排除

#Web #RandomNote
 RandomeNoteの検索履歴が、またかき回された。犯人はBecomeBot。

robots.txt BecomeBot締め出し
http://baku.homeunix.net/WiKi/rnx/index.rb?1138996756.txt

deny from 64.124.85.0/24
http://baku.homeunix.net/WiKi/rnx/index.rb?1171846535.txt

…にて排除していたのに。
 サーバ変更で色々再構築して、ついでに.htaccessの使用は最小限に抑えたためだ。

 さようなら、BecomeBot。
iptables -A INPUT -j DROP -s 64.124.85.0/24

* 無神経な根こそぎGetの馬鹿やろーっ!

 RandomNoteの検索履歴をしっちゃけめっちゃかにかき回していきやがって…。
 まぁ、こっち側で対策するべきことではあるが、どうやって区別したものやら…。

 あと、根こそぎ巡回するのは別にかまわないのだが、秒間2アクセスとかは勘弁してくれ。これは問答無用でツールとその利用者が悪い。
…って、ログを調べるとUAを色々変えつつ(詐称?)766回のクエリかよ…。悪意はないんだろうけどその無神経さは許容範囲の外だな…。

 ま、ここまで無神経なアクセスは滅多にないので、対策はべつにいいか。


2008年1月12日追記
 zia-httpmirrorの作者と利用者のばかやろーっ!!!
 上に書いたのよりはマシだけど、履歴が滅茶苦茶になるのは同じだ。せっかく、「超整理法」的に出番が多いのが上になっていたのに。
 とりあえず、.htaccess をいじって、/から閉め出すことにした。

 上に書いたようにこーゆーのは滅多にない、けど、時々は確実にあるんだよな…。

#RandomNote #Web

* RandomNoteの検索用クローラ対策

#RandomNote #Web #掲示板spam対策
 googleやらyahooやらmsnやらが、入れ替わり立ち替わり、smode=sumやらsmode=countやらcmd=editやらのついたページを、別々のものと見なしてGETしていく。
 こっちにもあっちにも無駄な負荷がかかる、とても不幸なことだ。

とりあえずの対策として、それらへのリンクをformにしてみた。

 検索エンジンは、いくらなんでもsubmitしないだろうから、無駄にリンクを辿らなくなると期待。

 ただし、spam投稿用クローラが心配。textもtextareaもないのにPOSTする馬鹿がいるかもしれない、と危惧している。

ロボットの類相手では、cmd=editとかsmode=hogeとかあったら、404を返すようにした

 既にsmode=hogeとかのページのurlが記録されていて、リンクが無くなっても読みに来る。だから、ロボットの類相手にそれらのページは404を返すようにした。
 ロボットか?の判断は、user_agentにhttp:が入っているかどうか。

ロボットなどに対して、サイドバーを渡さないようにした

 検索の邪魔だよね。本文にないキーワードがあるのは。
 さらに、ロボットに送るデータ量が減るという恩恵もあった。無駄なデータが減るのは、互いにとって有益だ。

* GETでspamを投稿する奴への対策

#RandomNote #掲示板spam対策

 後述のように、GETでspamを投稿を試みるロボットがある。
 そのようなリクエストにより、OR検索が行われ、最近の検索ワードがめちゃくちゃになる。
…というわけで、とりあえず、超やっつけで対策。

def do_search
  @word = @param['word']

  if @word.size > 32
    print_header
    print_footer
    return
  end
 検索用の文字列が32文字以上なら、何も処理を行わずに終了する。
(ヘッダとフッタは返す)

(ReadMore...)

* RandomNoteの敵はspam投稿用クローラ

#RandomNote #掲示板spam対策 #Web

2007/09/23

 久々に、RandomNoteをspam投稿ロボットが引っかき回していった。
 対策が必要とは思ってるのだけど、たまにしかないし、投稿その物はBASIC認証で弾かれるしで、面倒なので1年以上放置してる。

 後述のような感じで、2時間半にわたり、GETとPOST合わせて800回以上のアクセスを行う酷いロボットだった。
 401で弾かれているのに延々と試行するのは無駄で、馬鹿なプログラムだと思う。ふつー、エラーが出たらとっととあきらめて他の無防備なBBSとかblogとかWikiを探すよう組むと思う。

(ReadMore...)

* deny from 64.124.85.0/24

#Web
 再び、BecomeBotに検索履歴をかき回されたので、.htaccessにて排除することにした。
robots.txt BecomeBot締め出し
http://baku.homeunix.net/WiKi/rnx/index.rb?1138996756.txt
にてのけ者にしたはずなのだが、BecomeJPBotは別物というわけか。え゛ー。
 ちなみに、robots.txtは最初にちゃんと読んでる。

 20秒に一度のアクセスだったり、UAの項に載っている http://www.become.co.jp/site_owners.htmlは「お客様が指定されたページは見つかりませんでした。」だったり、かなり感じ悪い。
(ちなみに、正しくは、http://www.become.co.jp/site_owner.html だそうだ。その辺の食い違いも感じ悪いぞ)
 また、他の多くのクローラの挙動と違ってリファラを送る点で、RandomeNoteの敵。

↓はた迷惑なアクセスの記録
(ReadMore...)

* 人とロボットを区別したい

 またRandomNoteの検索キーワードがかき回された。
 今度の犯人は、おそらく先読みプログラムの一種。UAはIEを名乗っているので、種類は不明。

(ReadMore...)

* GetHTMLWにお引き取り願う

 ログを見たら、"Pockey-GetHTML/4.12.0 (Win32; GUI; ix86)"を名乗るUAがものすごい勢い(秒間数アクセス)で根こそぎ(RandomNoteの項目まで)さらっていった形跡があった。

 検索してみたところ、GetHTMLWとのこと。
 あ゛ー、俺、昔使っていたよ…。ダイヤルアップ時代ならともかく、数メガbps当たり前の今日日動かすと恐ろしいことになるのだな。
★★ GetHTML Ver.4.13, GetHTMLW Ver.7.13 より、★★

(1) 同一サーバ(ホスト)への同時取得数が 1 に固定されました
(2) 同一サーバ(ホスト)への連続取得に対し、1秒の wait をデフォルトで入れました

上記は、ブロードバンド化に伴う Web サーバへの負荷を軽減する為の措置です。
とのことだけど、使用者は古いのを使っていたようだな。

 プロキシモードで一度見た記事をため込んで使う分にはとても便利で有用なソフトだと思うのだけど、まるごと取得は勘弁。

というわけで、ちゃんとrobots.txtは読むので、一部動的ページからお引き取り願うことにした。
 4.12以前は丸ごとお引き取り願うべきかなー。


参考:
先読みソフトについて [Archive] - XREA SUPPORT BOARD
http://sb.xrea.com/archive/index.php/t-1388.html
#Web

* RandomNote 作成日を表示+年月日のみで時分秒は非表示

def print_leaf(fname, view=nil, anchor=1)
内を改造
      s = "%s\n\n%s\n%s" % [mes.chomp, Time.at(fname.gsub(/\D/,'').to_i).strfti\
me('create : %Y/%m/%d (%a)'), File.mtime(fname).strftime('update : %Y/%m/%d (%a\
)')] # modified by bakuchikujuu

#RandomNote #Web

* RandomNoteのrefererを検索エンジン(等)に登録させない

 アクセスログを眺めてたら、RandomNoteのrefererページに検索エンジン経由でのアクセスがあった。

 Webページでの披検索語の表示は迷惑極まりない。その単語が更にCGIに登録されて、それを検索エンジンが拾って、その単語で検索した人がアクセスして…。
 俺自身が大嫌いな要素なのに自分がやらかしていたとは…なんてこった…。

 というわけで、ざくざくとRandomNoteをいじった。
 もともとのコードにヘッダにロボット避けを入れる機能があるので、refererの表示の際にはそのようにするように変更。
def do_referer内
#  print_header(' - referer')
print_header(' - referer', true) # 検索エンジンにリンク元が登録されると邪魔

 あと、cahge_logも検索エンジンにインデックスされるべきじゃない。
def do_change_log
#  print_header
print_header(' - change log', true)

#RandomNote#Web

* RandomNote ロボット対策

 今度はgooのichiroが検索ワードを引っかき回していった。

 検索ワードによるリンク先にアクセスするとその単語がageられるけど、ロボットにかき回されると困る。…が、ロボットによるアクセスだけをうまく制限する方法が思いつかない。他の人にも役に立つかもしれないメモ帳を目指しているので、ロボットの完全排除は論外だし…。

 ぱっと思いつくのは、UAを見てロボットだったら記録に残さないように改造すること。でも、ブラックリスト方式だから、最初にリストを作るのがやや面倒で更に新手が増えるたびにリストを更新する必要があるのが面倒だぁ。

 とりあえずの対策として、ichiroとかはRefererが空なので、Refererがnilな場合は検索ワードを追加しないようにした。
def save
  PStore.new(CACHE_DATA).transaction do |db|
#    db['search']  = @search
    db['search']  = @search if @cgi_referer != nil

2006/02/09:今度はmsnbotが引っかき回していった。対策をミスっていたのが発覚し訂正。
cgi_refererはリファラ無しの場合はnilなのだな。

#RandomNote #Web

* robots.txt BecomeBot締め出し

User-agent: BecomeBot
Disallow: /

 RandomNoteの検索履歴をしっちゃかめっちゃかにしていきやがったBecomeBotをルートから締め出し。
 どーせ日本語読めないんだから、その方が互いに資源の節約だ。

 RandomNoteはロボットに検索させないようにしているようなんだけど、BecomeBotはmetaを解さないらしい。

参考:
ウェブマスターフォーラム - クローラの情報
http://forum.su-jine.net/theme/seo/58/

◇追記
2006/02/04,11:58:17,64.124.85.211,"64.124.85.211.become.com","-","-",GET,"/robots.txt","","1.1",200,117,"-","","Mozilla/5.0 (compatible; BecomeBot/2.3; MSIE 6.0 compatible; +http://www.become.com/site_owners.html)"
robots.txtを読んで去っていった。その辺は行儀がいいな。

#Web

* RandomNote 内部へのリンク/外部へのリンク 差別化


def link_self(mes='', fname=nil, cmd=nil, option=nil, smode=nil, anchor=nil)
内を改変
%|<a class="self" href="#{url}" #{anchor ? anchor : ''}>#{mes != '' ? mes : '\root'}</a>|

後は、テーマのCSSを適当に変更のこと

* RandomNote 参考文献