JavaScript
 Computer >> コンピューター >  >> プログラミング >> JavaScript

JavaScriptで不正なユーザーからメールアドレスを隠す方法

Webサイト上にメールアドレスをそのまま掲載すると、スパムボットなどの不正なユーザーに収集されてしまう恐れがあります。そこで本記事では、JavaScriptを使ってメールアドレスの一部をマスク(隠蔽)し、不正なユーザーから保護する方法を解説します。

メールアドレスを隠す基本的な考え方

すべてのメールアドレスには必ず「@」記号が含まれています。この特徴を利用して、以下の手順でメールアドレスを隠します。

  1. まずsplit()メソッドを使って、「@」を区切り文字としてメールアドレスを分割します。たとえば「batman@gmail.com」を分割すると、「batman」と「gmail.com」の2つの部分が得られます。
  2. 分割した結果を2つの部分(split1:ローカル部、split2:ドメイン部)に分けます。
  3. 次にsubstring()メソッドを使って、split1から一部の文字列を取り除き、残りの部分を「...@」でsplit2と結合します。
  4. 結合した文字列を最終的な出力として返します。この例では「bat...@gmail.com」という結果になります。

コード例

<html>
<body>
<script type="text/javascript">
   newEmail = function (email) {
      var split = email.split("@");
      var split1 = split[0];
      var avg = split1.length / 2;
      split1 = split1.substring(0, (split1.length - avg));
      split2 = split[1];
      return split1 + "...@" + split2;
   };
   document.write(newEmail("batman@gmail.com"));
</script>
</body>
</html>

実行結果

bat...@gmail.com

コードの解説

このコードでは、まずemail.split("@")によってメールアドレスをローカル部とドメイン部に分離しています。次に、ローカル部の文字数の半分(avg)を計算し、substring(0, length - avg)で前半部分だけを抽出することで、ユーザー名の後半を隠しています。

最後に、隠したことを示す「...@」を間に挟んでドメイン部と連結すれば、「bat...@gmail.com」のように一見すると元のアドレスが特定できない形式で表示できます。

この手法は、スクレイピングボットによるメールアドレスの自動収集対策として手軽に導入できる一方、完全な防御策ではない点には注意が必要です。より厳格な保護が必要な場合は、画像化やCAPTCHA、サーバーサイドでの制御と組み合わせるのが効果的です。

  1. ボタンクリック時にJavaScriptでdivを非表示にする方法をわかりやすく解説

    Webページを作成していると、ボタンをクリックしたタイミングで特定の要素を表示・非表示に切り替えたい場面はよくあります。この記事では、JavaScriptのstyle.displayを使って、ボタンクリック時にdiv要素を非表示にする方法を具体的なコード例とともに解説します。基本となるdiv要素の準備まず、操作対象となる以下のようなdiv要素を用意します。<div id=showOrHide> Welcome in JavaScript </div>次に、クリックすると上記のdivが非表示になるボタンを配置します。onclick属性に関数名を指定するのがポイントです。&

  2. AndroidでIPアドレスを非表示にする方法|VPN・Tor・プロキシの使い方を徹底解説

    インターネットを語るうえで欠かせない用語の一つが「IPアドレス」です。名前は聞いたことがあっても、その仕組みまで詳しく理解する機会は意外と少ないもの。AndroidでIPアドレスを非表示にする前に、まずはIPアドレスの基本と仕組みを押さえておきましょう。 そもそもIPアドレスとは? 「IP」は「Internet Protocol(インターネットプロトコル)」の略で、ウェブ閲覧をはじめとするインターネット通信全体を支える一連の規則・プロトコルのことです。IPアドレスとは、ネットワークに接続された機器に割り当てられる固有の識別番号であり、これによってIPベースのネットワーク上で他の端末と通信でき