Skip to content
KitploitKITPLOIT
ツールエクスプロイトブログ
Log in
提出
ツールエクスプロイトブログ
提出

ハッキング、侵入テスト、サイバーセキュリティツールをあなたのセキュリティアーセナルに!

Kitploitはハッキング、サイバーセキュリティ、ペネトレーションテストのツールディレクトリです。最新のプロジェクトアップデートを見つけて、脆弱性の発見、システム分析、テストの自動化、セキュリティの強化を行いましょう。

··フィード·お問い合わせ·プライバシー·© 2026 Kitploit

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
Pyison — PythonicなAIクローラtarpit | Kitploit
ツール/GitHubGitHub/jonaslong/pyison
防御ツールスクリプトと自動化ウェブセキュリティ学習と教育クローラーアンチボット
GitHubjonaslong/pyison

Pyison

PythonicなAIクローラtarpit

リポジトリを見る
12221411ヶ月前Kitploit レビュー済み

人気

すべて見る →

コミュニティで最も使われているツールを見つけましょう。

すべてのツールを探索

ツールコレクションを閲覧

すべてのツールを見る →
共有

Pyison

PyisonはAIウェブクローラー用のタールピットです。

はじめに

  • すべてのウェブクローラーと同様に、AIボットはウェブサーバーからページを要求し、そのページのリンクをたどって他のページへ移動します。これにより、ウェブサイト全体のインデックスを構築できます。
    • ただし、他のウェブクローラーとは異なり、AIボットはいくつかの特有の問題を引き起こします。
      • サーバー管理者はrobots.txtファイルを設定できます。これはウェブクローラーにクロールすべきページとすべきでないページを指示します。
        • 一部のAIクローラーはこのファイルを無視することが確認されています。ユーザーが明示的にクロールを拒否している場合でも、これらのボットがウェブサイトのデータをLLMのトレーニングに使用することを許可すると、プライバシーと著作権の問題が生じます。
        • また、一部のクローラーはレート制限を無視します。可能な限り高速にページを要求すると、ウェブサーバーに大きな負荷がかかります。
    • ここでPyisonの登場です。他のAIクローラータールピット(Nepenthes、Iocane)と同様に、Pyisonはウェブクローラーに自分のサイト内の他のページへの無限のリンクリストを提供します。これによりクローラーを単一のサイトに閉じ込め、増え続けるリンクの海を際限なく巡回させます。
      • AIクローラーを一箇所に留めておくことで、サイト所有者がLLMに提供したくないサイトの他の部分をインデックスするのを防ぎます。
      • 同時に、これらのページには大量の無意味なテキストを含めることができます。LLMがこのテキストをモデルに取り込むと、ランダムな入力によって応答の一貫性が低下し、徐々に「毒される」可能性があります。

動機

  • LLMによるコンテンツ盗用の増加に対処するための有用なソフトウェアの作成
  • 既存のAIタールピットの問題解決:
    • マルコフ連鎖、LLM、既存の文章サンプルを使用せずにランダムテキストを生成
    • クローラーはしばしば通常のユーザーになりすますため、User-AgentヘッダーでAIボットを区別しない
    • 検出を防ぐために現実的なブログ風サイトの設計
      • さらなる設定を可能にする高度にカスタマイズ可能なフレームワークの作成
    • 既存のウェブサイトに簡単に統合できるソリューションの提供
      • リバースプロキシや特定のウェブサーバーを必須とせずサポートし、ドキュメントルート設定によるサブパス構成を提供
    • 完全なCMSや多機能ウェブサーバーではなく、小さなフットプリントで動作

技術仕様

  • このプロジェクトはPythonのHTTPServerライブラリを使用して動的ウェブサーバーを実行します
  • 文章はランダムな英単語と「ストップワード」の50/50の混合から生成されます
  • PyisonはグローバルソルトとページURLを使用してRNGをシードします。これにより、クローラーがページをリロードして「健全性チェック」を行った場合でも、前回確認したときと同じページになることが保証されます。同時に、異なるサーバーは異なるグローバルシードを使用する必要があり、すべてのPyisonサイトが同じように見えるのを防ぎます。
  • Pyisonは実際には永続的なファイルを作成しないため、無制限のページを生成することが可能です。動的ウェブサーバーであり、HTMLを生成してクライアントに送信するだけです。
  • HTMLコンテンツタグ、CSSフォーマット、画像の使用により、サイトがクローラーにとってより現実的に見えるはずです。
  • config、static、テンプレートファイルを変更することで、プログラムを書き換えずにPyisonの出力を設定することが可能です。
  • Pyisonは、クローラーがそれらのHTTPメソッドが設定されているかテストする場合に備えて、誤ったPOSTおよびPUTリクエストに対して404を返します。

はじめに

  • このプロジェクトをローカルフォルダにクローンします

  • config/config.jsonファイルの設定を変更します

    • random-seedをランダムな数値に設定します!
    • サーバーが使用するport番号を設定します
    • 詳細は設定セクションを参照してください
  • (オプションですが推奨) HTMLテンプレート、CSS、画像、robots.txtをお好みで更新します

    • このプロジェクトは、ページの見た目が異なるほど効果的です。HTMLとCSSの構造を変更することで実現できます。一部を並べ替えたりリネームしたり、完全に書き換えたりしてください。
  • (オプション) 影響を受けるボットを変更したい場合はrobots.txtを編集します

  • 以下のいずれかの方法でサーバー環境をセットアップします

  • サーバーをリバースプロキシの背後に配置します

    ローカル実行

    • nltkをインストール
      • pip install nltk
    • Pyisonを実行
      • python3 src/server.py
    • 実行中を確認
      • http://localhost:<ポート番号> をブラウザで開く

    Docker

    docker composeを使用

    • 最小限の docker-compose.yml ファイルを作成します。内容は以下の通りです。
      services:
        pyison:
          image: "ghcr.io/jonaslong/pyison:main"
          container_name: pyison
          tty: true
          ports:
            - 80:80
      
    • docker compose up
      • (オプション) -d フラグを使用してコンテナからデタッチします
    • ローカルファイルの変更を反映させるには、このリポジトリをクローンし、バインドマウントを使用してください。完全なcomposeファイルを参照してください。

    docker runを使用

    • docker run --tty --name pyison -p "127.0.0.1:80:80" --rm ghcr.io/jonaslong/pyison:main
      • (オプション) --rm フラグを削除してコンテナを永続化します

    ソースからビルド

    • リポジトリをローカルにクローン
    • docker build -t pyison:latest .
    • docker run --tty --name pyison -p "127.0.0.1:80:80" --rm pyison:latest でコンテナを実行

リバースプロキシ

このコンテンツを配信するには、リバースプロキシを使用することを強くお勧めします。ページのキャッシュとレート制限の導入によりサーバー負荷を軽減し、HTTPS経由でのコンテンツ配信や、いくつかの基本的なウェブサーバー攻撃からの保護が可能です。

考慮事項

  • これらの例はNginx Proxy Managerを使用していますが、他のリバースプロキシソフトウェアでも動作するはずです。
  • PyisonはNPMの最も厳格なSSL設定をサポートしています。
  • NPMは特別な設定なしでUser-Agent HTTPヘッダーをNPMからPyisonサーバーに渡すはずです。必要に応じてproxy_pass_header User-Agent;を使用してください。

独立したサブドメイン設定

  • UIで以下の設定を選択するか、設定ファイルに同等の設定を入力します:

    NGINXリバースプロキシインターフェース。「プロキシホストの編集」ダイアログが開いています。
    • ドメイン名: tarpit.example.com など、管理下にあるドメインまたはサブドメイン
    • スキーム: http
    • 転送ホスト名/IP: localhost、またはDockerネットワークを使用している場合はDockerコンテナ名
    • 転送ポート: docker-compose/runコマンド/config.jsonで定義されたポート(デフォルトは80)
    • Cache AssetsとBlock Common Exploitsを有効にし、Websockets Supportは有効にしない

サブパス設定

  • サブパスでPyisonを使用するには、以下のロケーション設定を使用します

    # ルートページを処理 ("example.com/tarpit")
    location /tarpit {
        proxy_pass http://localhost:80;
    }
    
    # すべてのサブページを処理 ("example.com/tarpit/a" および "example.com/tarpit/a/b")
    location /tarpit/ {
        proxy_pass http://localhost:80;
    }
    
    # 3文字のファイル拡張子を持つすべてのURLを処理 ("example.com/tarpit/style.css" および "example.com/tarpit/images/picture.jpg")
    # ~ は正規表現マッチングを示すことに注意。その直後の文字列は有効な正規表現である必要があります。
    location ~ .*\/tarpit\/.*\....$ {  
        proxy_pass http://localhost:80;
    }
    
  • UIを使用した動作する設定例:

    NGINXリバースプロキシインターフェース。「プロキシホストの編集」ダイアログが「カスタムロケーション」タブで開いています。
    • 最初のロケーションブロック/tarpitにはカスタム設定はありません。上記で定義された最初のロケーションブロックと同じように動作します。
    • 2番目のロケーションブロック/tarpit/には、上記で定義された2番目と3番目のロケーションブロックが含まれます
    • tarpitを目的のルートパスに置き換えてください。
      • /tar/pitのようなより深いルートパスを使用する場合、3番目のロケーションブロックは正規表現を使用するため、スラッシュはバックスラッシュでエスケープする必要があることに注意してください
        • 例:/tar/pitの場合、3番目のロケーションブロックでlocation ~ .*\/tar\/pit\/.*\....$が必要
    • プロキシで使用されるサブパスでPyisonのdocument-root設定を更新します(設定セクションを参照)
    • ホスト、ポート、SSLなどのさらなる設定については上記のセクションを参照してください
ツールをダウンロード