Webサイトに「お問い合わせ」メールアドレスをリストし、スパムの可能性を減らす良い方法は何ですか?
メールアドレスを画像に入れるのが最良の手法ですか、それとも他にありますか?
Webサイトに「お問い合わせ」メールアドレスをリストし、スパムの可能性を減らす良い方法は何ですか?
メールアドレスを画像に入れるのが最良の手法ですか、それとも他にありますか?
回答:
すべての連絡先フォームを使い捨てのGmailアカウントに渡します。Gmailアカウントは、メールを実際のメールアドレスに転送します。無料で簡単、Gmailのスパム検出は最高です。
ウェブサイトを作成するときに余分な労力は必要ありません。何か問題が発生した場合は、Gmailアカウントにログインしてスパムとしてフラグを立てるだけです。
その後、Gmailの受信トレイを設定して、転送されたものを自動的にアーカイブしたり、余分なコピーをそこに残したくない場合は削除したりすることができます。
メール難読化ツールを使用する
私の答えはこれをしないことです。GMailやBarracudaスパム対策アプライアンスなどの最新の電子メールシステムは、スパムをフィルタリングする優れた機能を備えています。あなたとあなたの訪問者との間に障壁を置くと、エンゲージメントのレベルが低くなり、サイトのタイプによっては潜在的な売り上げの損失を意味します。
ネイティブメールクライアントがインストールされていないユーザー、またはmailto:ハンドラーが正しく設定されていないユーザーが心配な場合は、リンクされたメールアドレスとフォーム(CAPTCHAなし)の両方を含むお問い合わせページを作成し、ユーザーに選択させてください。
迷惑メールは迷惑ですが、ユーザーではなく、私たちの負担です。
自然言語を使用してメールアドレスを入力してください...
例:
thatguy at gmail dot com
@記号を検索して通常のアドレスを正規表現するだけのボットを作成するのと、自然言語を区別できるボットを作成するのがどれほど難しいのか驚かれることでしょう。
100%確実なわけではありませんが、難読化ほど悪くはなく、視覚障害のあるユーザーやJavaScriptが無効になっているユーザーを遠ざけることはありません。
更新:この手法の実際の例を次に示します。
アップデート2:
誰かが実際にこれについて調査し、オンラインで投稿したことが判明しました。結果または元の記事を説明するSuperUserの投稿を参照してください
thatguy funny-symbol gmail.com
個人的に、私はサイトにメールアドレスを表示しませんが、代わりに使いやすい、アクセス可能なお問い合わせフォームと、メールの送信元の表示があります。ユーザーが電子メールアドレスを公開したり、さまざまなJavaScriptフープなどをジャンプしたりすることなく、サイトの所有者とオペレーターに電子メールを送信できるようにします。
スパムフィルタリングがそれほど洗練されていない場合、これは多くの場合最良の方法です。
cssを使用して、実際のテキストからノイズを隠します(すべて1行で、テクニックをわかりやすく説明するためにフォーマットしました)。
u<span class="spam">noise</span>ser
@<span class="spam">noise</span>
example<span class="spam">noise</span>
.com
そして、この小さなcss-snippetを使用します:
.spam { display: none; }
有効なmailto:
コンテンツが必要な場合は、domでjscriptを使用して作成する必要があります。他の回答を参照してください。しかし、私はそれの大きな友達ではありません。
私がしていることは、spanタグでラップされた単語としてメールアドレスを書き出すことです:<span class="email">joe dot blow at gmail dot com</span>
。次に、ページレベルのスクリプトが実行され、そのようなスパンを取得して、構築された電子メールリンクに置き換えます。それはあまりにも不明瞭ではないかもしれませんが、私は不満を持っていません。さらに、JavaScriptが無効になっている場合でも、ユーザーは実際のスパンテキストを読むことができます。
のようなHTMLエンコーディングを使用するʉẮᶗ
と、ブラウザは「abc」のようにレンダリングします
グラフィックライブラリ(PHPなどでサポートされているGDなど)を使用して、電子メールアドレスを含む.png画像を動的に作成します。
私の他の答えと比較して、このソリューションはユーザーにとっては面倒ではありませんが(透明ではありません。コピーして貼り付けることはできませんが、最初から再入力する必要があります)、安全性も低くなります。
しかし、全体的には良い妥協だと思います。大多数のスパムボットを阻止します。
完璧ではありませんが、非常に良い方法は、javascriptを介して電子メールアドレスを作成することです。電子メールを探しているほとんどのスパイダーはjavascriptを実行しないため、読み取り可能な電子メールアドレスは見つかりません。
以下は、その方法の1つの例です。
単純なPythonスクリプトを使用して、電子メールアドレスをmailtoリンクに変換します。このリンクでは、電子メールアドレスはHTMLエンティティでエンコードされています。これはユーザーには完全に透過的ですが、最も単純な収穫ボットを打ち負かすのに十分なほど内容を覆い隠すようです。
#! /usr/bin/env python3.0
def entity_encode(text):
out = ""
ba = text.encode()
for i in range(len(ba)):
out = out + "&#x{0:02x};".format (ba[i])
return out
def print_email_link(address) :
print('<!-- {0} -->'.format(address))
print('<a href="{0}{1}">{1}</a>'.format(entity_encode("mailto:"), entity_encode(address)))
print_email_link("test123@example.com")
これは出力を与えます
<!-- test123@example.com -->
<a href="mailto:test123@example.com">test123@example.com</a>
結果がWebページに貼り付けられると、ブラウザーはテキスト「test123@example.com」を「mailto:test123@example.com」へのハイパーラインとして表示するため、エンドユーザーにとってはアドレスを含めるのと同じくらい便利です。明確に。しかし、多くの収穫ボットを打ち負かすようです。
明らかに、隠された電子メールリンクをWebページのHTMLソースの適切な場所に貼り付けたら、アドレスのプレーンASCIIバージョンを使用してコメントを削除します。
ユーザーにメールアドレスを表示する前に(または連絡フォームがある場合はユーザーに送信させる前に)CAPTCHAを解決するように依頼します。
これはユーザーにとって最も面倒ですが、間違いなく最も効果的です。
私は難読化のファンで、電子メールアドレスは基本的にJavascriptで表示されます。
たとえば、次のmy@email.com
ようにレンダリングできます
<a href="javascript:location='mailto:\u006d\u0079\u0040\u0065\u006d\u0061\u0069\u006c\u002e\u0063\u006f\u006d';void 0">
<script type="text/javascript">document.write('\u006d\u0079\u0040\u0065\u006d\u0061\u0069\u006c\u002e\u0063\u006f\u006d')</script></a>
ユーザーに関する限り、通常のテキストであり、コピーして貼り付けることができます。一方、ボットはそれで苦労します。
これが私が使用した難読化ツールです。
<a href="#" onclick="document.location.href='mailto:...'; return false">
一方通行:
<script language="javascript">
<!--
var name = "user"
var host1 = "gm"
var host2 = "ail.com"
var addr =
document.write("<a href=mai" + "lto:" +
name + "@" + host1 + host2 +
">" + name + "@" + host1 + host2 + "</a>")
//-->
</script>
<noscript>
javascriptがオフになっているユーザーのタグに「私のメールを解読する:com dot gmailのユーザー」と書くことができます。これにより、ハイパーリンク機能を取得できます。スパム送信者をあなたのアドレスから遠ざける良いチャンスがあり、javascriptがオフになっている人やテキストのみのブラウザはあなたのメールアドレスを取得できます。
多くの人があなたに連絡するようになると、世界のすべての難読化技術は長期的には助けになりません。誰かがあなたにメッセージをドロップすると、後で自分の受信トレイをスキャンし、いくつかのマルウェアに感染する/何でも有効なアドレスのために/メール/アドレス帳を送信し、andyour一覧表示するには、リストから渡されるが、それを解決するためにすべてがかかっている[私も連絡先を持っています最もばかげた理由でメールアドレスとパスワードをオンラインフォームに入れるのに十分なバカな人、おそらくあなたも持っているでしょう、最近の人は誰かの「メール占星術チャートと予測」を計算することをすぐにスパムするサイトでした同じサイトへの招待状を持つ愚か者の連絡先と<deity>は、結果として現在どの他のリストに載っているのかだけを知っています]。
私の公開Webサイトのアドレスは、単なる使い捨てのアドレスではなく、使い捨てのサブドメインにあります。そのサブドメインでスパムが発生し始めたら、新しいサブドメインを作成し、連絡先の詳細がリストされているサイトを更新します。その後、DNSレコードからサブドメインを完全に削除します。これを行う場合、または他のスローアウェイアドレス手法を使用する場合は、アドレスが将来変更されること、および人々が彼らは正しいアドレスを持っていることを確認するために戻って確認する必要があります。
これには、人々がクリックする(ブラウザ+メーラーがそのようにリンクされている場合)、または後で頭脳を使用してアドレスを編集する必要なくコピー&ペーストするための単純なアドレスであるという利点があります(そうでない場合は常に驚いています賢くて観察力のある人々はそのようなことを正しくすることはできません)。また、期限切れのサブドメインで「ランダム」アドレス(aaron @、adam @、amy01 @、...)に送信されたメッセージをバウンスするメールサーバーの日数を費やさないことも意味します。また、目の不自由な人やサイトの質の低い人が使用するスクリーンリーダーを混乱させません。
まだ試したことのないもう1つのオプションは、AJAXリクエストを使用してメールアドレスやその他の詳細を読み取ることです。これは、document.write
ベースの難読化よりもわずかに効果的かもしれませんが、Webサーバーに少し余分な負荷を追加します。
以前は「contact me / us」フォームを使用していましたが、プレーンテキストの電子メールアドレスと同じくらい、時にはフォームを使用してアカウントを作成しようとするスクリプトによってスパムされることがありました。お問い合わせフォームとして使用してください。
ボットフィルター(1x1px、サブネット、既知のボット、jscript検出、httpリファラー、ブラウザーエージェントを使用)を使用している場合、ボットの場合は情報を表示できません。
PHPでのソリューション:
<?
if (!isbot()) {
echo 'mailto:'.$email_address_for_real_people;
}
else {
echo 'mailto:yourself_bot@'.$bots_domain_address;
}
?>
isbot()
あなたが持っているボットフィルタールーチンを指すユーザー作成関数です。
まさか、ホセ!-はい、ホセ!
a href="mailto:"
電子メールアドレスの収集を「停止」する方法はまったくありません。JavaScriptを使用することは、ほとんどのボットの収穫を防ぐ良い方法であると長い間信じられていましたが、今日では、ボットはこの方法を無効にするのに非常に優れています。また、decaptchaソフトウェアを使用してcaptchaを無効にするのと同じ方法で、電子メールアドレスを含む画像を無効にすることもできます。
より良い方法!
より良いアプローチは、優れたスパムブロックを提供する信頼できるメールサービスを使用することです。Google G SuiteとMicrosoft Office 365は、市場にある他のソフトウェアとは比較にならないアルゴリズムを使用しています。これは、主に1日に数百万のメールを受信し、スパマーをメールで送信しようとする前に「学習」してブラックリストに登録できるためです。
実際、Googleは 1年前に、機械学習技術がGmailのスパムとフィッシングメッセージの99.9%をブロックし、plesk / cpanelの背後で実行されているローカルのMicrosoft Exchangeとメールサーバーがこの保護に対抗できないと述べました。
概要
AI機械学習が可能な信頼できるメールサービスを使用して、スパムをブロックします。また、Cloudflareを使用してサイトにアクセスするスパマーを阻止することにより、さらに一歩踏み込むことができます。Cloudflareは、攻撃的なボットの大部分をサイトに到達する前に検出します。
私は何年もfred@no-spam.domain.comを使用しています。ユーザーは通常、「スパムなし」を削除するのに十分なことを知っています。
それ以外の場合は、「キャプチャ」を含む連絡先フォームを使用して、Webサイトから直接メールを送信します。
私がやっていることの1つは、http: //www.stopforumspam.comのAPIを使用してスパマーをチェックすることです。詳細についてはお気軽にお問い合わせください。喜んでお手伝いさせていただきます。
バドマンズ
Manz Web Designs、LLC
JavaScriptを使用してもかまわない場合は、ROT13などを使用してメールアドレスを難読化できます。たとえば、http:
//scott.yang.id.au/2003/06/obfuscate-email-address-with-javascript-rot13/をご覧ください。
個人的には、お問い合わせフォームを使用することをお勧めしますが、スパムボットについて心配する必要はありませんが、もちろんそれはすべて要件に依存します。
私が使用して、PHPの関数を実行時に出力するスクリプトをいくつかのJavaScriptを生成します。実行時にJSを生成するために PHP は必要ないことに注意してください。一度ローカルにJSを生成してから、ページに静的JSを含めることができます。
以下のスニペットでリンクされた関数を使用して、指定されたHTML($ processedContentはHTML)の電子メールアドレスを自動的に難読化することもできます。
$emailMatches = array();
$matchCount = preg_match_all('/(?:[a-zA-Z0-9_\.\-])+\@(?:(?:[a-zA-Z0-9\-])+\.)+(?:[a-zA-Z0-9]{2,4})+/', $processedContent, $emailMatches);
if($matchCount > 0) {
$emailMatches = $emailMatches[0];
foreach($emailMatches as $email) {
$replacement = createJSMailLink($email);
$processedContent = str_replace($email, createJSMailLink($email), $processedContent);
}
}
Zoho Creatorを使用して連絡先フォームを設定します。受け取ったフィードバックは、オンラインでアクセスできるデータベースに保存され、メールで送信されます。