1 ポイント 投稿者 GN⁺ 2025-01-19 | 1件のコメント | WhatsAppで共有
  • 公開Giteaサーバー git.xeserv.usAmazonBotのリクエスト によって不安定になり、運営者はAmazonBotチームに当該ドメインをブロックリストへ追加するよう要請した
  • robots.txt で全ボットに Disallow: / を設定したもののリクエストは止まらず、公開Gitサーバーの運用 自体をやめざるを得ないかもしれない状況になった
  • AIクローラーはユーザーエージェントを変えたり、住宅用IPプロキシ を使ったりして、ブロックを困難にしている
  • nginx ingressで Amazon ユーザーエージェントに 418 を返すようブロックしたが、リクエストは別のIPから続き、約 10% には amazonbot ユーザーエージェントすらなかった
  • 結局、Giteaサーバーは再びVPNの背後へ移され、リクエスト前に プルーフ・オブ・ワーク検査 を行うリバースプロキシ Anubis が作られた

AmazonBotのリクエストとrobots.txtの限界

  • 運営者はAmazonBotの運営者に、git.xeserv.usブロック対象ドメイン一覧 に追加するよう依頼した
  • Gitサーバーをクローリングするなら、過剰なリソース消費に耐えるための ハードウェア増強費用 を支払えるよう連絡してほしいとした
  • すべてのボットを拒否する robots.txt はすでに設定していたが、実際のリクエスト遮断には不十分だった
User-agent: *
Disallow: /
  • AIクローラーボットのブロックが難しい理由もあわせて整理している
    • ボットが嘘をつく
    • ユーザーエージェントを変える
    • 住宅用IPアドレスをプロキシとして使う
    • そのほかの手段も使う

nginx ingressでの遮断とAnubis公開

  • 2025-01-17 17:50 UTCにnginx ingressの設定で ユーザーエージェント遮断 を追加した
nginx.ingress.kubernetes.io/configuration-snippet: |
  if ($http_user_agent ~* "(Amazon)" ){
    return 418;
  }
  • この設定の後もボットは毎回異なるIPからリクエストを続け、約 10%のリクエスト には amazonbot ユーザーエージェントがなかった
  • 2025-01-18 19:00 UTCにGiteaサーバーを再び VPNの背後 へ移した
  • その後、Giteaサーバーの前段でリクエストを許可する前に プルーフ・オブ・ワーク を検査するリバースプロキシの作成を開始した
  • 2025-01-18 23:50 UTCにそのプロキシは Anubis という名前で https://git.xeserv.us/ で確認できるようになった
  • 2025-03-26 14:27 UTC時点で Anubis はドキュメントサイトを持つ独立プロジェクトになっている

1件のコメント

 
GN⁺ 2025-01-19
Hacker Newsの意見
  • もう弁護士名義の書簡を送るべき時だ。Computer Fraud and Abuse Act の起訴指針を見ると、米司法省は通常、明白な攻撃ではない公開サーバーへのアクセスを「不正アクセス」とは見なさないが、その後、権限者が明確な書面による停止要請を送り、被告がそれを受領・理解した場合、その時点からは不正と見なす、とされている
    だから弁護士に「明確な cease and desist」書簡を書いてもらい、弁護士が勧める方法で書留郵便や送達人を使って Amazon に届ければよい。おそらく両方やって、メールも送るべきだろう
    その後 Amazon が止まるか見ればよく、止まらなければ刑事告訴できる。そうすれば Amazon も気にするはずだ
    https://www.justice.gov/jm/jm-9-48000-computer-fraud

    • 「Amazon が止まるか見る」というのは、そのリクエストが実際に Amazon から来ている場合に限って正しい。記事の詳細であるローテーションするユーザーエージェント、住宅用 IP、robots.txt を解釈していないような挙動を見ると、その可能性は低そうだ
      Amazon bot は既知の Amazon IP レンジから来るべきで、robots.txt を守るべきだ。Amazon のエンジニアも別コメントで確認している: https://news.ycombinator.com/item?id=42751729
      Amazon と一致するのが「AmazonBot」というユーザーエージェント文字列だけで、IP レンジや挙動が一致しないなら、Amazon に弁護士書簡を送るのはお金を燃やすようなものだ
    • 正直、こうして Hacker News のトップページに載っただけでも十分に恥ずかしいので、常識部門の誰かが、私が丁寧に送った「私の git サーバーをクロールしないでほしい」というメールを読んで返信してくれる気がする。次の火曜日までに返事がなければ、弁護士に正式な停止要請書簡を書いてもらうつもりだ
    • ロボットは robots.txt を守らなければならない」という法律が必要になってきたのだろうか?
    • ここでいう送達人(process server) が正確に何を意味するのか気になる
  • このコメントの解決策が気に入った: https://news.ycombinator.com/item?id=42727510
    サイトのどこかに人間が訪れるはずのないリンクを置き、robots.txt で禁止したうえで、どこかの IP がそのリンクを訪れたら 24 時間ブロックする方式だ。OpenAI のクローラーは特にワイルドカードを無視するというので、ワイルドカードの下に置くようにする

    • 広いアドレスレンジを使うボット活動に対処したことがあり、条件上ボットと確認できたらその IP を24 時間ブロックする似た方式を使ったことがある
      しかし関連 IP が多すぎて、トラフィックにはほとんど影響がなかった
      受信ヘッダーをかなり詳しく見ることを勧める。varnishlog はこういう用途にかなり良く、長く眺めていると全リクエストに共通する特徴を見つけられる。たとえば報告された言語と地理的位置の珍しい組み合わせ、同じ古いブラウザバージョンなどだ
    • Web クローラーは本当にうんざりする。8 年ほど前、働いていた場所で車両画像サーバーが落ちたことがあった。問題のクローラーが、業務の性質上こちらが持っていた車両画像リンクにアクセスし、しかも画像が実際には存在しないという最悪の条件が重なって、ステータスレポート画像サーバーを事実上 DoS した
      さらに悪いことに、エラーハンドラーにバグがあり、この条件が発生するとサーバープロセスが再起動し、その過程で「.NET 2.0 基準ではかなりまともだった」キャッシュ実装まで無効化された
      それで安全策としてカナリア手法を入れ始めたのを覚えている。単純なカナリアをいくつか置く方が、別の Web サーバーを追加するよりなお安かった。もちろんキャッシュの問題も直し、そのサービスに悪いリクエストが多くなりすぎると「悲鳴を上げる」仕組みも追加した
    • 自分の検索エンジン用クローラーを作ったとき、現実世界にきちんと適合するクローラーライブラリがほとんどないことに気づいた。結局、Amazon と Google のかなり複雑なネストした robots ファイルや、要求されたクールダウン期間まで守る実装を自前で作るのにかなり苦労した
      ところが当のそれらの会社のクローラーは、自分たちが作ったマニフェストをパースできていなかった
  • うちでもすべてのAI・SEO ボットで同じ挙動を見ているので勧める。robots.txt をかろうじて守る程度で、ブロックもしづらい。クロール時にはスパムのように押し寄せて負荷を大きく上げ、顧客企業のサーバーを大量に落とす
    AI クローラーがアクセスしたいなら、お行儀よくするか金を払うべきだ。そうでなければ、ほぼ普遍的なブロックが結果になるだろう

    • 解決策はグローバルなターピットだ。AI クローラーを除いて考えても筋が通る。以前実装しなければならなかったときは、半手動でアクセスログをパースし、/api に秒あたり平均 X 回以上リクエストする IP に対して iptables で -j TARPIT をかけていた
      クラウドではどう実装するのかよく分からない。まだそこで必要になったことはない
      https://gist.github.com/flaviovs/103a0dbf62c67ff371ff75fc62f...
    • 「ほぼ普遍的なブロック」をどうやるというのか分からない。それが難しいというのがまさに問題ではないのか? 可能ならもうそうしていたはずだ
    • robots.txt を「かろうじて」守るとはどういう意味なのか気になる。これは二値的なものではないのか? 一部のディレクティブは守り、他のディレクティブは無視するという意味なのか?
    • Web サイトがそのデータを大きな zip ファイルとして AI ボットに売る方法はないのだろうか? ずっと DDoS され続けるよりはましそうだ
      あるいは最低限、礼儀として夜間や混雑していない時間帯にクロールしてほしい
    • ブロックして何になる? その頃にはもうコンテンツを全部クロールし終えているだろうに
  • これが本当に Amazon だとは仮定しない。投稿者は、住宅向け IP を使い回し、ユーザーエージェント文字列も変わるリクエストを見ている。
    大企業のクローラーを装うのは、目立ちたくない人たちがよく使う手口だ。リクエストが住宅向け IP から来ているという事実は、別のことが起きているという大きな警告サインである。

    • Amazon で働いているが、ウェブクローリングを直接担当しているわけではない。
      社内で確認できた情報からすると、これが本物の Amazon である可能性は非常に低い。Amazonbot は robots.txt を守るべきであり、常に Amazon 所有の IP アドレスから来るべきだ。検証手順はこちらにある: https://developer.amazon.com/en/amazonbot
      私の知らない変な社内チームがこういうことをしていないか確認するため社内に転送はしたが、投稿者はこのトラフィックを悪意あるものと見なし、ユーザーエージェントを偽っているものとして扱うのがよい。
    • こういうものはサービスとして商用提供されている[1]。どこかに組み込まれたライブラリのせいで何億ものネットワークがバックドアのように使われ、クローラーやスクレイパーになり、利用規約のどこかにある包括的な文言によって、ユーザーを合法と違法の狭間の活動の手先にすることまで、もっともらしく合法化している。
      [1] https://brightdata.com/proxy-types/residential-proxies
    • 最近攻撃的にクローリングしている会社なら、プロキシネットワークを使っていないとは断言しにくい。
  • 最近同じ問題を経験した。自分の Forgejo インスタンスがホームサーバーの CPU を**100%**使い始めたのだが、Claude と Meta・Google の AI 仲間たちが、実質的に無限のリンクを高速で叩いていた。
    robots.txt と Caddy のユーザーエージェントベースのブロックリストである程度は減らせたが、これがどれくらい長く通用するかは分からない。
    スクレイピングの礼儀はどこへ行ったのだろうか?

    • 金のためだ。AI 企業には、可能な限り多くのデータを、可能な限り速く、手に入る場所ならどこからでも持っていく金銭的インセンティブがある。今は燃やせる現金も多すぎるので、効率的にやる必要もあまりない。
    • 複数の企業が、少なくとも当面は AI が何を食べてよいのかについてのオーバートンの窓が非常に広いというシグナルを受け取ったなら、規制が締め付けようとする前にできるだけ持っていこうとするだろう。
      さらに大きなリスクは、こうした企業の一つ、しかも「Open」を名乗る企業でさえ、経済や国家安全保障の観点から「潰すに潰せない」規模になることだ。
    • 他のあらゆる文脈での礼儀と同じことが起きたのだ。礼儀は、それを無視しても金にならない文脈でだけ存在していた。その前提が消えた瞬間、すぐに捨てられる。
    • AI クローラーを止めるのに使える、まともな robots.txt やユーザーエージェントのリストを共有してもらえないだろうか?
    • Meta、OpenAI、そしてすべての巨大テック企業が、目先の金のために最終的に私たち全員を傷つけるのだと、Hacker News の最後の一人が気づくのはいつなのだろう?
      Facebook は MySpace から友達リストをスクレイピングしやすくしていたことで有名で、自分たちが大きくなった後には、同じ行為を自分のサイトで禁止した。
      いい加減に目を覚ますべきだ。
  • これが Amazon を装った DDoS ではないと確信できるのか?
    リクエストが住宅向け IP から来ているというのは本当に怪しい。
    こうした DDoS の動機は、小さなサイトを落として Amazon の責任に見せかけ、Amazon を標的にすることかもしれない。
    本当に Amazon なら、出発点は彼らが公開しているすべての IP レンジをブロックすることだ。ただし、その範囲外からもリクエストが来ているように聞こえる。

    • grass dot io のようなウェブサイトを確認してみるべきだ。トラフィックを渡したくないので直接リンクは貼らない。
      こうしたサービスはユーザーの帯域幅に対して金を払い、それを第三者に転売するため、多くのボットトラフィックが住宅向け IPから来ているように見える。
  • 自分のサイト Pinboard も、AI クローラーと思われるものに叩かれている。この夏は中国とシンガポールの IP から始まったが、今では IP レンジでのブロックもできず、CAPTCHA に頼らざるを得ない。
    トラフィック量はサイトを即座に落とせるほどで、私のところには学習させるほど面白いテキストもなく、リンクだけだ。
    元記事の著者が、どうやって Amazon クローラーが原因だと突き止めたのか気になる。私も責任を押しつける相手を見つけたい。

  • こういうものと戦う最善の方法は、ブロックではないかもしれない。ブロックしても Amazon や他社には何の被害も与えられない。
    代わりに、ボットに明らかに有害または破壊的なコンテンツを食べさせられたらどうだろう?
    より大規模に行われ、Amazon が毒入りデータを見つけたら、それを素早く除去するために金を使わざるを得ず、ボットがそうしたデータを食べないようにしようとするだろう。
    もちろん、そういうものを自分のサイトに置きたい人はいない、というのが最大の問題だ。

    • 「有害なコンテンツ」を食べさせるという考えは、AI 企業の悪行の範囲を完全に誤解している。
      これらのスクレイパーはすでに CSAM やそれに準じるひどいものも平然と食べている。OpenAI のケニアのデータタグ付け下請け業者の一部は、これが原因で辞めた。2023 年の Time 記事だ。
      今の AI 企業はデータ品質に関心がなく、だけを見ている。彼らに被害を与えられる唯一の方法は、0 バイトを渡すことだ。
      Sam Altman が承認したことの 10 分の 1 だけでも、普通の人ならすぐに刑務所行きだろう。
    • この目的には、このタールピットが勧められているのを見たことがある。サイトがクロールされると、終わりのないディレクトリの入れ子と終わりのないゴミコンテンツを生成し、ボットを何時間もはまり込ませる。
      https://zadzmo.org/code/nepenthes/
    • 有害なコンテンツが不正確なコンテンツを意味するなら、このスレッドの別のコメントに実際にそういうことをしている人がいる: https://marcusb.org/hacks/quixotic.html
    • 億万長者企業が罰を受けずに法律を破り続けているのに、なぜ私が風に向かって小便をするようなことに責任を負わなければならないのか?
  • Amazon と他のボットが生み出した送信トラフィック超過分を補填する善意のしるしとして、AWS クレジットを少し提供してくれるとよい。とはいえ、この記事の広告収益でおそらく埋め合わせられるだろう。広告ブロックを解除すれば採算は合う。

  • Nginx でブロックする前は、Bytespider が 59%、Amazonbot が 21% で、2つを合わせると自分たちの Git サーバー全体のトラフィックの 80% を占めていた
    ClaudeBot は1か月の間に Redmine へ、ClaudeBot 以前の5年間の合計よりも多くのトラフィックを送っていた