# パートナー向けウェブサイトクロール要件

パートナーとして、impact.comの規制コンプライアンス クローラーがあなたのウェブサイトへプログラム的に中断なく、かつ適切な許可のもとでアクセスしてデータを取得できるよう、User-Agent識別の設定など特定の手順を実施する必要がある場合があります。本ガイドは主にウェブサイトのアクセス管理やセキュリティ設定を担当する開発者、IT管理者、技術チームを対象としています。

#### impact.com の規制コンプライアンスボットを許可する方法

パートナーとして、あなたのウェブサイトはimpact.comの規制コンプライアンスボットによって監視され、特定のコンテンツがブランドとの契約に沿っているかどうかが確認される場合があります。監視対象のアイテムごとにサイトへの個別アクセスが必要になるため、監視対象コンテンツが多いサイトほど相応に多くのリクエストを受けます。

impact.comの規制コンプライアンスボットが制限されている場合（例：HTTP 429 – Too Many Requests または HTTP 403 – Forbidden を返す）、当社はコンテンツの確認と検証ができなくなる可能性があり、コンプライアンスの可視化に影響を与えることがあります。

**監視を中断なく行うために：**

* 提供されたUser-Agentを使用してimpact.com規制コンプライアンスボットをホワイトリスト登録してください。
* impact.com規制コンプライアンスボットからの正当なリクエストをブロックしたり、スロットル（制限）したりしないでください。
* リクエストヘッダーに含まれる署名を使用してimpact.com規制コンプライアンスボットを検証し、真正性を確認してなりすましを防止してください。
* impact.com規制コンプライアンスボットを許可および検証することで、コンテンツが正確にレビューされimpact.comシステムに反映されるよう支援できます。

#### User-Agent識別

当社のクローラーはカスタムの `User-Agent` をウェブリクエスト時に自身の識別のために使用します。これにより、パートナーであるあなたはimpact.comのコンプライアンストラフィックを他のボットやクローラーと区別できます。

ホワイトリスト登録するUser-Agent文字列（表示どおり正確に使用してください）：

```programlisting
Mozilla/5.0 (compatible;Impact.com Agent) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/129.0.0.0 Safari/537.36
```

**impact.comクローラーのリクエストを検証する**

incoming（着信）トラフィックがimpact.comクローラーからのものであることを確認するため、各リクエストにはカスタムのHMAC署名ヘッダーが含まれます：

```programlisting
X-Impact-Crawler-Signature: <hmac signature>
```

この署名により、既知のシークレットと共有アルゴリズムを使用してリクエストの認証が可能になります。これによりリクエストがimpact.comから発信され改ざんされていないことが保証されます。

<details>

<summary>署名の構築</summary>

**署名の構築**

署名は次の手順で計算されます：

* **シークレット**: `/impact/crawler/signature/`
* **署名対象のデータ**: `User-Agent`
* **HMACアルゴリズム：** `HMAC-SHA256`
* **署名の出力形式**: `16進文字列`

</details>

<details>

<summary>検証方法（擬似コード）</summary>

```programlisting
const crypto = require('crypto');

// 着信リクエストからヘッダーを抽出
const userAgent = req.headers['user-agent'];
const signature = req.headers['x-impact-crawler-signature'];

const secret = '/impact/crawler/signature/';

// 署名を再計算
const expectedSignature = crypto
  .createHmac('sha256', secret)
  .update(userAgent)
  .digest('hex');

// 署名を比較
if (signature === expectedSignature) {
  // ✅ 検証済み
} else {
  // ❌ 拒否するかレビューのためにログを記録
}
```

{% hint style="warning" %}
**警告：** リクエストで受け取った値とまったく同じ `User-Agent` 値を使用するようにしてください。トリミング、デコード、再フォーマットなどの変更は署名の不一致を招きます。
{% endhint %}

</details>

#### 規制コンプライアンス監視のためのIPホワイトリスト

継続的な規制コンプライアンス監視をサポートするため、以下のIPアドレス範囲をホワイトリスト登録してください。これによりimpact.comからのトラフィックが意図せずブロックされず、サイトの監視が中断なく実行されます。

**以下のIPレンジを許可してください：**

* 163.116.128.0/17
* 162.10.0.0/17
* 31.186.239.0/24
* 8.39.144.0/24
* 8.36.116.0/24
* 34.145.188.137
* 35.245.212.57
* 34.21.56.213
* 34.48.90.233
* 35.245.229.167
* 34.150.151.151
* 35.245.185.65
* 35.188.242.212
* 34.86.33.122
* 34.145.224.193
* 35.245.135.218
* 35.221.1.178
* 34.150.217.77

ファイアウォールやアクセスコントロールリストを更新し、以下のimpact.comのIPアドレス範囲からの着信トラフィックを許可することを推奨します。

{% hint style="info" %}
**推奨：** 規制コンプライアンス監視およびボットアクセスに関する技術的な調整や質問については、 [サポートにお問い合わせください](https://app.impact.com/secure/advertiser/support/customer-support-portal-flow.ihtml).
{% endhint %}
