MovableTypeの最近のブログ記事

最後の対応をしてから 4~5日間は、あれでも 1日に 1~6件くらいのスパムコメントが書き込まれてたんだけど、それ以降、今日まで約 3週間、スパムコメント・ゼロですよ!0件!!

つまり、あれなんでしょうね。確かに 1日数件の書き込みには成功していたものの、成功率が著しく悪くなったんで(それまでは 1日に数十件の書き込みがあったわけで)、スパム書き込み対象サイトから外れたんでしょうな、うちのブログ。
向こうも自動のスパム投稿プログラムを動かすPCの数は限られているだろうし、回線の帯域だって無尽蔵ってわけじゃないだろうから、多分、効率の悪い(失敗率の高い)サイトはリストから外すんだと思うよ。

5日前に 1件だけスパムコメントが書き込まれたんだけど、これは今までとは違う国内のスパム業者みたい。
内容が今までとは違って、国内の偽物ロレックス売ってるせこい詐欺サイトの紹介だったので。
多分、あんまり PC 持ってない業者なんだろうな。うちにも何十件か書き込みを試みた結果が、成功数 1件って感じかな。
それとは違い、今までの業者は、多分並列で数台か十数台かの PC をフル回転させてスパム発信してたんだろうな。数百件試みて、数件成功していたと。そういうことだろう(^^;

まあ、というわけで、こりゃ俺の完全勝利だ。

しかし、もともとコメント数少なかったんだけど、この対応して以来、コメント数が完全に 0件になってしまいましたわ(^^;

ということで、アルファベットの画像を元に戻します。

20141129_cap.jpg

数字の白黒反転はそのままにしておくので、多分、これでまたスパム数が増えるってこともないんじゃないかなっと。
まあ、またスパムが増えてきたら改めて何か考えるよ。
とりあえず今夜は勝利の美酒を(笑)
MTOS にスパムコメントを送って来る腐れ人間(まともな仕事の出来ない社会不適合者)どもとの戦い。
とりあえず、今回の数字画像の反転表示は有効な一打だったようだ。

あれから 6時間。
一通のスパムコメントも・・・あれ?三通来てるな(^^;

どうも、これ、たまたま「解析できるアルファベットだけ」の画像が表示されたんじゃないかな?
あるいは、手打ちしてるスパマーか(笑)

試してみると、10回ほど画面をリロードしてみたら数字を全然含まない文字列の画像が表示された。

20141106_captcha2.jpg

多分、すごい数の試行をしているはずだから、たまたま三通くらい通っちゃうってケースはありそうだな・・・
確率的には低いけど、アルファベットだけ表示されちゃうケースがあるかぎりは、完全にスパムゼロとはいかんということだな。

明日の朝まででどのくらい突破してくるか見てみないとアレだけど、6時間で三通だけなら、とりあえず俺的には勝利宣言でいいかな。

あとは、向こうがこういうケース(一部の文字だけ黒白反転表示)にいつ対応してくるかだな。
それは三日後なのか、1か月後なのか、もうこういうレアケースは無視や!となるのか・・・(基本的には、解析NGとなった画像は保管しておいて、改修時のテストデータとして使うはずだけどね。こういうものを作る時は)
昨日、「MTOSの画像認証で俺の手書き文字を使う(笑)」に書いたように、MTOS の画像認証(CAPTCHA認証)機能を突破してくるスパムコメント阻止のために、俺の手書きアルファベットを使うようにしたんだけど・・・

はっきり言って、俺の負けだった・・・

今までの、CAPTCHA認証を突破してきたスパムコメント数が

11/05 32
11/04 21
11/03 10
11/02 13
11/01 16
10/31 20
10/30  9
10/29  5
10/28 13
10/27 12
10/26  6
10/25  2
10/24  1
10/23  2
10/22  2

こんな感じだったんだけど、昨日、手書き文字対応をした後にも 18個のコメントが・・・

変わってないわあ(^^;
いや、多分、ここ 2日間で急激にスパムコメントが増えていたので、18通という数字も、何パーセントか阻止率を上げた結果の数字なのかもしれない。しかし、これではまったく満足できんわなあ・・・

ということで、今度は数字を変更してみた。
手書きではない。
手書きしたところで、数字の「特徴」なんてそうそう変わらんやろう。

それがこれだ!

20141106_captcha.jpg

数字画像だけ、白黒反転してみただけ(笑)安直ぅ~(笑)

でも、これ効くと思うわ。人間が見たら、「fz97vw」に見えるけど、コンピュータには「黒いところが文字の一部なのか、反転したバックの色なのか」なんてそうそうわからんからね。
「ある程度黒い部分が多かったら、文字が反転表示されているのではという仮説を立てて、白い部分を文字としてパターンマッチングしてみる」ということをすればヒットさせることも可能だけど、ここまでの機能は実装してないと思うね。
だって「ある程度黒い部分が」の「ある程度」の判断が難しいからね。
全体が反転していれば判断しやすいだろうけど、こんな風に一部だけが反転してたら、ちょっとしんどいでぇ(笑)

この数字画像にしてから1時間。今のところ、突破成功したコメントスパムはゼロである。
こりゃ、俺の完全勝利か!?(昨日は対応後1時間で1,2個突破されたからな)

ざまーみさらせ、スパム業者め!!まともな仕事ができず、他人に迷惑をかけることしか出来ないクズどもめ!
以前、「まさか、MTOSで画像認証がこんなに簡単にできるとは知らなかった・・・」というエントリで、スパムコメント対策で画像認証(CAPTCHA認証)機能を導入する話を書いた。
なにせ、この頃は1日に2千件くらいのスパムコメントが来てたからな(^^;

で、この MTOS に標準でついていた画像認証もなかなか使えるヤツで、それ以降、スパムコメントは数日で1件だけって感じに改善していたのだ。
まあ、画像認証の「画像」を自動解析してスパムコメントを書き込むという試みは、以前から暇人のバカどもの間で行われていたが、その成功率が数日に1件という感じだったんだろう。

しかし、ここのところ成功率が著しく上がってきているのである。

多分、書き込み間隔から想像するに、かなりの数の書き込みを試みて、そのうち成功するのは数パーセントという感じじゃないかと思うんだけど、それでも昨日が23件、一昨日は6件、その前の日は20件という数のスパムコメントがこのブログにも書き込まれている。
そして、今日は午前中だけで39件も書き込まれちゃってる!!!

こりゃいかんねえ。
まあ、MovableType みたいなメジャーなシステムは狙われやすいからねえ。
MTOS に標準でついてくる英数字の解析はかなり進んでるんだろう。

・・・ということで、表示される文字(とりあえず英字のみ)を「俺の手書き文字」にしてみた(笑)
さっきの昼休みに、マウスを使って10分で書いた大作だ(笑)
mt-static/images/captcha-source 以下の画像を、作成した PNG 画像で置き換えるのである。

20141105_abc.jpg

標準の文字とあまり形の変わらないものもあるが、1文字でも自動解析に失敗すれば良い訳だから、これで大丈夫じゃないかなあ・・・と。
まあ、中には偶然突破してくるのもいるだろうけど、以前のように数日に1件レベルになればそれでいいのだ。

ただ問題は、字が汚いので、本当にコメントを書き込んでくれる人にも認証用画像の文字が読めないということである(^^;

20141105_abc2.jpg

こんな感じ。こりゃ無理だ(^^;

20141105_abc3.jpg

一応、バックの表示を少し見やすいものに変えてみたけど、そもそも、単体で見ても読みづらい字なので(^^;どうしようもないなあ。

まあ、あまりにコメントがつかないようなら、俺文字アルファベット一覧画像を下の方に貼っておくとか、そういう対応を取ればいいかな。
まあ、もともとコメントがほとんどつかないブログなので、「このせいでコメントが減ったかどうか」の判断が非常に難しいんだけど(^^;
長年の懸案であった、当ブログの「検索結果が 20件しか表示されない」件について、1ページあたり10件表示でページ分割し、各ページにジャンプ出来るよう対応した。
これで、「あの豚骨ラーメンの美味い店、なんて名前だったっけ?」と「豚骨ラーメン」で検索したら、どうも見たいページは 21件目のようだ・・・という悔しい思いもなくなるぞ!!

・・・って、今どきそんなことしてるのか!?とか言われそうですが(^^;

自社ブログは別に MTOS で何も機能的に困ってないし、ちょっと、中の Perl に手を入れたりしてるんで、移行するのが面倒臭くてズルズルと・・・(^^;
相当ヤバいセキュリティホールとか見つからない限りは、このまま MTOS で行くと思うよ。
「紺屋の白袴」ってヤツです(^^;

ま、それはそれとして、方法をメモっとく。

■mt-config.cgi の編集

SearchMaxResults 10
を、追加

■「検索」ウィジェットの編集

検索条件入力フォームのところに、
<input type="hidden" name="limit" value="<$MTSearchMaxResults$>" />
を追加。

        <form method="get" action="<$mt:CGIPath$><$mt:SearchScript$>">
            <input type="text" id="search" class="ti" name="search" value="<$mt:SearchString$>" />
<mt:If name="search_results_template">
            <input type="hidden" name="IncludeBlogs" value="<$mt:SearchIncludeBlogs$>" />
            <input type="hidden" name="limit" value="<$MTSearchMaxResults$>" />
            <ul class="search-options">
                <li><input type="checkbox" name="CaseSearch" /> 大文字/小文字を区別する</li>
                <li><input type="checkbox" name="RegexSearch" /> 正規表現</li>
            </ul>
<mt:else>
            <input type="hidden" name="IncludeBlogs" value="<$mt:BlogID$>" />
            <input type="hidden" name="limit" value="<$MTSearchMaxResults$>" />
</mt:if>
            <input type="submit" accesskey="4" value="検索" />
        </form>

とか。

■「検索結果」システムテンプレートの編集

フッターの前に、ページ送りのタグを追加

<div class="content-nav">
    <span class="prev">
<MTIfPreviousResults>
    <a rel="prev" href="<$MTPreviousLink$>" onclick="return swapContent(-1)">&#60; 前ページ</a>
<MTElse>
    &#60; 前ページ
</MTIfPreviousResults>
    </span>
    <span class="pager">
    <MTPagerBlock>
<MTIfCurrentPage>
    <span class="this-page">●</span>
<MTElse>
    <a href="<$MTPagerLink$>">○</a>
</MTIfCurrentPage>
    </MTPagerBlock>
    </span>
    <span class="next">
<MTIfMoreResults>
    <a rel="next" href="<$MTNextLink$>" onclick="return swapContent()">次ページ &#62;</a>
<MTElse>
    次ページ &#62;
</MTIfMoreResults>
    </span>
</div>

とか。

■サイトを再構築

これしないと、編集した「検索」ウィジェットの内容が静的ページに反映しないからね。

以上で、検索結果の下にページ送りのリンクが表示される。
20140606_blog.jpg
こんな感じ。
うちはずっとブログに MTOS を使ってるわけですが、コメントの画像認証(CAPTCHA認証)機能を MTOS が標準で搭載していることを、今の今まで知りませんでしたわ(^^;
しかも、うちのは MTOS4 なので、絶対そんな機能はないよなあ、どっかで画像認証のプラグインを拾ってこないといけないんだよなあ・・・面倒だな・・・なんて思ってた(^^;

でも、そんなことを言うてられない状態に。

1日のコメントスパム数が 2,000コメントを突破しましたがな(^^;
さすがにこうなってくると管理はかなり面倒・・・

ということで、ついに(今更(^^;)我がブログにも画像認証(CAPTCHA認証)機能導入ですよ。

以前読んだ MovableType4 関係のドキュメントで、「~/extras/examples/plugins の下にある reCaptcha プラグインをインストール」とか書いてあって「MTOS にはそんなディレクトリは無ぇ~!」と挫折した思い出があったのだが(^^;、最初に書いたように、実は MTOS4 には標準搭載されていたのである。

設定を行いたいブログが選択されている状態で、メニューから「設定」→「コメント」と進み、下の方にある「CAPTCHAプロバイダ」で「Movable Type 既定」を選ぶだけである。「変更を保存」すれば、ブログの再構築をするよう指示が出るので、それに従って再構築実行。
これで、コメント入力欄の下に「画像の中に見える文字を入力してください。」という表示が追加される。

20140408_captcha.jpg

ちなみに、うちは元々「認証なしコメント」で運用していたのだが、今までコメントを受け付けてなかったり、コメントを書くのに認証が必要な設定にしていた場合は、メニューから「設定」→「登録/認証」と進み、認証方式で「認証なしコメント」を選択すること。

いやあ、しかし、こんな簡単なんなら、もっと早く対応すればよかった。
1年半以上、こんな状態が続いていたからなあ。(ま、当初は件数がもっと少なかったんだが)
PostTweet の最新版。

1.1.3 かと思ってたら、1.1.6 やん(^^;

で、1.1.6 は MTOS 4.1 以降で使えるみたいなので、1.1.6 に上げてみた。

このエントリーがテストも兼ねてます。

さて、ちゃんと Tweet されるや否や。

<追記>
バッチリOKだった!!
数ヶ月前から PostTweet プラグイン(エムロジック放課後プロジェクトさん製作)が使えなくなってた。

MTOS に記事を投稿したら、タイトルと短縮 URL を Twitter に投稿してくれるプラグインです。

以前もこういうことが発生したんだけど、あの時は短縮 URL を作るのに利用していたサービスの仕様が変わったのか、別のサービスを利用するようにしたら復活した。
しかし、今回は駄目。

まあ、俺のブログ、別に不特定多数に見てもらいたいわけではなく、PostTweet もお客さんに MTOS を勧めていた頃にテスト目的で入れたものだったので、ま、動かなきゃ動かないでいいか・・・と放置してたんだけど、今日、久しぶりに自社サーバの保守とかしてたんで、ついでにこの問題もちゃんと調べてみた。

結局、PostTweet のバージョンが古くて、Twitter API v1.1 に未対応なだけだった(^^;
PostTweet を、1.0.6 から 1.1.1 にバージョンアップしたら即解決。
(最新バージョンは 1.1.3 らしいんだけど、これは MTOS 4 では動作保証してなかったので)

20131119_PostTweet.jpg
PostTweet のバージョンアップをする前に、短縮 URL サービスの設定を色々試してみたり、PostTweet で使う Perl モジュールを最新版にしてみたりしたけど、まったくの無駄だったってことだな(^^;

いやあ、うちのサーバ、開発のために Apache の設定を時々変えたり、Perl のモジュールを入れ直したり色々するんで、プラグイン本体の前に、まず環境を疑っちゃうんだよね(^^;

<教訓>
プラグインが動かなくなったら、最新版が出てないかちゃんとチェックせよ!(^^;
この間、チラっと書いたけど、このブログを動かしているサーバが時々落ちる。いや、正確には落ちはしないんだけど、SWAP 領域を食いつぶして OOM Killer がプロセス殺しまくるが追っつかず、完全に固まった状態になってしまう・・・

しばらくしたら自然に復旧することもあるし、数時間そのまんまのこともあるし、発生する頻度もまちまち。
今、ログで調べてみたら、

3/4
3/13
3/14
3/19
3/23
3/24
3/25
4/3
4/5

こんな感じで発生している。

この状況になったらメールが飛んでくるんだけど、自社のテスト用サーバだから面倒臭いときはそのまま放置なんだよね(笑)
でも、4/3、4/5 と連続で「再起動しないといけないほどの状況」になったので真面目に対応することにした。

/var/log/messages を見ると、OOM Killer が殺してるプロセスがほとんど httpd か mt-search.cgi だし、access_log 見ると、固まる前には大量のロボット型検索エンジンからの mt-search.cgi へのアクセスが発生している。
どうも原因は mt-search.cgi への大量アクセスによる過負荷のようだ。

ほとんどが、Bing か NHN だ。
Bing と言えば MSN の検索サイト。まったく、Microsoft は何してくれてんねん!!
あと、NHN。お前は韓国の会社やろ?他国のサーバに迷惑かけてんじゃねえよ、実際。

つーことで、

User-Agent: *
Disallow: /mt/mt-search.cgi

という内容の robots.txt を置いた。

まあ、robots.txt というのは紳士協定で、守らなきゃ守らないでもいいんだけど、いくらなんでも Microsoft も NHN も大手企業なんだから守るやろう(笑)

ということで、これでしばらく様子を見ることにしよう。

PostTweetプラグインというのを使って、MTOSでブログを書いたら、その情報を Twitter に投稿しているのだが、昨日、MTOS を別のサーバに移行したら、「Twitterへの投稿に失敗しました」というエラーが出るようになってしまった。

MTOS のシステムログを見ると、

PostTweet: Twitterへの投稿に失敗しました。(twitterから応答を得られません。(post on Net::OAuth::ProtectedResourceRequest=HASH(0x1ffeebc0) failed: 403 Forbidden at /usr/local/share/apache/hosts/blog.netandfield.com/www/mt/plugins/PostTweet/extlib/Net/OAuth/Simple.pm line 721. ) )

って出てるんだけど、何が問題なのかこれじゃわからんなあ。ハッシュの中身を表示してくれんと。

で、ver1.03を使ってたんだけど、作者(エムロジック株式会社さん)のサイトを見てみると、ver1.06が出てたので入れ替えてみた。

そしたらやっぱり駄目。エラーが出て Twitter には投稿できない。

でも、システムエラーの内容が変わった。

PostTweet: Twitterへの投稿に失敗しました。(twitterから応答を得られません。(POST on http://api.twitter.com/1/statuses/update.xml failed: 403 Forbidden - <?xml version="1.0" encoding="UTF-8"?> <hash> <request>/1/statuses/update.xml?oauth_timestamp=1354623557&amp;oauth_consumer_key=JFAXXXXXR5GtsonDhjvxA&amp;status=%E3%80%8C%E3%81<途中略>%80+-+http%3A%2F%2Fbit.ly%2FXXCTFF&amp;oauth_signature=w9PXXXXm4%2FUTIp68eiGXXXXX98w%3D&amp;oauth_nonce=XXXXX436&amp;oauth_token=XXXXXXXXX3-VW4DZ1tNqnka9nE3iXXXXXXXXXXXXXXX19W1JUoVnWy&amp;oauth_version=1.0&amp;oauth_signature_method=HMAC-SHA1</request> <error>Status is a duplicate.</error> </hash> at /usr/local/share/apache/hosts/blog.netandfield.com/www/mt/plugins/PostTweet/posttweet.pl line 572 ) )

ああ、投稿時にブログの URL を bit.ly で短縮 URL 化してるんだけど、そこで引っかかってるのね。

サーバを移行したら、bit.ly の API Key とか取り直さないといかんのかね?

面倒くさいので、URL 短縮サービスを TinyURL に変更。
これで解決した。

でも・・・前回移行した時は、こんなエラー出なかったような・・・

このアーカイブについて

このページには、過去に書かれたブログ記事のうちMovableTypeカテゴリに属しているものが含まれています。

次のカテゴリはOpenPNEです。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。

月別 アーカイブ

電気ウナギ的○○ mobile ver.

携帯版「電気ウナギ的○○」はこちら