tomds|トムディーズ
トップページ(Home) tomdsについて(About) ギャラリー(Gallery) お問い合わせ(Contact)
  • 2006/12/24 No:32
    ※update
    2008/08/05 version 1.00 公開
    2008/03/12 version 0.22 公開
    2008/03/10 version 0.21 公開

    ブログ・掲示板を運営していると、必ずといってよいほど襲い掛かってくるものが、いわゆる広告投稿。つまり、スパム。
    スパムは実にうざったいものです。コメントスパムなど、何度消してもキリがない。

    そんなこんなで困っていたので、ちょっとPHPでプログラムを組んでみました。文字の位置がぶれることと、背景画像と組み合わさって表示される事により、CAPTCHAのように表示しています。
    内部では、画像連結画像結合をして表示しています。

    実行サンプルはこちらです。クリックすると新しいウインドウで結果が表示されます)

    ダウンロードするファイルは、こちらです[ver 1.00](ZIPで圧縮しています)。

    旧バージョンはこちらです[ver 0.22](ZIPで圧縮しています)。

    Hotmailなどを取得する際に、画像で表示された文字を入力する必要がありますが、あんな感じ”風”に文字を出力するプログラムです。スパム対策画像連結画像結合)表示プログラムです。

    あらかじめテキストを画像で登録しておいて、その画像と背景画像を指定すれば、画像を結合して表示してくれます。また、文字の位置も、ランダムで表示位置が調整されます。スパム対策等に使えるのではないかと。

    なお、このプログラムを作成するのに参考にさせて頂いたURLは、以下の2つとなっております。
    http://www.opensubscriber.com/message/php-users@php.gr.jp/1618093.html
    http://www.phppro.jp/news/116

    以下にファイルの内容と解説を記載します。

    ZIPファイルの中身の構成は、
    [readme.txt] - 説明書です。
    [index.php] - 実際に使用する際には、このファイルにアクセスします。画像パスワード作成プログラムを呼び出します。
    [grp.php] - 画像パスワード作成プログラム本体です。
    [postcheck.php] - サンプル用です。入力されたパスコードが合っているかをチェックし、処理を実行します。
    [complete.php] - サンプル用です。完了画面です。

    [passcode.png] - パスコード(表示される文字)を描いた画像です。
    [passcode_bg01.png] - 背景1の画像です。ランダムに適用されます。
    [passcode_bg02.png] - 背景2の画像です。ランダムに適用されます。
    [passcode_bg03.png] - 背景3の画像です。ランダムに適用されます。
    となっています。

    実際にどのような挙動をするかというと、まず、パスコード(表示される文字)の画像がこんな感じです。
    \"Passcode画像\"0から9まで、縦横同じサイズで記載します。なお、一つの文字のサイズは、grp.phpの設定項目で編集可能です。
    で、背景がこんな感じで3種類あります。

    \"Passcode画像\"まず、背景がランダムに選択され、ランダムの位置から貼り付けられます。※したがって、背景の大きさは、出力画像よりも大きい必要があります。
    そして、表示される文字の画像からランダムで選択された文字が表示されます。その際、表示位置もランダムでぶれるようになっています。(ぶれ具合は設定可能です。)
    ちなみに、図解すると↓こんな感じです。

    \"パスコードの詳細\"サンプルでは数字を使っていますが、麻雀用の掲示板で麻雀牌の画像を使ったり、トランプの画像を使ったり、使用方法の応用はいろいろあるのではないかと。掲示板スパムやコメントスパムはブログを運営する上での悩みの種だと思いますので、また時間があるときにでも新たなスパム対策のプログラムをつくっておきたいと思っています。

    追記:
    ようやくコメント機能を追加しました!で、さっそくこのパスコード作成プログラムを使用しています。書き込みチェックの際に、パスコードを入力してもらうようになっています。このように使えば、きっとスパム対策になると思うのですたい。

    さらに追記:
    そんでもってトラックバック機能も追加しました。トラックバックURLを表示する前に、このプログラムでチェックするようにしています。このプログラムの強みは、表示される文字の画像と、背景の画像を自分で選択できる事だと思っています。(位置のブレぐらいが調整可能なことも)自分で描いた絵を使ったりするのも、さらに効果的だと思います。
    この記事へのコメント:
    Comment No.1 2007/01/09 管理人KAW 実際にコメントを投稿する際に、このプログラムを使用しています。
    まず、下の[Submit Check | 書き込み確認へ]のボタンを押すと入力チェックへ移動するのですが、
    その際に、パスコードの数字を入力して頂く様に作成しています。
    このようにすれば、いわゆる自動型ロボットスパム対策になるのではないかと思います。
    Comment No.2 2008/03/10 test このプログラムは商用利用可能でしょうか?
    Comment No.3 2008/03/10 管理人KAW こんにちは。tomdsの管理人KAWです。
    - - - - - - - - - - - - - - - - - - -
    個人利用・商用利用ともども合わせてご自由にお使い下さい。連絡も必要ありません。

    ただ、このプログラム単体を販売したり、このプログラム単体をレンタルしたりする際にはご連絡ください。
    ようするに、何らかのプログラムに組み込んで使ってくださいね ってことでございます。
    - - - - - - - - - - - - - - - - - - -
    という形に致しました。(ver0.21 同梱readme.txtより)
    このプログラムを単体で販売ということは無いと思いますので、商用利用でもご自由に組み込んでお使いください。連絡も必要ありませんです。

    また、バージョンも0.21にあげましたです。
    (とはいえ同梱ドキュメントがやっつけだったので、ほとんどその修正)

    何かありましたらまたどうぞでございますです。

    Comment No.4 2008/03/12 管理人KAW Version 0.22 をアップロードしました。
    (バグを修正)
    Comment No.5 2008/06/19 メールフォームに利用させて頂きました。
    大変利用しやすく勉強にもなりました。
    ありがとうございました。
    Comment No.6 2008/06/19 管理人KAW >メールフォームに利用させて頂きました。

    役に立ったようでよかったです。
    ご感想頂けて嬉しいです、ありがとうございました。
    Comment No.7 2008/08/05 管理人KAW version 1.00 をアップロードしました。
    サンプルファイルも同梱してあります。
    Comment No.8 2008/09/15 管理人KAW 2008/09/15
    ちょこっとドキュメントを変更。(readme.txtのみ)

    余談ですが、スパムボット(スパムプログラム)って、コメントフォームには送信要求を寄せてくるのに、メールフォームにはあまり送って来ないみたいなのですよね。
    やはり、スパムボットも対象のフォーム種別を確認して送ってきているということでしょうか。

    履歴でスパムボットの送信履歴を見ると、いろいろ考えているんだなーということが分かります。
    やはり海外からの送信が大半のようですね…。
    Comment No.9 2008/11/10 sushi 質問させてください。

    「数字のフォント」と「背景」を複数用意して、
    ランダムで選ぶ理由はなぜですか?

    1種では何かまずい?
    Comment No.10 2008/11/11 管理人KAW sushiさんはじめまして。管理人のKAWです。

    数字のフォントと背景を複数用意し、かつランダムで選択しているのは、スパム業者の対策を防ぐ・遅らせる為にしています。

    もしスパム業者がこのプログラム対策をしてくるとして、どのような対策をとるかと考えてみると、おそらく

    ・OCR(文字認識)を使ってくる
    ・パターン認識を使ってくる(左から3ドットが黒なら8 など)

    の2種類を考えました。
    OCR対策は、自分で書いた絵を使えば良いとして、画像のパターン認識への対策はする必要があると思いました。

    相手がパターン認識を使ってきても、複数の背景、複数の文字、かつ表示位置がぶれるとなれば、かなり相手の対策を鈍らせる・遅らせる事になります。
    また、仮に完全に対策されても、背景も数字だけの文字も誰でも簡単に作れるので、いたちごっこにも強いと思われます。

    …と、そんなこんなで複数の文字・背景を使え、かつ文字位置のぶれ具合なども設定できるようになっています。
    (URLも自分で設定が可能になっています)
    Comment No.11 2008/11/14 sushi 非常に丁寧かつわかりやすい回答をありがとうございます!

    実用的で応用が利くプログラムなのでいずれ使わさせて
    いただきます。
    Comment No.12 2009/01/15 狂四朗 こんにちは。

    表示画像のサイズを変更すると画像が表示されない。
    デフォルトの設定のままだと画像は表示されるのですが、設定項目の「出力画像の横幅を設定」などの項目を書き換えると画像が表示されない。なぜなんだろ・・・・・。
    Comment No.13 2009/01/15 管理人KAW 狂四朗さんはじめまして。管理人のKAWです。

    コードが表示されない設定になるのを防ぐために、出力画像のサイズ設定値が、生成される文字コード列のサイズよりも小さい場合には画像が表示されないようになってあります。

    安全機構として入れてありますが、それを解除するにはgrp.phpの127行から139行までを消すかコメントアウトすればOKです。

    (※[出力画像の横幅がコードが表示される領域よりも小さい場合には終了]

    ※[出力画像の縦幅がコードが表示される領域よりも小さい場合には終了]の二つ)

    ということで、通常では、表示される文字総数のサイズよりも、出力画像サイズが小さいと表示できないようになっております。

    ちなみに、見た目を小さく(大きく)するだけの場合は、htmlのgrp.phpを出力するimgタグの、widthとheightを設定するだけでも可能です。

    というような感です。
    Comment No.14 2011/04/20 べっく 管理人様、はじめまして。

    自身サイトのスパム対策として画像認証システムを探しており、当プログラムを拝見させて頂きました。大変便利で分かりやすく、コメント機能に実装させて頂こうと思い、書き込みいたしました。

    これからもサイト運営の方、頑張って下さい。
    Comment No.15 2011/04/21 管理人MOSSAN(KAW) べっくさん こんにちは。
    管理人のMOSSAN(KAW)です。

    ご感想ありがとうございます!べっくさんのサイト運営もがんばってください!
    Comment No.16 2012/02/08 こー あまりWEBに明るくないのですが、これって特定のページにリンクする前に挟むって言うことなのでしょうか。
    その場合飛び先のページを制限しておかなくてはいけないと思うのですが…
    Comment No.17 2012/02/09 管理人MOSSAN(KAW) こーさんこんにちは。管理人のMOSSAN(KAW)です。

    飛び先のページを制限するというよりは、飛び先のページが入力された内容をチェックし、その結果により処理(コメントの場合書き込み など)を行うかどうかを判断するという形になっております。

    流れを記載しますと、

    サーバーが答えの数値を記憶、数値入力欄を表示
     ↓
    ユーザーが数値入力し、送信ボタンを押す
     ↓
    チェックページヘ。サーバーが記憶した数値と、入力された数値があっているかをチェック。
     ↓
    合っている場合、処理(コメント書き込みなど)を実行

    といった形になっております。

    実際の処理に関しましては、サンプルプログラム内のコメントなどを御覧いただけますと、その流れがわかりやすいかと思われます。

    といった感じでございますです。
    Comment No.18 2012/02/09 こー お返事ありがとうございます。
    phpのコードを見ました。何とかなりそうです!
    Name:お名前

    HomePageURL:ホームページ(あれば)
    http://
    Comment:コメント本文


Warning: PDO::query() [pdo.query]: SQLSTATE[HY000]: General error: 5 database is locked in /home/tomd/www/includebox/style003/in_mainengine.php on line 804