web-dev-qa-db-ja.com

スパムを避けるためにWebサイトに電子メールアドレスを表示する方法は?

次のようにウェブサイトにメールを表示します

 <a href="mailto:[email protected]">Email</a>

しかし、 woorank.com を使用してWebサイトを分析しているときに次の内容を読みましたが、これを回避するにはどうすればよいですか?

悪意のあるボットは、電子メールアドレスを探してWebを盗み、プレーンテキストの電子メールアドレスはスパムされる可能性が高くなります。

52
Jack

Webサイトで電子メールを非表示にするための複数の異なる選択肢があります。通常は、HTMLエンティティバージョンの電子メールアドレス(Aziz-Salehが推奨)を使用しますが、実際のWebからdesignウェブサイト上のそのようなメールアドレスは、最もユーザーフレンドリーなことではありません。

たとえば、mailto:リンクは自動的にブラウザをトリガーして、ユーザーの選択した電子メールアプリケーションを開きますが、これを考慮してください。みんなhas専用のメールアプリケーションではありません。たとえば、私はOutlook(私はWindowsユーザーです)を使用せず、Windows Liveメールがインストールされていない限り、コンピューターはそのリンクを開くことができません。 I think Chromeログインしている場合、GMailへのリンクを開くことができますが、確認する必要があります。

最終的に、mailto:を使用することで、そもそもそのリンクを使用できないユーザーベースの一部を疎外する可能性があります。

メールフォームを使用することをお勧めします。また、PHPと次のリンクなど、JSPの言語: JSPでメールを送信 および StackOverflow

サーバーを使用して電子メールを送信することにより、電子メールの生成方法、ユーザーが入力できるデータをより厳密に制御できます。また、サーバーに生成された返信メールを送信して、メッセージを受け取りました。これは、プロセス全体を保護および制御しながら、顧客および訪問者があなたに連絡できるようにする、実証済みの実際の方法です。

TL; DR:生のmailto:リンクは、専用の電子メールプログラムを持たない人を遠ざける可能性がありますが、JSPフォームを使用する場合、連絡方法を制御できますあなたはどのような情報で(フィールドとHTML5のrequired属性を使用して特定の入力フィールドに命令することができます)そしてdo-not-reply電子メールで返信することもできます。メールアドレスを尋ねるのを忘れないでください)

22
Singular1ty

過去に、これがjavascriptで行われるのを見てきました。基本的に、javascript変数に電子メールアドレスを割り当て、これらを使用して要素の内容を変更します。また、必要に応じてフォームの方向を指すJavaScriptが無効になっているユーザーにフォールバックを提供することもできます。ここに例があります

var user = 'foo',
    domain = 'bar.com',
    element = document.getElementById('email');

    element.innerHTML = user + '@' + domain;
    //OR
    //'<a href="mailto:' + user + '@' + domain + '">Email</a>'  

このように、ボットはJavaScriptをロードしないため、電子メールアドレスを決して見ることができません。

30
JazzyP

さて、あなたは毎日異なる方法を理解することができます。これがjQueryを使用したものです。

<a class="mail" href="mailto:[email protected]">e-mail</a>

次に、jQueryでクリックを処理します。

$('a.mail').on('click', function(){
    var href = $(this).attr('href');
    $(this).attr('href', href.replace('badmail.', ''));
});

私がこれが好きな理由は、スパマーにダミーのメールドメインをスパム送信させることができるためです。独自のスパムフィルターを維持している場合、不良バケットにサンプルを収集できます。

また、このアプローチにより、動的データを使用してページを非常にきれいにレンダリングし、実際のユーザークリックを処理するためにサイト全体で一度だけJavaScriptスニペットを使用できます。

携帯電話でも動作します。

28

ソリューション1:

次のような公開されている多くのメールアドレスエンコーダーを使用できます(Googleでの最初の結果)。

http://www.wbwip.com/wbw/emailencoder.html

これにより、メールが文字エンティティ値にエンコードされます。これをデコードするには、より多くのロジックフォームスクレーパーが必要になります。

したがって、次のようなメールは[email protected]&#116;&#101;&#115;&#116;&#064;&#103;&#109;&#097;&#105;&#108;&#046;&#099;&#111;&#109;になり、mailtoでも使用できます。

ソリューション2:

オンラインの電子メールから画像へのコンバーターを使用します(再びGoogleでの最初の結果):

http://www.email2image.com/Convert-Email-to-Image.aspx

画像として作成します。他のサービスでは、次のようなAPIを介してこれを自動的に行うことができます。

https://www.mashape.com/seikan/img4me-text-to-image-service#!endpoint-Main

18
Aziz Saleh

個人的に、私はこれを思いつきました。非常に簡単で、ちょっとおかしいです。メールアドレスを表示したい場所にこのコードを投げます。

_<script>(function whatever(){var s='@',n='nabil',k='kadimi.com',e=n+s+k,l='<a href=mailto:{{[email protected]}}>{{[email protected]}}</a>'.replace(/{{.+?(}})/g,e);document.write(l)})()</script>
_

拡大

_<script>
    (function whatever() {
        var s = '@'
            , n = 'nabil'
            , k = 'kadimi.com'
            , e = n + s + k
            , l = '<a href=mailto:{{[email protected]}}>{{[email protected]}}</a>'.replace(/{{.+?(}})/g, e)
        ;
        document.write(l);
    })();
</script>
_

デモ

<script>(function whatever(){var s='@',n='nabil',k='kadimi.com',e=n+s+k,l='<a href=mailto:{{[email protected]}}>{{[email protected]}}</a>'.replace(/{{.+?(}})/g,e);document.write(l)})()</script>
5
Nabil Kadimi

Googleは実際にこのためのサービスを提供しています。自由に使用でき、かなりうまく機能します: Mail ReCaptcha

3
A. Riesbeck

http://www.wbwip.com/wbw/emailencoder.html のようなメールエンコーダーを使用しています。ソースに「a」タグの間にアドレスを入力するだけです。このようなもの

<a href="mailto:&#105;&#110;&#102;&#111;&#064;&#101;&#120;&#097;&#109;&#112;&#108;&#101;&#046;&#099;&#111;&#109;">&#105;&#110;&#102;&#111;&#064;&#101;&#120;&#097;&#109;&#112;&#108;&#101;&#046;&#099;&#111;&#109;</a>

[email protected]のエンコードです

3
AlexPrinceton

電子メールアドレスをpng形式またはgif形式の透明画像に配置し、その画像をWebページに表示します。画像がメールアドレスを表示していることを知っているのは人間の読者だけです。これにより、ボットがWebサイトでメールアドレスを見つけることができなくなります。

1
Usman

ええ、それは訪問者があなたに連絡するためにPHPフォームを使用することを意味します。それははるかに安全であり、ボットが何千回もあなたにメールを送信するのを止めます。お問い合わせフォームのチュートリアルについては、Googleをご覧ください。

チュートリアルではphpを使用するよう指示されるため、ユーザーがフォームに入力すると、フォームに入力した詳細が電子メールで送信されます。ただし、ほとんどのフォームは「Captcha」エントリのように使用され、ボットを停止します。「Are you Human?」テスト。

お役に立てれば。

1
Sam Joy

私はCloudFlareの無料メールアドレス難読化機能を使用しています:https://support.cloudflare.com/hc/en-us/ articles/200170016-What-is-Email-Address-Obfuscation-

電子メールハーベスターやその他のボットは、受信者をスパムの対象とするリストに追加する電子メールアドレスを探してインターネットを移動します。この傾向により、不要な電子メールの量が増加しています。

Web管理者は、電子メールアドレスを書き出す(つまり、help [at] cloudflare [dot] com)か、電子メールアドレスの埋め込み画像を使用することで、これを防ぐ賢い方法を考え出しました。ただし、電子メールアドレスをクリックして電子メールを自動的に送信する利便性は失われます。

Cloudflareメールアドレスの難読化を有効にすると、Webページ上のメールアドレスはボットから難読化(非表示)され、人間には見えなくなります。実際、訪問者にとってあなたのウェブサイトに目に見える変化はありません。

予期しないWebサイトの動作を防ぐため、メールアドレスは以下に表示されても難読化されません。

  • hrefタグのa属性を除く、HTMLタグ属性。
  • その他のHTMLタグ
  • 「text/html」または「application/xhtml + xml」のMIMEタイプを持たないページ

私はCloudFlareと提携していません。彼らが無料で提供しているものすべてに感謝しています。

1
Ryan