このプロジェクトについて

web-coreはPython向けの共有ウェブインフラストラクチャパッケージであり、wet-mcp MCPサーバーおよびその他のダウンストリームアプリケーションを駆動するものとして説明されています。このパッケージは、型定義されたパブリックAPIを通じて複数のウェブ向け機能をまとめて提供します。READMEには、サイト固有のセレクタは意図的にコンシューマーアプリケーションに委ねられており、パッケージ自体は汎用的なインフラストラクチャのみを提供し、ドメインごとのクッキーやセレクタは環境変数を通じて提供されることが記されています。 READMEに記載されている機能は以下の通りです: - SearXNG検索:クロスプロセス・シングルトンランナー(ファイルロックベースで、すべてのPythonプロセスを通じて1つのインスタンスを保証)および、リトライ、結果の重複排除、ドメインフィルタリングを行うクライアント。 - マルチ戦略スクレイピング:戦略を段階的にエスカレーションさせるLangGraph状態マシンエージェント。提供される戦略モジュールには、API直接フェッチ、基本HTTP、curl-cffiによるTLSフィンガープリント偽装、Crawl4AIによるヘッドレスレンダリング、Patchrightステルスブラウザレンダリング、RenderClient経由のリモートレンダリング、およびCapSolverベースのCAPTCHA戦略が含まれます。戦略はキャッシュ推奨順に試行され、レスポンスが検証され、失敗すると自動的にエスカレーションされます(JavaScriptシェルが不十分な場合はレンダリングバックエンドへ移行)。StrategyCacheがドメインごとのパフォーマンスを追跡します。 - SSRF安全なHTTPクライアント:DNSピン留めされたhttpxクライアント、URL正規化、トラッキングパラメータの除去、およびドメイン検証ヘルパー。すべての送信HTTPは、DNSリバインディングを防ぐためにsafe_httpx_clientを経由することが意図されています。 - ブラウザおよびリモートレンダリング:BrowserProviderプロトコルに加え、Patchright(検出されないPlaywright)プロバイダー、セルフホストの/contentエンドポイント用BrowserlessClient、およびJavaScriptレンダリングをオフロードする軽量コンテナ向けのCloudflare Browser Renderingクライアントを提供します。 - robots.txt準拠:フェッチ前のドメインごとのキャッシュチェック。 - LLMセレクタ推論(オプション):組み込みのセレクタが失敗した場合、存在するAPIキー(Google Gemini, OpenAI, Anthropic, xAI)からプロバイダーが自動検出されます。キーが設定されていない場合は、推論は静かにスキップされます。カスタムのllm_callerを注入することも可能です。Geminiは、プロジェクト/ロケーション変数を通じてVertex AI経由でルーティングできます。 - 外部APIアダプタ:Google Driveのフォルダ/ファイル取得およびMangaDex(マンガ、チャプター、画像)向けの、型定義されたSSRF安全なクライアント。 インストールはPyPIからn24q02m-web-core(uv add)として行われ、v2.xの安定ラインを提供しています。設定は完全に環境変数駆動であり、すべての変数はオプションです。変数を省略するとその機能は無効になり、パッケージのインポートや使用に必須の変数はありません。ドキュメント化された変数には、SearXNGのURLと実行ユーザー、スクレイピング用のドメイン別クッキー(JSON)、およびセレクタ推論用のLLMプロバイダーキーとモデルオーバーライドが含まれます。リモートレンダリングの認証情報は、コンストラクタ引数として渡されます。 アーキテクチャはsrc/web_coreの下に整理され、階層化されたモジュールで構成されています:http(SSRF安全なプリミティブ、URLユーティリティ)、search(クライアント、モデル、ランナー)、scraper(エージェント、ベース戦略、キャッシュ、robots、セレクタ推論、状態、ユーティリティ、およびstrategiesサブパッケージ)、browsers(プロトコル、patchright、browserless、cf_rendering)、およびadapters(google_drive, mangadex)。本パッケージはPEP 561タイピングのためのpy.typedマーカーを同梱しています。強調されている設計上の決定には、SSRF保護のためのDNSピン留め、自動戦略エスカレーション、クロスプロセスSearXNGシングルトン、およびブラウザやレンダリングの実装がベースクラスを継承する必要のないProtocolベースの構造的タイピングの採用が含まれます。 開発ターゲットはPython 3.13で、uv、オプションのmiseタスクショートカット、pre-commitフック、lint/フォーマット用のruff、型チェック用のty、およびカバレッジ付きのpytestを使用しています。テストスイートは95%のカバレッジしきい値を強制し、asyncio_mode autoを使用します。テストファイルはソースモジュールの構造をミラーリングしています。プロジェクトはApache-2.0ライセンスの下で提供されています。