Webサイトの電子メールアドレスを難読化する最善の方法は?


136

過去数日間、個人のWebサイトの更新に費やしてきました。私の個人的なWebサイトのURLは(私の姓)。(私の姓).comです。私の姓はかなり変わっているため、ドメイン名を取得できたのは幸運でした。私の電子メールアドレスは(私の姓)@(私の姓).comです。ですから、それを推測することになると、それほど難しくはありません。

とにかく、私はmailto:リンクを私のウェブサイトに統合して、人々が私に連絡できるようにしたいと思っています。そして、私の電子メールアドレスは推測がそれほど難しくありませんが、電子メールアドレスのパターンを求めてWebサイトをクロールしてデータベースに追加するだけのスパムボットによって収集されることは避けたいです。

できればリンク形式で、電子メールアドレスを難読化する最善の方法は何ですか。私が知っている方法は次のとおりです。

<a href="mailto:x@y.com">e-mail me</a>

それは機能しますが、それはまた、私のウェブサイトがGoogleに到達するとすぐに、スパムボットが私の電子メールアドレスを簡単に見つけてしまうので、私はスパムを通り抜けることになります。

<img src="images/e-mail.png" />

これはあまり望ましくありません。訪問者がクリックして電子メールを送信できないだけでなく、よりスマートなスパムボットが画像に含まれる文字を検出できるようになるからです。

おそらく完璧な解決策はないことは知っていますが、私は誰もが最高だと思ったのは何なのかと思っていました。私のウェブサイトはすでに大量のJavaScriptを使用しているので、必要に応じてJavaScriptを使用したいと思っています。


10
メッセージをGmailアカウントに転送します。;-)
デイブジャービス

1
スーパーユーザーの質問を
jacktrades 2013

この投稿はここにリンクする必要があります。
クレメント

回答:


106

文字をHTMLエンティティとしてエンコードします(このようなもの)。JSを有効にする必要はなく、ほとんどのスパムが阻止されているようです。スマートボットはまだそれを取得する可能性がありますが、問題はありませんでした。


6
これは、最も単純な種類のスパムボットの収集(類似したテキストや電子メールアドレスを探す正規表現)を停止し、欠点はありません。エンドユーザーにとって、明示的なhref = mailto:xxx @ yyリンクと同じくらい便利です。
スティーブンC.スチール

5
クローラー/ハーベスターの多く(ほとんど?)は信じられないほど愚かなので、これはかなりうまくいきます。
ジャコ

43
2008年のこの実証的研究によると、URLエンコードは次に効果が低いものでした。プレーンテキストだけが悪かった。
Fuhrmanator

16
私はこれが遅いことを知っていますが、ここでの提案はURLエンコーディングとは異なるHTMLエンティティを使用することであったことを指摘する価値があります。その調査によると、@とピリオドにエンティティを使用することは、2番目に効果的な方法でした(最も効果的なのは、最初に関連付けられた3つの方法であり、すべてスパムメッセージが発生しなかった)。これが約6年後もまだ続くかどうかは興味深いことです。
ベイリーパーカー

12
皮肉なことに、あなたの電子メールを保護するために、あなたがリンクしたサイトでランダムで日陰のようなフォームにそれを入力しなければならないのです。ハニーポッティング、誰か?:)
srobinson 2015

84

個人的には、メールアドレスを隠すことをあきらめました。難読化を心配するよりも、優れたスパムフィルタリングソリューションを調べる方が簡単だと思います。あなたのアドレスを難読化するための最善の方法を見つけるために何日も費やすことができ、それからあなたのアドレスをスパマーに売るのはたった一人であり、そのすべての仕事は役に立たなかった。


スパムフィルタリングがどれほど優れていても、偽陰性(通過するはずのないメール)が発生します。最終的には電子メールアドレスと一緒に暮らす必要がありますが、この種の不必要な露出により、スパムの再発が増加するようです。
ブラッド・バーカー、

8
@ブラッド私の経験ではこれはそうではありませんでした。私はドメインでGoogleがホストするメールを使用しており、メールアドレスを見つけるのは非常に簡単です。14か月以上前に使用し始めて以来、偽陰性は1つと偽陽性は1つありました。スパムフォルダに1日に数百のスパムが届きます。
レックスM

8
ええと、私は付け加えておきます。スパムは、あなたの子供を食べることになるつまらない男ではありません。奇妙なスパムメールを受け取ることは、世界の終わりではありません。[スパムを報告]をクリックして次に進みます。
まぶたがない2009

1
@Brad:不要な場合は、アドレスをまったく教えないでください。あなたのアドレスを提供する必要がある場合は、スパムの準備をしてください。スパムボットが簡単にメールを送信できるようにすることなく、人間が簡単にメールを送信できるようにすることはできません。
チャック

1
私もメールを難読化せずに投稿しています。私はGmailを使用していますが、スパムフィルターは非常にうまく機能しているようです。
アスモール2009

68

現在受け入れられている解決策は、ユーザーがあなたに電子メールを送信できる連絡フォームを作成することです。そのサイトから大量のスパムを受け取った場合(私は自分のサイトにはありません)、ある程度のキャプチャを追加できます。その時点では、「ぶら下がっている果物」からは遠く離れています。

問題の事実は、ユーザーがクリックして[宛先:]フィールドに自分のアドレスをメールクライアントで開くことができるリンクを提供している場合、コンピューターはページからメールアドレスを解読できるため、スパムボット。


2
つまり、メールを送信するロジックは非表示のサーバー側コードで記述して、アドレスが公開されないようにする必要があります。
JoshJordan 2009

8
技術的には優れたソリューションですが、多くのユーザーにとって不快なソリューションです。言ってるだけ'。
まぶたがない2009

あなたは完全に正しいですが、私はその理由を理解していません。せいぜい、あなたがであることと同じように、Webフォームからの1を離れてクリックされている最低限の電子メールクライアントを持ちます。難しさを追加する唯一のものは、オプションのキャプチャです。ユーザーがそれを経由してあなたに連絡できない場合、そのメッセージは重要でしたか?
JoshJordan 2009

15
メッセージをCCするオプションがあるときはいつも気に入っています。お問い合わせフォームで私が気になるのは、自分のメールシステムに記録が残されないことです。(任意の電子メールアドレスをCC化するフォームでは、独自の一連の問題が発生する可能性があります。)
Sam Hasler

6
また、電子メールフォームが実際に機能したことを示すものもありません。静かに壊れたものが多すぎます。実際のメールは少なくともバウンスします。
ブライアンカーパー、

44

あなたはこれがあなたの個人的なウェブサイトのためであると述べました。私の個人用サイト(bobsomers.comなど)には、次のような段落があります。

新しいサイトが立ち上がる前に私と連絡を取る最良の方法は、私にメールを送ることです。私のメールアドレスは、このWebサイトでの私の名です。そのヒントからそれを理解できない場合、まあ、あなたは私のアドレスを理解するよりも多くの課題をメールで見つけるかもしれません。

私はいつも正当なメールを受け取っているので、人々はそれをうまく理解できるようです。最良のソリューションでは、コードを書く必要がない場合もあります。:)


7
この方法はまた、一定のレベルよりも低いIQを持つ人々をフィルター:D
パパズールー

36

reCAPTCHAは、シンプルなメール難読化サービスを提供します。アカウントを設定する必要はなく、すぐに使用を開始できます。このサービスはリンクまたはポップアップとして使用できます。

captchaが解決されると、メールアドレスがhref / mailtoとして表示され、ブラウザで動作するようにメールクライアントを設定したユーザーがクリック/フォローできるようになります。


これはすばらしいことであり、時間の99.9%で機能します。へのリンクをありがとう。ボットがブラウザを自動化している場合は失敗します。
IEnumerator

9
私は、大多数のWebユーザーが誰かにメールを送信するためだけにキャプチャを解決する努力をすることはないと思います。
AndyM 2010

7
私はこれについてアンディと一緒です。CAPTCHAは苦痛であり、reCAPTCHAは読みにくいことが多いため、平均よりもさらに大きな苦痛です。メールを送信する人がコンバージョンポイントである場合(たとえば、顧客がサービスについて問い合わせたり、注文したり、見積もりを依頼したりできるようにする)場合は、顧客ができるだけ簡単にできるようにする必要があります。
Sylverdrag 2010

8
サービスはもう存在しません。
ソリン

Google Mailhideは2018年3月31日をもって廃止されました。
ショーン

18

hrefアンカーを難読化する簡単な方法は、base64エンコードすることです。

> btoa('mailto:email@example.com')
< "bWFpbHRvOmVtYWlsQGV4YW1wbGUuY29t"

そして、それをハードコーディングして含めます:

<a href="javascript:window.location.href=atob('bWFpbHRvOmVtYWlsQGV4YW1wbGUuY29t')">E-Mail</a>

または動的にサーバー側(例:PHP):

<a href="javascript:window.location.href=atob('<?= base64_encode("mailto:email@example.com") ?>')">E-Mail</a>

文字列の復帰と組み合わせると、かなりスパムを節約できます。

<a href="javascript:window.location.href=atob('<?= base64_encode("mailto:email@example.com") ?>')" style="unicode-bidi: bidi-override; direction: rtl;"><?= strrev("email@example.com") ?></a>

14

どうやらCSSを使用してテキストの方向を変更するかなりうまくいきます。そのリンクには、他のさまざまな難読化手法のテストも含まれています。

あなたが使用するものは何であれ必然的に敗北するでしょう。主な目的は、ユーザーの煩わしさをなくすことです。


4
これはコピーと貼り付けを多分詰めますか?IIRC
アレックス

7
アドレスがコピーアンドペーストされると、後方に表示されます。できるだけ簡単に連絡できるようにしたい場合、これはユーザーの負担になります。
クリスチャンダベン2010

10

ここでは難読化の手法を使用しないでください。これはおそらく、電子メールハーベスターが人々が電子メールを難読化する方法を見つけるために最初に探す場所だからです。メールアドレスをサイトに表示する必要がある場合は、他人の方法をそのままコピーしないでください。他のサイトでは使用されていない独自の方法で難読化し、ハーベスタがサイトにアクセスする前にメソッドが知られないようにします。


8
非常に再帰的です。
ポールトンブリン

Unniloct:サムハスラーの答えは、トップの回答に関係なく適用されます。最も一般的な難読化手法を使用することにより、最も可能性の高い収穫のターゲットを使用することになります。
まぶたがない2009

トップの答えが実際には難読化を使用しないことである場合を
除き

@JoshJordan:同意、私は実際にあなたの答えに投票しました。私の要点は、人気のある難読化手法は最終的にスパマーに気づかれ、難読化を解除するコードを書くということでした。
サムハスラー

2
現在、このページは[obfuscate e-mail address]に対してgoogleから返された28番目の結果ですが、最終的には高くなると思います。
サム・ハスラー

8

GoogleがGoogle Code(およびグループ)で行うのと同じようにできます。メールの一部とクリック可能な部分( "...")を表示します。これをクリックすると、メールを知りたいことが示され、キャプチャを入力するよう求められます。その後、メール(および他の人)はあなたに表示されます。


8

私のは実際には簡単です:

<h3 id="email">hello@gmail.com</h3><!-- add a fake email -->


    $(document).ready(function(){
//my email in reverse :)
            var s = 'moc.elibomajninbew@htiek';
            var e = s.split("").reverse().join("");
            $('#email').html('<a href="mailto:'+e+'">'+e+'</a>');
    });

9
hello@gmail.comを所有する貧しい人:)
duedl0r

2
Gmailに5文字のメールはありません。
Paulo Ney 2017年

6

私はJavaScript難読化を使用しています。たとえば、これを見てください。

http://www.jottings.com/obfuscator/


2
-1:生成されたコードを確認しましたか?「リンクテキスト」にメールアドレスを含めても、実際にはメールアドレスを難読化せず、「mailto:」でその目的を偽ります。さらに悪いことに、それは基本的なコンテンツに依存してはならないJavascriptを必要とするソリューションです。
まぶたがない2009

6

私が管理している1つのWebサイトでは、(できれば)スパムボットを排除するために、やや単純化したJavaScript手段を使用しています。

メールリンクはJS関数を呼び出します。

function sendEmail(name、domain){
    location.href = 'mailto:' +名前+ '@' +ドメイン;
}

JSを有効にしているユーザーのみがリンクを表示できるようにするには、次のようにユーザーに書きます:

function writeEmailLink(realName、name、domain){
    document.write( '<a href = "javascript:sendEmail(\' '
      +名前+ '\'、\ '' +ドメイン+ '\') "> ');
    document.write(realName);
    document.write( '</a>');
}   

1つのJS関数を使用して別のJS関数を呼び出すリンクを書き出すことは、2つの保護層があることを意味します。


4

上記のポスターで述べたように、筆記サイトの JavaScript難読化も使用しています。

Webページは、改善可能なJavaScriptを生成します。mailto:テキスト文字列は、(これとunobfuscateこの文字列を見つけることができ)ロボットによるはっきりと識別できるであり、しかし、1つは、フォームのjottings.com Webページ、電子メールアドレスに入る場合にはmailto:addr@site.tld代わりにaddr@site.tldにテキストの入力すると、テキストが削除されます。mailto:生成されたJavaScriptから、突然、電子メールとはまったく関係がないように見えるJavaScriptがいくつかあります-WebがいっぱいのランダムなJavaScriptだけです。リンクテキストを削除することで、これをさらに改善できます。私は、かなりあいまいなフォントのメールアドレスの画像に置き換えました。次に、jottings.comのこのメソッドが人気になるように、出力JavaScriptの変数名をランダム化して、ロボットがjottingsによって生成されたJavaScriptコードのインスタンスを見つけにくくしました。

明らかに、これらの改善のいくつかは、書き込み自体のメカニズムに組み込むことができ、コードはオープンに利用できるため、これは比較的簡単です。

例では、これをもう少し明確にすることができます。上記のリンクにあるJottings Obfuscatorを使用して、「Send Me Email」というテキストを付けてあいまいにしましたmailto:foo@bar.com(私がのmailto:foo@bar.com代わりに文字列を入力して、Jottings Webサイトの元の意図を騙していることに注意してくださいfoo@bar.com)。

<script type="text/javascript" language="javascript">
<!--
// Email obfuscator script 2.1 by Tim Williams, University of Arizona
// Random encryption key feature by Andrew Moulden, Site Engineering Ltd
// This code is freeware provided these four comment lines remain intact
// A wizard to generate this code is at http://www.jottings.com/obfuscator/
{ coded = "3A1OTJ:rJJ@VAK.GJ3"
  key = "J0K94NR2SXLupIGqVwt8EZlhznemfaPjs7QvTB6iOyWYo3rAk5FHMdxCg1cDbU"
  shift=coded.length
  link=""
  for (i=0; i<coded.length; i++) {
    if (key.indexOf(coded.charAt(i))==-1) {
      ltr = coded.charAt(i)
      link += (ltr)
    }
    else { 
      ltr = (key.indexOf(coded.charAt(i))-shift+key.length) % key.length
      link += (key.charAt(ltr))
    }
  }
document.write("<a href='mailto:"+link+"'>Send Me Email</a>")
}
//-->
</script><noscript>Sorry, you need Javascript on to email me.</noscript>

それが返ってきたら、エディターに貼り付けて、

  1. を削除 mailto:
  2. リンクテキストをメールアドレスの画像へのポインターに置き換えます
  3. すべての変数の名前を変更する
  4. 「noscript」セクションをメールアドレス画像への別のリンクに置き換えます

私はこれで終わります:

<script type="text/javascript" language="javascript">
<!--
// Email obfuscator script 2.1 by Tim Williams, University of Arizona
// Random encryption kkeoy feature by Andrew Moulden, Site Engineering Ltd
// This kudzu is freeware provided these four comment lines remain intact
// A wizard to generate this kudzu is at http://www.jottings.com/obfuscator/
{ kudzu = "3A1OTJ:rJJ@VAK.GJ3"
  kkeoy = "J0K94NR2SXLupIGqVwt8EZlhznemfaPjs7QvTB6iOyWYo3rAk5FHMdxCg1cDbU"
  shift=kudzu.length
  klonk=""
  for (variter=0; variter<kudzu.length; variter++) {
    if (kkeoy.indexOf(kudzu.charAt(variter))==-1) {
      lutu = kudzu.charAt(variter)
      klonk += (lutu)
    }
    else {
      lutu = (kkeoy.indexOf(kudzu.charAt(variter))-shift+kkeoy.length) % kkeoy.length
      klonk += (kkeoy.charAt(lutu))
    }
  }
document.write("<a href='"+klonk+"'><img src='contactaddressimage.png' alt='Send Me Email' border='0' height='62' width='240'></a>")
}
//-->
</script>
<noscript>
    <img src="contactaddressimage.png" border="0" height="62" width="240">
    <font face="Arial" size="3"><br>&nbsp;</font></p>
</noscript>

3

これでうまくいくとは思いません。メールアドレスを省略せず、ページの読み込みが完了したら、AJAX呼び出しを使用してそれを読み込ませることができませんでしたか。スパムボットが変更されたHTMLを取得できるのか、それとも他のHTTPトラフィックをリッスンしてメールアドレスを取得できるのか、または初めて受信したページをスキャンするだけなのかは不明です。


AJAXメール読み込み実装の実装に費やされた時間:3日。削除する必要のないスパムに保存された時間:17分。

2

1人の男が、ページに電子メールアドレスを提示する9つの異なる方法をテストし、その結果をブログに公開しました。

彼の3つの最良の方法は次のとおりです。

  1. CSSを使用してコードの方向を変更する
  2. CSSディスプレイの使用:なし
  3. ROT13暗号化

警告-これは2年前に投稿されました。スパムボットはもっと賢くなっているかもしれません。


1

PHPを使用している場合は、それを自動的に行う無料のスクリプトを入手できます。「プライベートダディ」と呼ばれ、独自のオンラインオーディオストリーミングサービスに使用しています。たった1行のコードですぐに動作します... ここで取得できます


なぜ誰かがこれに反対票を投じたのか知りたいのですが。説明すると役に立ちます。
Yannis Dran 2014

1

別のアプローチは、JavaScriptフレームワークを使用して、データ/モデルをHTML要素にバインドすることです。AngularJSの場合、HTML要素は次のように記述されます。

<a href="mailto:{{contactEmail}}"><span>{{contactEmail}}</span></a>

補間{{data}}バインディングは、実際の電子メール値を含むスコープ変数を使用します。さらに、次のように電子メールのデコードを処理するフィルターを使用することもできます。

<a href="mailto:{{contactEmail | decode}}"><span>{{contactEmail | decode}}</span></a>

利点は、HTMLの記述方法にあります。欠点は、スクリプトのサポートが必要になることです。

ちょうど別のアプローチ。


1

JQueryを使用しますが、必要に応じてプレーンJSに簡単に移植できます。次のHTMLブロックを取得します。私が提供したこの例はtel:、電話のリンクにも使用できます。

<a class="obfuscate" 
 href="mailto:archie...trajano...net">
 archie...trajano...net
</a>
<a class="obfuscate"
 href="tel:+One FourOneSix-EightFiveSix-SixSixFiveFive">
 FourOneSix-EightFiveSix-SixSixFiveFive
</a>

JavaScriptを使用して適切なリンクに変換します。

$( "。obfuscate")。each(function(){

$(this).html($(this).html()
.replace( "..."、 "@")。replace(/\.\.\./ g、 "。")
.replace(/ One / g、 "1")
.replace(/ Two / g、 "2")
.replace(/ Three / g、 "3")
.replace(/ Four / g、 "4")
.replace(/ Five / g、 "5")
.replace(/ Six / g、 "6")
.replace(/ Seven / g、 "7")
.replace(/ Eight / g、 "8")
.replace(/ Nine / g、 "9")
.replace(/ Zero / g、 "0"))

$(this).attr( "href"、$(this).attr( "href")
.replace( "..."、 "@")。replace(/\.\.\./ g、 "。")
.replace(/ One / g、 "1")
.replace(/ Two / g、 "2")
.replace(/ Three / g、 "3")
.replace(/ Four / g、 "4")
.replace(/ Five / g、 "5")
.replace(/ Six / g、 "6")
.replace(/ Seven / g、 "7")
.replace(/ Eight / g、 "8")
.replace(/ Nine / g、 "9")
.replace(/ Zero / g、 "0"))

})

詳細はこちらhttps://trajano.net/2017/01/obfuscating-mailto-links/に文書化しました

解読/難読化アルゴリズムはかなり単純なので、どちらも書くのに負担がかかりすぎません(base64解析の必要はありません)。


1

Ajax呼び出しソリューション

最善の方法は、Webサイトにフォームを用意し、電子メールアドレスを表示しないことです。すべてのロボットは日々よりインテリジェントですが、Webサイトに電子メールアドレスを表示する必要がある場合は、ajaxコールを使用して作成できます。サーバーをクリックし、クリックすると表示されます。

HTML

<a class="obfmail" href="#" rel="info">click here to show email address</a>

または

<a class="obfmail" href="#" rel="info">
    <img src="img/click-to-show-email.jpg">
</a>

jQuery

$(document).one'click', '.obfmail', function(e) {
    e.preventDefault();
    a = $(this);
    addr = a.attr('rel');
    $.ajax({
        data: { 
            email: addr
        },
        url : "/a/getemail",
        type: "POST",
        dataType: 'json',
        success: function(data) {
            a.html(data.addr);
            a.attr('href', 'mailto:' + data.addr);
        }
    });
});

PHP

if($_POST['email']) {
    ...
    return json_encode(array(
        code     => '200',
        response => 'success',
        addr     => 'info@domain.ltd'
    ));
}

セキュリティを高めるために.on、次の.oneように変更する$(document).one('click', '.obfmail', function(e) {か、ajax呼び出しでデータに渡すPHP生成トークンを使用して、次のようなajax関数の呼び出しを1つだけ受け入れることができます。

html: <a class="obfmail" href="#" rel="info" token="w3487ghdr6rc">

jquery:

...
addr = a.attr('rel');
tkn  = a.attr('token');
$.ajax({
    data: { 
        email: addr,
        token: tkn
    }, ...

返されたメールアドレスもエンコードしたり、反転したりすることが可能です。

電話番号も問題なく機能します。


0

正直なところ、mailtoが本当に使用したいものであるかどうかを質問した場合、問題が解決されない可能性があります。たとえば、Webメールを使用するか、ブラウザに適切なメールクライアントを設定していない人の多くは、mailtoの恩恵を受けません。ユーザーの大部分で機能しない機能のためにメールアドレスを公開しています。

代わりに、フォームを使用して舞台裏で電子メールを送信することで、電子メールアドレスが非表示になり、mailtoの恩恵を受けられない悪いsapsを心配する必要がなくなります。


0

あなたのサイトで「私の電子メールアドレスは(私の名)@(私の姓).com。」であり、あなたの名と姓がかなりはっきりしている場合、それが最良のスパム保護であると思われますあなたが得るつもりです。


本格的なメールでは実際に括弧は許可されていませんか?有効なメールアドレスのようです。:p
Kzqai

1
スパムボットが受信トレイを見逃すもう1つの理由です。:-)
Dean J

0

誰かがRailsを使用している場合は、actionview-encoded_mail_togem を使用できます。(https://github.com/reed/actionview-encoded_mail_to

いくつかのオプションがあります:

:encode-このキーは文字列「javascript」または「hex」を受け入れます。「javascript」を渡すと、mailtoリンクが動的に作成およびエンコードされ、ページのDOMに評価されます。ユーザーがJavaScriptを無効にしている場合、このメソッドはページにリンクを表示しません。「hex」を渡すと、mailtoリンクを出力する前にemail_addressを16進エンコードします。

:replace_at-リンク名を指定しない場合、リンクラベルにはemail_addressが使用されます。このオプションを使用して、@記号を値として指定された文字列に置き換えることにより、email_addressを難読化できます。

:replace_dot-リンク名が指定されていない場合、email_addressがリンクラベルに使用されます。このオプションを使用して、を置き換えることにより、email_addressを難読化できます。文字列が値として指定された電子メール内。


0
<!-- Multi-Email Obfuscator  -->
<!-- step 1: &#064; = @  -->
<!-- step 2: a scrap element  -->
<!-- step 3: ROT13 encode for .com  -->
info<!-- step 1 -->&#064;<!-- step 2 --><b style="display:none">my</b>domain<!-- step 3 --><script>document.write(".pbz".replace(/[a-zA-Z]/g,function(c){return String.fromCharCode((c<="Z"?90:122)>=(c=c.charCodeAt(0)+13)?c:c-26);}));</script>


0

この解決策はどこにも言及されていませんが、私にとってはうまくいきます:

私はこれをします:

  • 偽のメールでmailtoリンクを作成します。明らかな理由でadmin@localhost.localdomainが好きです。スパマーは、このアドレスをチェックせずに使用すると、自分のボットネットをスパムする可能性があります。

  • サイファーの実際の電子メールアドレスを、無関係であるが検出可能な非表示のスパンまたは任意の要素に配置します。メールを難読化してハーベスターから隠すことは明らかです。プロジェクトの構造によっては、JSまたはセッション変数に配置することもできます。

  • これらのリンクのクリックハンドラーを1秒後に作成し、デサイファーし、正しいメールアドレスを偽のmailtoリンクに書き込んで、デフォルトを妨げないようにします。私はクローラーがmailtoリンクをクリックするとは思わないが、そうする場合、probabyは1秒も待たないが、人間はページロード後の最初の1秒間でリンクをクリックするのに非常に高速でなければならない。

これで、完全に機能しますが、難読化され、ハニーポット化され、時間保護されたmailtoリンクが作成されました。

実際のサンプルphpファイル:

<html>
<head>
<title>E-Mail Obfuscating</title>
</head>
<body>
<?php
$email = "example@email.org";
echo "<a class='emailLink' href='mailto:admin@localhost.localdomain' >Send me an e-mail!</a>"
    ."<span style='display:none' data-hash='" . base64_encode($email) . "' />";
?>
<script>
<!--
var emailLinks = document.getElementsByClassName("emailLink");
setTimeout(function() {
    for(var i=0; i <emailLinks.length; ++i){
        emailLinks[i].addEventListener("click", function(){
            let encodedEmail = this.nextSibling.getAttribute('data-hash');
            let decodedEmail = atob(encodedEmail);
            this.href = "mailto:" + decodedEmail;
            this.text = decodedEmail;
        });
    }
}, 1000);

-->
</script>
</body>
</html>

コードをお持ちください。


0

パスワードで保護されたディレクトリを指す「Contact me」リンクを作成するとどうなりますか?もちろん、アクセスするにはパスを与える必要があります。

「お問い合わせください」>••••••••••••> contact / index.html

アクセスすると、contact / index.htmlページにメール、たとえばmailtoが表示されます。


-1

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);
 }

createJSMailLink()を定義した場所はどこですか?
Stelian、2015年

-2

これをチェックてください。

「Enkoderフォーム」はあなたのメールアドレスを暗号化し、結果を自己評価JavaScriptに変換し、公開されたアドレスを探してWebをクロールするメール収集ロボットから隠します。あなたのアドレスはウェブブラウザによって正しく表示されますが、電子メール収集ロボットには事実上判読できません。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.