【検証】amazon.comのタイポドメイン対策：どこまでカバーしているか？

# 

## 記事を書こうとしたきっかけ

有名サイトのなりすまし対策ってどうなってるんだろうとふとした興味から、タイプミスの **「anazon.com」** にアクセスしてみたところ、見事に「amazon.com」にリダイレクトされました。
正直キリがないからこんなのやってるワケがないだろと思ってました。
この出来事がきっかけとなり、「他の打ち間違いでも同様にリダイレクトされるのか？」という疑問が湧き上がり、検証を行うことにしました。

ちなみに、有名サイトにドメインを似せて詐欺サイトに誘導することを「タイポスクワッティング」と呼ぶみたいです。

## 検証の方法

この検証を行うために、以下のようなコードを使用しました。これは、ドメイン名の一文字を変更したり追加したりすることで生成されたタイポ（打ち間違い）ドメインが、実際に「amazon.com」にリダイレクトされるかどうかをチェックするものです。

```javascript
const https = require('https');

const targetDomain = 'amazon.com';
const characters = 'abcdefghijklmnopqrstuvwxyz0123456789-';
const results = [];

function generateTypos(domain) {
  const typos = [];
  for (let i = 0; i < domain.length; i++) {
    for (let char of characters) {
      if (domain[i] !== char) {
        const typo = domain.slice(0, i) + char + domain.slice(i + 1);
        typos.push(typo);
      }
    }
  }
  return typos;
}

function checkRedirect(typo) {
  return new Promise((resolve) => {
    const options = {
      hostname: typo,
      path: '/',
      method: 'HEAD',
    };

    const req = https.request(options, (res) => {
      if (res.statusCode >= 300 && res.statusCode < 400 && res.headers.location && res.headers.location.includes(targetDomain)) {
        resolve({ typo, redirect: true });
      } else {
        resolve({ typo, redirect: false });
      }
    });

    req.on('error', () => resolve({ typo, redirect: false }));
    req.end();
  });
}

async function findRedirectingDomains() {
  const typos = generateTypos(targetDomain);
  const total = typos.length;

  for (let i = 0; i < total; i++) {
    const typo = typos[i];
    const result = await checkRedirect(typo);

    console.log(`Checked ${i + 1}/${total}: ${typo} - ${result.redirect ? 'Redirects' : 'Does not redirect'}`);

    if (result.redirect) {
      results.push(result.typo);
    }
  }

  console.log('Redirecting domains:', results);
}

findRedirectingDomains();
```

このコードを基に、さらに以下のようなバリエーションを作成し、検証を行いました。
- 文字の追加: ドメイン名に不要な文字が追加されるケース
-```「amazoon.com」や「amazonn.com」など```
- 文字の省略: ドメイン名から一部の文字が省略されるケース
-```「amzon.com」や「amazn.com」など```
- 文字の入れ替え: ドメイン名内の文字が入れ替わるケース
-```「amzaon.com」や「amazno.com」など```
- ダブルタイピング: 一部の文字が重複して入力されるケース
-```「ammaazon.com」や「amazonn.com」など```

±1文字の検証のためamazonのすべてを網羅する検証ではありません。

## 検証結果

検証の結果、以下のような多くのタイポドメインが「amazon.com」にリダイレクトされることが判明しました。

| タイポの種類 | タイポドメイン | 個数 |
|--------------|------------|-------|
| タイポグラフィの誤り | dmazon.com, mmazon.com, qmazon.com, smazon.com, wmazon.com, zmazon.com, ajazon.com, akazon.com, alazon.com, anazon.com, aoazon.com, awazon.com, azazon.com, ambzon.com, amczon.com, amezon.com, amizon.com, ammzon.com, amozon.com, ampzon.com, amqzon.com, amuzon.com, amzzon.com, amadon.com, amaeon.com, amafon.com, amahon.com, amaion.com, amamon.com, amanon.com, amaoon.com, amaqon.com, amauon.com, amavon.com, amayon.com, ama2on.com, amazcn.com, amazjn.com, amazkn.com, amazln.com, amazmn.com, amaznn.com, amazzn.com, amaz0n.com, amaz-n.com, amazoa.com, amazob.com, amazoc.com, amazoe.com, amazog.com, amazoh.com, amazoj.com, amazol.com, amazop.com, amazos.com, amazov.com |56|
| 文字の追加 | aamazon.com, damazon.com, eamazon.com, famazon.com, gamazon.com, oamazon.com, qamazon.com, ramazon.com, vamazon.com, wamazon.com, xamazon.com, 0amazon.com, 2amazon.com, 6amazon.com, aamazon.com, admazon.com, aimazon.com, ajmazon.com, akmazon.com, ammazon.com, anmazon.com, aomazon.com, aqmazon.com, armazon.com, asmazon.com, awmazon.com, aymazon.com, azmazon.com, amaazon.com, amdazon.com, ameazon.com, amiazon.com, amjazon.com, amkazon.com, amlazon.com, ammazon.com, amnazon.com, amoazon.com, ampazon.com, amqazon.com, amvazon.com, amyazon.com, amzazon.com, am-azon.com, amaazon.com, amaezon.com, amahzon.com, amaizon.com, amamzon.com, amaqzon.com, amaszon.com, amaxzon.com, amayzon.com, amazzon.com, ama-zon.com, amazaon.com, amazcon.com, amazhon.com, amazion.com, amazjon.com, amazkon.com, amazlon.com, amaznon.com, amazoon.com, amazpon.com, amazton.com, amazxon.com, amazzon.com, amaz0on.com, amaz9on.com, amazoan.com, amazobn.com, amazodn.com, amazoen.com, amazohn.com, amazoin.com, amazojn.com, amazokn.com, amazoln.com, amazomn.com, amazonn.com, amazoon.com, amazopn.com, amazorn.com, amazoun.com, amazozn.com, amazo0n.com, amazo9n.com, amazo-n.com, amazonb.com, amazonc.com, amazonf.com, amazong.com, amazonh.com, amazoni.com, amazonj.com, amazonk.com, amazonl.com, amazonm.com, amazonn.com, amazono.com, amazonp.com, amazonq.com, amazonr.com, amazont.com, amazonu.com, amazonv.com, amazonw.com, amazonx.com, amazony.com, amazon1.com, amazon2.com |112|
| 文字の省略 | amzon.com, amaon.com, amazn.com |3|
| 文字の入れ替え | maazon.com, aamzon.com, amzaon.com, amaozn.com, amazno.com |5|
| ダブルタイピング | aamazon.com, ammazon.com, amaazon.com, amazzon.com, amazoon.com, amazonn.com, aaamazon.com, ammmazon.com, amaaazon.com, amazzzon.com, aaaamazon.com |11|

一文字タイプミスに関してはキーボードのキーの周辺の文字で取得されているようにぱっと見思いますが、一文字追加のドメインが思ったよりも多いですね。また、ダブルタイピングの結果でaが4個の「aaaamazon.com」までリダイレクトされたのは少し面白かったです。アーーーマゾンでも行けるわけですね。

:::note warn
 aが5個になると詐欺サイトにつながるので試さないでください。
:::



## まとめ
ダブルタイピングと文字の追加の部分の重複4を引くとを調整すると**全部で183ドメイン**となりました。

±1文字ですがこの検証を通じて、Amazonがどれだけ多くのタイポドメインをカバーしているかが分かりました。単なる興味から始めたこの検証ですが、Amazonの顧客思いの企業努力が垣間見える結果となりました。特に、ドメイン取得料や維持費を考えると、その徹底ぶりに感心させられます。

今回の情報が読者の皆さんにとって役立つかどうかは分かりませんが、少なくとも楽しんでいただけたなら幸いです。

では、また。