Miasma: AI Webスクレイパーを終わりなき汚染ループに閉じ込めるツール
(github.com/austin-weeks)- Miasmaは、AI Webスクレイパーを無限ループに陥らせて学習データ収集を妨害するRust製サーバーツール
- Webサイトのコンテンツを大規模に収集するAI企業のトラフィックをリダイレクトし、
poison fountainから取得した汚染データと自己参照リンクを返す - 高速な処理性能と低いメモリ使用量により、サーバー資源を無駄にせず防御可能
- Nginxリバースプロキシと隠しリンクの挿入を通じて、スクレイパーを
/botsパスへ誘導し、無限循環構造を形成 - 通常の検索エンジンはrobots.txtの例外ルールで保護し、オープンソースとしてコミュニティの貢献を受け入れる
インストールと実行
- Cargoを使ってインストール可能
cargo install miasmaコマンドでインストール
- GitHub Releasesページで事前ビルド済みバイナリをダウンロード可能
- デフォルト設定で実行する場合は
miasmaコマンドだけを入力 - すべての設定オプションは
miasma --helpで確認可能
スクレイパートラップの設定方法
/botsパスをスクレイパー流入ポイントとして設定- Nginxをリバースプロキシとして使用し、
/botsパスへのリクエストをMiasmaサーバーへ転送location ~ ^/bots($|/.*)$ { proxy_pass http://localhost:9855; }/bots、/bots/、/bots/12345などすべての派生パスにマッチ
-
隠しリンクの挿入
- Webページ内に、人間の訪問者には見えないがスクレイパーは検出できる隠しリンクを追加
<a href="/bots" style="display: none;" aria-hidden="true" tabindex="1"> Amazing high quality data here! </a> display: none、aria-hidden="true"、tabindex="1"属性により、アクセシビリティツールやユーザーには非表示
- Webページ内に、人間の訪問者には見えないがスクレイパーは検出できる隠しリンクを追加
-
Miasmaの実行
/botsをリンク接頭辞として指定し、ポートと同時接続制限を設定miasma --link-prefix '/bots' -p 9855 -c 50- 最大50件の同時接続を許可し、超過リクエストにはHTTP 429レスポンスを返す
- 接続数50件時のメモリ使用量は約50〜60MBを想定
-
デプロイ後の動作
- 設定完了後にデプロイすると、スクレイパーは
/botsパスをたどって無限に汚染データページを巡回する - ログを通じてスクレイパーの反復リクエストをリアルタイムで確認可能
- 設定完了後にデプロイすると、スクレイパーは
robots.txt の設定
- 通常の検索エンジンクローラーがMiasmaにアクセスしないよう、robots.txtに例外ルールを追加する必要あり
User-agent: Googlebot User-agent: Bingbot User-agent: DuckDuckBot User-agent: Slurp User-agent: SomeOtherNiceBot Disallow: /bots Allow: /
設定オプション
- CLIオプションで詳細設定が可能
| オプション | デフォルト値 | 説明 |
|---|---|---|
port |
9999 |
サーバーがバインドするポート |
host |
localhost |
サーバーがバインドするホストアドレス |
max-in-flight |
500 |
同時に処理できる最大リクエスト数。超過時は429レスポンスを返す。メモリ使用量はこの値に比例 |
link-prefix |
/ |
自己参照リンクの接頭辞。例: /bots |
link-count |
5 |
各レスポンスページに含める自己参照リンク数 |
force-gzip |
false |
クライアントのAccept-Encodingヘッダーに関係なく常にgzip圧縮を適用。転送コスト削減に有用 |
poison-source |
https://rnsaffn.com/poison2/ |
汚染された学習データを取得するプロキシソース |
開発と貢献
- バグレポートや機能提案はGitHub Issuesを通じて提出可能
- AIが生成したコードによる貢献は自動的に拒否される
- コミュニティからの貢献を歓迎し、プロジェクトはオープンソースとして維持されている
1件のコメント
Hacker Newsの意見
誰かが電話スパマーを45分間引き止めるように、こうしたボット攪乱手法が実際に効果があるのか疑問だ
Google Searchのポリシーによれば、隠しリンクの挿入は明確な違反であり、サイト順位が下がったり検索結果から除外されたりする可能性がある
結局こうしたやり方は、ボットよりも自分のサイトに大きな被害を与えるかもしれない
YouTuberのKitbogaがAIコールセンターでスパム電話を引き止める動画のように、敵のリソースを消耗させるゲリラ的戦術と見なせる
彼らは「発信禁止リスト」と「非収益リスト」を別々に持っているようだ。後者に載るのが重要だ
人々があまりに怒ったため、Golden Telecomが自動報復電話をかけ、その会社は消えた
こういう形で効果が出ることもあるが、モデムプールのリースが必要だ
反スクレイピング、反Googleクローラー、人間中心の検索インデックスを備えたツールが生まれるなら可能性はある
公開Webサイトのコンテンツがスクレイパーに盗まれている
結局、私もこの記事を盗んだし、君も私のコメントを盗んでいるわけだ。世の中は盗人だらけだ
コンテンツはみんなに開かれているが、みんながアクセスできなくなるのは嫌だ
こんな状況が続くなら、もう共有したくなくなる
結局、人間と企業の道具を同列に置くのは誤った比較だ
昔、有料ソフトウェアを作ってコピー防止コードを入れていたが、そのたびに新しいクラックが現れた
結局、その戦いが無意味だと悟って保護コードを削除した
AIボットのクロールを防ごうとする試みも同じいたちごっこのように思える
ただ、コミュニティの動機自体が面白さと名声なので、現実的には難しいと思う
だがSNSと著作権への執着が、人々のコントロール欲求を強めてしまった
こうした手法が実際に効果があるのか気になる
たいていのスクレイパーは、すでにこうした防御を回避する技術を持っている気がする
私の経験では、こういうやり方はある程度通用する
自分が作ったゴミデータを学習したかは分からないが、せめてそう願っている
データ汚染(data poisoning)というアプローチは興味深い
モデルがWebデータを学習するとき、その中のバイアスや操作をそのまま受け継ぐ
悪意ある行為者が大規模にデータを汚染すれば、学習自体が敵対的な構造へと変わる
結局の解決策は**信頼できるデータ出所管理(provenance)**だ
こうした試みは結局、AIがより賢くなるための訓練データを提供しているようなものだ
広告ベースのコンテンツ市場は崩れる可能性が高く、その結果コンテンツ品質重視の市場へ再編される気がする
代わりに、直接ライセンス契約を結んでデータを提供するモデルが定着するはずだ
単に
style="display:none"やaria-hidden="true"属性を取り除けば、こうしたトリックは回避できるのではないかと思う誠実なスクレイパーなら、そのルールに従うべきだ
人間には見えず、ボットには追わせられる
こうしたアイデアは格好いいが、結局は中小企業(SME)により大きな被害を与えるだろう
大企業だけがさらに強くなり、小さなサイトはAI検索結果から消えていく
結局流れに従うしかなく、たまに小さな抵抗を残す程度が現実的だ
Nightshade 2.0のようなツールは、雑な注目集め用プロジェクトに見える
本当の解決策は、LLMフレンドリーなフォーマットでデータを提供することだ
単純な
display:noneトリックは賢いクローラーには通用しない関連スレッド参照
本当に興味深いのは、このプロジェクトが使っているPoison Fountainデータセットだ
rnsaffn.com/poison3には「機械知能システムに害を与えたい」という文言がある
こうしたハッカー的イデオロギーは**ロールプレイ(roleplay)**のように感じられて、共感しにくい