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

* 掲示板spammeerのPOSTの投げ方

 formを生成した時刻をtype=hiddenで記すようにしてみた。
 結果、以下のことがわかった。
・フォームの内容は最初にGETしたときのを使い回す
・不明なhiddenは、その時のをそのまま送る

 GETするのとPOSTするのとでホストを変えるのを逆手にとって、hiddenでホストに関する情報を入れておくのも手だな。
(ReadMore...)

* 掲示板spammerの削除パスワード

 掲示板spam投稿ロボットによっては、POST時に削除パスワードを入れるのがある。削除パスワードがないと書き込み拒否される場合の対策だろうか?

 どうやら、削除パスワード欄であるかどうかの判別は、"pass"とかの文字列かどうかで判断しているようだ。ダミーの<input type="text" name="pass">をclass="dummy"とでもして、cssで不可視にしておけば、排除の判断に使えそう。

 不思議なことに、ランダム文字列じゃなくて固定文字列だったりある程度の規則性があったりする。何かあったときに消去を試みるためだろうか?
(ReadMore...)

* elm-chan.orgから弾かれる条件

 いつの間にやら普通に見えるようになっていたのだが、また見れなくなった。
 どうやら、掲示板へのアクセスがアクセス規制発動の鍵っぽい。SleipnirでShift+クリックで各書き込みをポンポンポン…とまとめて開いたのがまずかったようだ。そりゃ、秒間1アクセス以上になるから質の悪いロボットと誤認されても仕方ないか。

 これを書いている途中で、「スレッド(展開)」モードがあることに気づいた。まとめて目を通すときにはこれを使えばよかったのか。


追記:
 数日前から弾かれなくなってた。規制期間は2週間ぐらい?

追記:
 うちの環境のDNSキャッシュが腐っていただけかも。悪いのはXP?ローカルのBIND?ルータ?ケーブルテレビ?

elm-chan.orgを閲覧できなくなった
http://baku.homeunix.net/WiKi/rnx/index.rb?1147794592.txt

#Web #電子工作

* 馬鹿なspam投稿ツール?

 Apacheのログに、BBSへのPOSTを行ったもののエラーか何かで反映されていない、spammerからのアクセスが時折見られた。
 ApacheのログにはPOST内容までは記録されないので、BBSのプログラムを少しいじってPOST内容を記録するようにして、その手のアクセスを待ち構えることにした。

 で、やっとそんなアクセスが1件あったのだが…
rep_num 0
pass    bsbl7822
do      post
name    Helga
data
mail    vovo@hotmail.com
subj    carpet-cleaning

 本文空っぽ。URLとかを書き込もうとした形跡もなし。
 何をやりたいのだろう?と思って、とりあえず"vovo@hotmail.com"をぐぐってみると…
 どうやら、本文のtextareaのname属性が"body"じゃないと、本文と判断しないらしい。
…馬鹿?

 ま、spammerが能無しなのはありがたいことだ。
 とりあえずDSBLに登録されているOpenProxy経由のを弾いても稀にすり抜けて投稿されるのがまだあるので、そんな馬鹿な作者のツールばかりではないようだが。

#掲示板spam対策 #Web

* Baiduspider締め出し


 こんな迷惑なアクセスをするロボットは、問答無用で閉め出されてもしかたないと思うぞ。
 robots.txt一応読むようだが、27日に一度読んで
2006/07/27,19:22:27,60.28.17.51,"","-",GET,"","1.1",200,
117,"-","","Baiduspider+(+http://www.baidu.com/search/spider.htm)"
それっきりというのはどうかと思う。
 ま、動的ページへの非効率極まりないアクセスの前には、robots.txtを読む頻度が低いことなんて些細なことだが。

#Web

* DSBLは効果絶大

公開プロキシ弾きを投入してからspammerがやってくるのを今か今かと待っていたのだが、やっとやってきた。
2006/07/12,16:24:26,222.113.48.67,"","-","-",GET,"/BBS/BBS.cgi","","1.0",404,660
2006/07/12,16:24:30,59.10.196.81,"","-","-",GET,"/BBS/BBS.cgi","","1.0",404,660
2006/07/12,16:24:33,219.251.229.245,"","-","-",GET,"/BBS/BBS.cgi","","1.0",404,660
はい、さようなら。

 spammerがコストをかけずにあちこちからspamをばらまくにはいわゆる公開プロキシを使うぐらいしか手がないだろう。よって、公開プロキシを弾くことは簡便で極めて効果的な掲示板spam対策だと思う。
(botnetを使う手もあるが、そういうクラックをできるspammerはかなり少ないだろう)

#掲示板spam対策 #Web

* いわゆる公開プロキシからのアクセスを弾く

掲示板へのspamが激しくなりつつあるので対策。
(ReadMore...)

* spammerは踏み台を使う、ならば

 spammerっぽいアクセスは、全部いわゆる公開プロキシからのものだった。
 ならば、書き込み処理があったときにプロキシかどうかを調べれば良さそう。

 書き込み時に、http://dsbl.org/listing?hogeの問い合わせをして、リストに載っているなら弾けばいいだろう。
 問答無用で弾くと誤認識だったときに申し訳ないから、その場合にだけ人間かどうかのチェックボックスとかを出せばいいかな。

#掲示板spam対策 #Web

* 日本国外からのアクセスを弾く

 掲示板spam対策として、日本国外からのアクセスの場合は404を返すようにしてみた。
 逆引きではなくIP自体で判断するので、逆引きできない場合も機能する。

2006/07/01,08:13:29,66.249.65.194,"crawl-66-249-65-194.googlebot.com","-","-",GET,"/BBS/BBS.cgi","","1.1",404,671,"-","","Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)"
 googlebotとかも弾いちゃうのは想定外だったけど、BBSを拾われてもあまりいいこと無いのでこれでよしとしよう。むしろ、これで正常動作を確認できた。


 404を返しつつ普通にフォームを含んだHTMLを返せば、spam投稿ロボットを欺けるかな?

#掲示板spam対策 #Web

* 掲示板spamキタ━━━━(゜∀゜)━━━━ッ!!

 どマイナーな"picoBBS"を使っているおかげで、設置した2003年8月以来まったくspam投稿がなかったわたしゃのWebサイトの掲示板に、ついにspamが書き込まれた。

 むかつくよりも、むしろキタ━━━━(゜∀゜)━━━━ッ!!と大喜び。(笑)

 書き込まれたのは、あちこちで蔓延している英語でのURL羅列系。おそらく披リンク数を増やして検索ランキングを上げる目的だろう。
 その節操の無さから、それっぽいformに片っ端から書き込みを行っているのだろうと推測していたが、これでそうだと確信できた。

 書き込みを行ったホストを調べてみると…
$ echo 84.235.100.2 | ./what_country.pl
SA
$ echo 217.75.194.118 | ./what_country.pl
BA

SA?BA???

http://www.nsrc.org/codes/country-codes.html
によると、
SA - Saudi Arabia
BA - Bosnia Herzegovina

これはこれはわざわざ遠いところから…

参考資料:
不正アクセスの発信地の国別統計をとろう!
http://www.nminoru.jp/~nminoru/memo/ip-address/what_country_from.html

#Web #掲示板spam対策

* はてなのキーワードへのリンクを殺す

はてなダイアリーのキーワードへのリンクを消すProxomitorn用フィルタ。
[Patterns]
Name = "Hatena Keyword Killer"
Active = TRUE
URL = "d.hatena.ne.jp"
Bounds = "<a*/a>"
Limit = 256
Match = "<a class="keyword" href="http://d.hatena.ne.jp/keyword/*">(*)\0</a>"
Replace = "\0"

「このはてなダイアリーの存在意義のひとつと言っても過言ではない素晴らしい機能。」
とあるが…正直、邪魔。

#Proxomitorn #Web

* HTMLをXHTMLに変換してREXMLで処理

プログラム(抜粋)
h = Html2xhtml.new
h.read_array(readlines)

require "rexml/document"
y = REXML::Document.new(h.body.to_s)

y.elements["/html/body"].elements[6, 'table'].elements['tr/td'].elements.each('a') do |a|
    p a.attributes['href']
    print a.text.strip + "\n"
end
結果
"http://auctions.yahoo.co.jp/jp/0-category.html?"
オークション
"http://list3.auctions.yahoo.co.jp/jp/23336-category.html?"
コンピュータ
"http://list3.auctions.yahoo.co.jp/jp/2084039759-category.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

* target="_blank"があらかじめわかるように

 target="_blank"がついたリンクの前に&rArr;を挿入するproxomitorn用フィルタ。
[Patterns]
Name = "_blank identifier"
Active = TRUE
Bounds = "<a*>"
Limit = 256
Match = "(<a*target=("| )_blank("| )*>)\1"
Replace = "&rArr;\1"

#proxomitorn #Web

* elm-chan.orgを閲覧できなくなった

ここ数日、
えるむ - Electronic Lives Mfg.
http://elm-chan.org/index_j.html
を閲覧できなかった。
 困った。色々と大いに参考になるページなのに。

 アクセスすると、www.pir.orgに飛ばされる。どうやら、ロボット対策とかの絡みらしい。UA名やIPアドレスで弾いているそうだ。心当たりないんだけどなぁ…。
 幸い、使っているケーブルテレビがHTTPプロキシサーバを用意していて、それ経由だと普通に閲覧できた。elm-chanを読ませていただくときだけは、それを使うことにしよう。

 ブラウザをsleipnir(IE)じゃなくてFirefoxやOperaにしてみたり、鯖をおいてあるYahoo!BB回線からアクセスしてもだめだった。鯖をおいてあるホストは80番ポートを開けてあるからいわゆる公開proxyとして誤認される可能性があるけど、自宅のケーブルテレビ回線からでもダメなのはどういうわけなんだろ?

Web 電子工作