# Pushlyクローラー

### ユーザーエージェント

すべてのクローラー要求は、以下のユーザーエージェントを使用します:

```
PushlyCrawler/1.0 (+https://documentation.pushly.com/faq/crawler)
```

サイトで運用しているボット対策、WAF、または CDN のルールでは、このユーザーエージェントを許可することをおすすめします。

### IPアドレス

Pushly クローラーは、以下の IP アドレスからトラフィックを発信します:

```
52.0.101.14
34.213.44.134
```

IP ベースの許可リストが必要な場合は、ファイアウォール / WAF の設定でこれらの IP を許可できます。

組織でより厳格な制御が必要な場合は、以下のいずれかを許可することをおすすめします:

* ユーザーエージェント `PushlyCrawler/1.0`、または
* IP `52.0.101.14` および `34.213.44.134`、または
* 最大限の信頼性を確保するために、両方

***

### クローラーの動作

Pushly クローラーは次のことを行います:

* Pushly プラットフォーム内のコンテンツ提案を支えるために、サイトから HTML コンテンツを取得します
* Pushly の設定や製品内機能に関連するページのみにアクセスします
* 公開検索エンジン向けにコンテンツをインデックスしません
* 広告ブロックを実行したり、ユーザーの広告ブロッカーを回避しようとしたりしません
* エンドユーザーのブラウザではなく、サーバーサイドの統合として動作します

クローラーを完全に停止したい場合は、ユーザーエージェントまたは `PushlyCrawler/1.0` 上記の IP をブロックできます。

***

### robots.txt の動作

このクローラーは、Pushly を使用している社内スタッフなど、認証済みの自社ユーザー向けに、ファーストパーティのプラットフォーム内機能を提供するために存在するため、 `robots.txt` をアクセス制御の仕組みとして扱いません。

* への変更は `robots.txt` クローラーを停止しません
* クローラーをブロックまたは許可するには、代わりにユーザーエージェントまたは IP ベースのルールを使用してください

この設計により、公開検索エンジン向けの広範な `Disallow: /` robots ルールが誤って社内の Pushly ワークフローを壊してしまう状況を回避できます。

***

### 許可リストの例

以下の例では、一般的なインフラ設定で Pushly クローラーを許可する方法を示します。これらのパターンは、各自の設定やセキュリティポリシーに合わせて調整してください。

#### Cloudflare（WAF カスタムルール）

ユーザーエージェントや IP に基づいて、Pushly クローラーを許可する WAF ルールを作成できます。

ルール式の例:

```
(http.user_agent contains "PushlyCrawler/1.0")
または
(ip.src in {52.0.101.14 34.213.44.134})
```

設定できるアクション:

* 一致する要求に対して、JS チャレンジやボットチェックなどのセキュリティ機能を許可またはスキップ（バイパス）する
* 必要に応じて、ルールを特定のホスト名やパスのみに適用する

#### Akamai（WAF / セキュリティ設定）

Akamai では、Pushly クローラー向けの一致条件を作成できます:

* ヘッダーで一致: `User-Agent` を含む `PushlyCrawler/1.0`
* 必要に応じて、送信元 IP が次の範囲にあることも一致条件にする:
  * `52.0.101.14`
  * `34.213.44.134`

その後:

* このトラフィックに対して、低リスクまたは許可のアクションを割り当てる
* 厳格なボットルールや JS チャレンジルールから除外する

構成や命名はセットアップごとに異なる場合があるため、正確な手順は Akamai のプロパティ設定 UI を参照してください。

#### Fastly（VCL の例）

Fastly では、カスタム VCL を使用して Pushly クローラーを識別し、許可できます。

コード例:

```vcl
if (req.http.User-Agent ~ "PushlyCrawler/1.0" ||
    client.ip == 52.0.101.14 ||
    client.ip == 34.213.44.134) {
  # ここでレート制限 / ボット対策ロジックをバイパス
  # たとえば:
  return (pass);
}
```

必要に応じて、これを特定のサービスやホスト名のみに制限することもできます。

#### Nginx（設定例）

Nginx を使用して、ユーザーエージェントや IP によって Pushly クローラーを許可できます。

例：

```nginx
map $http_user_agent $is_pushly_crawler {
    default                          0;
    "~PushlyCrawler/1\.0"           1;
}

server {
    listen 80;
    server_name example.com;

    # 必要に応じて、特定の location のみに適用
    location / {
        # IP で許可
        allow 52.0.101.14;
        allow 34.213.44.134;

        # 必要に応じて UA で許可
        if ($is_pushly_crawler) {
            set $pushly_allowed 1;
        }

        # 例: 一部の保護をバイパス
        if ($pushly_allowed) {
            # ここに独自ロジックを記述（例: レート制限をスキップ）
        }

        # 通常の設定
        try_files $uri $uri/ /index.html;
    }
}
```

既存のセキュリティおよびルーティング設定に合わせて、この構成を調整してください。

***

### トラブルシューティング

Pushly がコンテンツを取得できないと報告している場合、またはクローラーに 403 応答が返されている場合は:

1. WAF またはボット対策が以下をブロックしていないことを確認してください:
   * ユーザーエージェント: `PushlyCrawler/1.0`
   * IP: `52.0.101.14`, `34.213.44.134`
2. 以下のルールがないか確認してください:
   * JS チャレンジを強制する
   * 「不明なボット」をブロックする
   * 上記 IP の評判に基づいてチャレンジまたはブロックする
3. 以下に対する明示的な許可 / スキップ ルールを追加する:
   * ユーザーエージェント文字列、および/または
   * IP アドレス

問題が解決しない場合は、Pushly サポートに連絡し、以下を含めてください:

* 失敗している URL の例
* タイムスタンプ（タイムゾーン付き）
* クローラーの IP または UA からのブロックされた要求を示す、関連する WAF またはファイアウォールのログ
