mattintosh note

どこかのエンジニアモドキの備忘録

2024-06-05: 現在ホビー関連の記事を 新しいブログ に移行しています。

はてなサービスのユーザーエージェントについて調べてみた

Cloudflare を導入したことによって JavaScript を使わないエージェントなどからのアクセスも解析できるようになったのだけどイベントを見てると見たこと無いエージェントのものがありました。

イベントを JSON としてダウンロードしたものを記載します(一部の識別情報は秘匿しています)。

{
  "action": "managed_challenge",
  "clientASNDescription": "GOOGLE-CLOUD-PLATFORM",
  "clientAsn": "396982",
  "clientCountryName": "US",
  "clientIP": "0.0.0.0",
  "clientRequestHTTPHost": "hobby.mattintosh-note.jp",
  "clientRequestHTTPMethodName": "GET",
  "clientRequestHTTPProtocol": "HTTP/1.1",
  "clientRequestPath": "/",
  "clientRequestQuery": "",
  "datetime": "2024-06-04T16:59:37Z",
  "rayName": "0000000000000000",
  "ref": "",
  "ruleId": "00000000000000000000000000000000",
  "rulesetId": "00000000000000000000000000000000",
  "source": "firewallCustom",
  "userAgent": "Hatena-Favicon/2 (https://www.hatena.ne.jp/faq/)",
  "matchIndex": 0,
  "metadata": [
    {
      "key": "ruleset_version",
      "value": "14"
    },
    {
      "key": "version",
      "value": "5"
    },
    {
      "key": "type",
      "value": "customer"
    },
    {
      "key": "js_detection",
      "value": "MISSING"
    }
  ],
  "sampleInterval": 1
}

気になったのはこれ。

Hatena-Favicon/2 (https://www.hatena.ne.jp/faq/)

調べてみるとページの Favicon を特定するエージェントだそう。他にもいくつかはてなのエージェントがあるらしい。

developer.hatena.ne.jp

はてなブログクローラーもいるらしい。タイトルやブログカードの取得に使用しているとのこと。

help.hatenablog.com

というわけで WAF の条件からこれらをマネージドチャレンジから除外する設定を追加する。

Cloudflare の式は下記の通り。(わかりやすく改行して書いても登録時に改行無しに変換されるっぽい)

(http.user_agent eq "Hatena-Favicon/2 (https://www.hatena.ne.jp/faq/)") or 
(http.user_agent eq "Hatena::Scissors/0.01") or 
(http.user_agent eq "HatenaBookmark/4.0 (Hatena::Bookmark; Analyzer)") or 
(http.user_agent eq "HatenaBookmark/0.03 (Hatena::Bookmark; master;) Furl/3.13") or 
(http.user_agent eq "HatenaBookmark/4.0") or 
(http.user_agent eq "Hatena Star UserAgent/2") or 
(http.user_agent eq "Hatena Antenna/2 (https://a.hatena.ne.jp/help; alpha)") or 
(http.user_agent eq "HatenaBlog-bot/0.02 (+https://help.hatenablog.com/entry/about-hatenablogbot)")

設定後にこれらのエージェントに対して WAF の処理がスキップされていることを確認。エージェントには AWSGCP を使っているみたい。

Cloudflare
Cloudflare