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があればオッケーという適当な作りに。送信元ページ内のチェックもかなり適当。週末時間が取れたらもうちょっとちゃんと書き直す。つもり。

Pythonでミクシィ日記に投稿

posted by jun-g at Sun, 12 Nov 2006 18:19 JST

ミクシィ日記はチラシの裏扱いしているので「友人まで公開」にしている。でもそうしてると数少ないマイミク達はどうしようもないチラ裏日記ばかり読んでしまってこのブログを全然読んでくれない為、僕について「このゲス野郎め!」みたいな印象しか受けなくなってしまうという問題が考えられる。これは大問題!!

という事で、前の「vimでpyblosxomのエントリを書いてアップロードするvimスクリプトをpythonで書いた」を拡張して、「uploadEntry()」を実行したらエントリをアップロードしつつミクシィ日記にもタイトルとURLを投稿するようにしてみる事にした。

まずは同じような事考えてる人いないかな〜という事でググってみると、そのものズバリ「mizzy.org - ブログを書いたら mixi 日記に自動投稿」というエントリを発見。しかしPerlだった。うーん。ということで検索キーワードに「python」を加えて探してみたら、lirisさん作の「MIXI Pythonライブラリ」と、それをsetomitsさんがメンテナンスした「mixi python ライブラリ」を発見。素晴らしいっす。しかし、ライブラリには日記投稿系のメソッドが実装されていなかった…。めげずにもうちょっと調べてみると、Perlの「WWW::Mixi」には投稿系のメソッドも実装されているということで、これを参考にしながら、日記投稿メソッドを自分で実装することにした。

まずは「mixi python ライブラリ」からpymixiをダウンロードして展開。BeautiluSoupUniversal Encoding Detectorも必要、との事なのでインストール。僕はFreeBSDを使っているので、ports treeから、

# cd /usr/ports/www/py-beautifulsoup/
# make install clean
# cd /usr/ports/textproc/py-chardet/
# make install clean

でインストール完了。とりあえず動くか試してみる。

$ python mixidiary2txt.py -u MAILADDRESS -p PASSWORD

まったく問題なく動いた。という事で、元となっているクラスモジュール「mixi.py」に日記投稿用メソッドを追加する作業に。とりあえずWWW:Mixiのリファレンスを読むと、最低限必要なパラメータは

idミクシィID。
diary_titleタイトル。
diary_body本文。
submit画面遷移用パラメータ。
編集画面->確認画面遷移時の値は「main」。
確認画面->投稿時の値は「confirm」。

という事がわかった。後、クロスサイトリクエストフォージェリ対策(と思われる)ランダムトークン「post_key」が確認画面で発行されるので、確認画面から「post_key」を取得する必要がある事もわかった。

つー事で、「mixi.py」のクラス「MIXI」に以下を追加。

    def _post_diary(self, mixiid, title, body, submit="main", postkey=""):
        params = urllib.urlencode({"id": mixiid,
                                   "diary_title": title,
                                   "diary_body": body,
                                   "submit": submit,
                                   "post_key": postkey})
        try:
            f = self.opener.open("%s/add_diary.pl" % MIXI_BASE_URL, params)
            data = f.read()
            f.close()
            return BeautifulSoup.BeautifulSoup(data)
        except:
            return None

    def post_diary(self, title, body):
        soup = self._post_diary(self.mixiid, title, body)
        if soup == None:
            return False
        postkey = soup.find("input", {"name": "post_key"})["value"]
        soup = self._post_diary(self.mixiid, title, body, "confirm", postkey)
        if soup == None:
            return False
        return True

Pythonから使うには、

from mixi import MIXI
m = MIXI()
m.login(MAILADDRESS, PASSWORD)
m.post_diary("日記タイトル", "日記本文")

でOK。

これにて問題解決!!

ブラック・マシン・ミュージック

posted by jun-g at Sat, 11 Nov 2006 16:48 JST

最近通勤時にこの本を読んでいる。まだ半分ぐらいしか読めていないけど、かなり面白い。

内容はサブタイトルにあるとおり、「ディスコ」から「ハウス」「デトロイト・テクノ」が生まれた経緯、歴史について、当事者たちの証言を交えながら、とても詳しく解説されている。当時のシカゴやニューヨーク、デトロイトのパーティーシーンについてもとても生々しく書かれていて、読んでて興奮して無性にクラブに遊びに行きたくなったし、自分が音楽をやる側だった頃の初期衝動的な気持ちをちょっと思い出して、久しぶりにターンテーブルに火を入れたりしてみた。

ダンスミュージックが好きな人にオススメです。

ochusha port on FreeBSD

posted by jun-g at Sat, 11 Nov 2006 16:22 JST

この間苦労しながらFreeBSDにインストールしたおちゅ〜しゃについて、その後Webで色々調べていると、既にFreeBSD用のportを作成して公開されている方を発見してしまった。なんだー、もっと早く見つけていれば苦労せずに済んだのに。しかも書き込みできない問題を修正するパッチまで用意されていた。

てなわけで書き込み対応用パッチを自前のportに取り込んで再インストールしておいた。

作者に連絡を取りつつ、自前で作ったport(というか配布されていたportをメンテしたやつ)をsend-prした方が良いかな?とか考えてたけど、そのページによると既にPRは出ているみたい。コミットされるのをwktkしながら待つとしますか。

2chのおいお前ら! おちゅ〜しゃはどうですか? Ver.5スレによると、どうやらおちゅ〜しゃ自体の開発も再開されたようなので、こちらも期待。

<<  Page 2 of 3  >>