MovableTypeの最近のブログ記事

久しぶりに mt_session が壊れたな。

ブログを書こうと思うと、ワンアクション毎にログイン要求してくる。
まあ、mt_session が壊れちゃうのは MovableType あるあるだけど(--;

というわけで、MySQLに接続してテーブル修復。

mysql> SELECT * FROM mt_session;
ERROR 1194 (HY000): Table 'mt_session' is marked as crashed and should be repaired

やっぱり壊れている。

ということで修復(リペア)。

mysql> REPAIR TABLE mt_session;
+---------------+--------+----------+------------------------------------------------------+
| Table         | Op     | Msg_type | Msg_text                                             |
+---------------+--------+----------+------------------------------------------------------+
| mt.mt_session | repair | info     | Found block that points outside data file at 0000184 |
| mt.mt_session | repair | info     | Found block that points outside data file at 0000456 |
| mt.mt_session | repair | warning  | Number of rows changed from 493 to 488               |
| mt.mt_session | repair | status   | OK                                                   |
+---------------+--------+----------+------------------------------------------------------+
4 rows in set (0.98 sec)

これでOK。

ちなみに、修復したあとで SELECT * FROM mt_session; すると(大量のデータで)表示が大変なことになるのでやめておこう(笑)
うちのブログは MovableType(MTOS)を使っている。
バージョンはまだ 4系だ。

そんな古いバージョン!危ない!!とか言う人もいるが、サーバをしっかり守り、MTOS 自体にも適時手を入れていけば大丈夫。MTOS は Perl で書かれているので手も入れやすい(笑)

まあ、それはそれとして。

MTOS に新しい記事を投稿しようとすると、なんか、ひとつの動作をする度にログイン画面が開く。
例えば、新しい記事入力画面を開こうとすると、ログアウトしてるからログインしろと言われる。記事を書いて画像を貼り付けようとすると、ログアウトしてるからログインしろと言われる・・・の繰り返し。

これ、MovableType 関係のテーブル、具体的には mt_session が壊れてしまったために発生している。

今までにも、二回くらいかな~、この状態になったことがある。

復旧は簡単。

ネットで情報を探すと、phpMyAdmin を使って・・・という記事が多い。中には(よくわからず書いているんだろうけど)まるで phpMyAdmin が必須かのように書いている記事もある(^^;
いらん、いらん。phpMyAdmin なんかいらんよ。

シェル上で mysql コマンドで MySQL に接続して、コマンド一発よ(笑)

まずログイン。

# mysql -p -u root mt
Enter password:<内緒>

それから、一応試しに mt_session が壊れているか見てみようか。

mysql> SELECT * FROM mt_session;
ERROR 145 (HY000): Table './mt/mt_session' is marked as crashed and should be repaired

はい。やっぱ壊れてるね。そしたらテーブルのリペアが必要やね。

mysql> REPAIR TABLE mt_session;

これで終了。

もう、何度もログインを要求されることはない。まだまだ MTOS4、使えるぞ(笑)
ええとですねえ。
目ざとい人は気づいたかもしれませんが(気づくか?(笑))、さきほど、ブログサーバを物理的に別サーバに載せ替えました。

OS も MySQL も Apache も一気に最新版になったので、移行作業にはかなり苦労してまして(新規で立ち上げるだけならすぐだけど、何分まだ持っておかないといけない開発環境(テスト環境)が色々あって(^^;)未だに完璧には移しきれてないんですけど・・・(^^;

今まで借りていたサーバが、業者側の都合で早い方はこの 10月に、少し時間がある方も来年5月にはサービスを終了させちゃうもんで、ちょうどテストサーバを立ち上げないといけなかったのもあったので、やっとこさ移行作業に入ったという・・・(^^;

で、試しにまずは私めのブログを動くようにしてみました。
いやあ、ほんま苦労したわ。てか、まだコメント投稿ができません。

20190531_mtos_cap.jpg

個別のエントリーページを開いてもらったらわかるんですが、認証のために表示しているアルファベットと数字の画像が表示されていません。
原因わかりません。ログが出ないもので・・・これも現在調査中。
mod_cgi じゃなく mod_cgid を使ってるんで、詳細なエラー情報が error_log には出ないのよね。じゃあ、どこに出てるんだっていうと、ScriptLog で指定したログファイルに書かれてるはずなんですけど・・・
これが全然出なくて(^^; 画像表示も CGI が」実行されているんですけど、そいつが実行エラーを起こしてることはわかるんだけど、その原因が・・・

ImageMagik とか GD とか、怪しいモジュールは入れてみたんだけど・・・

というわけで、コメント入力が正常に動くまでにはもう少しかかります。
ま、元々コメントなんてじょとんどもらえないブログなんですけど(笑)
最後の対応をしてから 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だった!!

このアーカイブについて

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

次のカテゴリはOpenPNEです。

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


月別 アーカイブ

電気ウナギ的○○ mobile ver.

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