daemonfreaks.com

トラックバックスパムが

posted by jun-g at Wed, 15 Nov 2006 20:49 JST

昨日、一昨日と大量のトラックバックスパムを喰らってしまった。昨日は仕事が終わって家に帰ってきたのがAM2:30頃で、それから大量のスパムに気付いて、慌てて削除したんだけど、このまま放置してたら今日も喰らっちゃうだろうなぁ、と思ったので、眠かったけどとりあえず急いでtrackback.pyを修正してスパム避けを実装しておいた。

--- trackback.py.orig	Wed Nov 15 02:58:41 2006
+++ trackback.py	Wed Nov 15 03:12:36 2006
@@ -87,6 +87,16 @@
         message = "A trackback must have at least a URL field (see http://www.sixapart.com/pronet/docs/trackback_spec )"
 
         if form.has_key("url"):
+            try:
+                import urllib
+                ret = urllib.urlopen(form['url'].value)
+                target = ret.read()
+                ret.close()
+            except:
+                target = ""
+            if not config['base_url'] in target:
+                print >> response, tb_bad_response % "Please paste any links to your blog."
+                return 1
             from comments import decode_form
             decode_form(form, config['blog_encoding'])
             import time

いわゆる言及リンクのないトラックバックは受け付けないようにしたかったんだけど、trackback.py内で当該エントリのURLを取得する方法を調べる余裕がなかったので、結局ここのサイトのURLがあればオッケーという適当な作りに。送信元ページ内のチェックもかなり適当。週末時間が取れたらもうちょっとちゃんと書き直す。つもり。