P2P Downloader v2.3:コアアーキテクチャと接続管理
すべての有効な対象に継続してソース情報を届ける。証拠があれば試行し、成果があれば pool に残す。ダウンロード数は固定上限ではなく、空の接続も成果ではない。
記事の目次
日付:2026-10-03。これは設計仕様であり、デプロイ済み、または実ネットワークでの受け入れ検証に合格した製品ではない。 今回の全体範囲は Scheduler/Component の探索と転送の再設計、接続管理の追加、追跡可能な tracker/eD2k の既定ソースである。文書内の遅延、比率、容量は調整可能な初期ポリシーであり、実測による最適値ではない。
Markdown、JSON Schema、SQL、TOML は実装契約であり、HTML は同じ内容を確認するためのビューである。reference/model.py
これは実行可能なオフライン判断用の参考実装にすぎず、P2P Engine ではない。元の repository の変更、peer 接続の開始、announce の送信、速度測定、データ削除は行っていない。
01|今回の変更点
前版では大量のジョブをまず Store に保持し、少数ずつ探索に受け入れる方式が中心だった。本版では、すべての有効な対象を直ちに探索・分析の作業集合に追加する。ソース情報は継続的に戻り、準備できた対象から試行する。本稼働ダウンロード pool の規模は持続可能なリソース余力で決まる。 1,000 件すべてのプローブ完了を待たず、5、8、32 個といった固定転送スロットで残りの対象のソース情報取得を制限しない。
| 判断 | v2.3 の規定 |
|---|---|
| 探索資格 | すべての有効な対象が同時に参加でき、転送プールの容量とは分離する。一度に 1,000 件を取り込んでも、1,000 個の Engine や payload ファイルを先に作成しない。 |
| 半接続 | ユーザーの目的を「短命のソースプローブ」と解釈する。プロトコルのハンドシェイク/必要な metadata の取得後、証拠を保存し、解放可能な接続を解放する。意図的に TCP SYN の半開状態で止めるわけではない。 |
| 接続の並行数 |
タスク数の固定上限を撤廃する。connection_window=auto。FD、メモリ、システム負荷、相手側プロトコルのレート制限による動的バックプレッシャーは残り、socket が本当に無制限になるわけではない。
|
| 試行と本稼働転送 | どちらも伸縮可能なリソース集合であり、固定数のスロットではない。有用なデータ、安定性、コストにより昇格・降格を決める。 |
| 専用の監督機能 |
Scheduler 内に
PoolSupervisorを設け、ダウンロード、入れ替え、観察領域を継続的に監視する。接続管理は別途
P2P Connection Manager が管理する。
|
| ブロック | 狭い範囲の切断、一時的な回避、撤回可能な隔離、手動の永続ブロックを分離する。トラフィックがゼロ、または国だけを根拠に悪意を推定してはならない。 |
| 既定のソース | 追跡可能な候補と更新ポリシーを組み込む。候補は事前に検証できるが、すべてのエンドポイントを同時利用する、または安全と確認済みであることを意味しない。 |
今回は v2.2 の固定 probe/transfer スロットの考え方、単一のスケジューリングスコアによる支配、および「新しい接続コンポーネントは不要」という結論を置き換える。維持するもの Config のファイル分割、ソース tabs、Component.Downloader+Engine、SQLite を使う Store、Metrics の集中保存、段階的な書き込み、hash バケット分割、完了時の移動、死んだファイルの清掃。VPN Manager と製品の User/ログインシステムは今回もコアの対象外。
02|概要:9 個の論理コンポーネントであり、9 個のマイクロサービスではない
第 9 の論理コンポーネントとして P2P Connection Manager の追加を推奨する。 従来は Scheduler がリソース概要を読むだけでよかった。現在は Component をまたいで各接続を追跡し、証拠を分析し、誤ブロックを避け、切断とポリシーの再審査を実行する必要がある。独自の状態と契約を持つ責務であり、Metrics に埋め込んだり、Scheduler に各プロトコルの socket を直接操作させたりすべきではない。
| コンポーネント | 担当する判断と状態 | 境界 |
|---|---|---|
| P2P Web View | ダウンロードプール、ソース tabs、接続表、証拠の詳細、操作状態 | React+Vite+Tailwind、繁体字中国語、ダークテーマのみ。Engine に直接接続しない。 |
| P2P Manager | API、Component Registry、意図/Operation/ドメインイベントの入口 | Scheduler のスケジュール処理や Connection Manager の悪意判定を代行しない。 |
| P2P Config | 分割ファイルの defaults、ソース feed、schema、有効なスナップショット、設定バージョン | 候補のリモートリストに設定を直接変更する権限はない。Component は同じバージョンのスナップショットを読む。 |
| P2P Search | キーワード検索、exact resolve、ソース別の探索スケジュール | 登録済みの全対象に継続してソースを提供する。試行/本稼働転送は担当しない。 |
| P2P Scheduler | 試行、本稼働 pool、観察領域、リソース最適化、公平な入れ替え | Task のダウンロード意図を担当し、wire/piece は操作しない。Connection Manager から可用性とコストの概要を受け取る。 |
| P2P Component | プロトコル適合と実行能力 | Search Provider、Downloader、Engine、Connection Agent、Resource Reporter、Metrics Publisher を含む。Task ごとに 1 プロセスではない。 |
| P2P Store | SQLite のタスク、コンテンツ識別、スナップショット、ポリシー証拠、コマンドとファイルの journal | 書き込み owner は 1 つ。全 peer の毎秒の時系列や payload は保存しない。 |
| P2P Metrics | すべての観測サンプル、時系列、分布、監視 retention | Component はプッシュのみを行い、監視 DB や監視用 disk spool には書き込まない。Metrics の障害はダウンロードの失敗を意味しない。 |
| P2P Connection Manager | 接続インデックス、サービス資格、異常の証拠、ソースの回避、ブロック判断 | ファイアウォールや VPN は追加しない。Engine 内で具体的な操作を実行できるのは Connection Agent のみ。 |
初版は引き続き 1 つの Rust p2pd に制御/分析モジュールを含め、複数の Component host をネイティブエンジンのプロセス構成に合わせて配置することを推奨する。Connection Manager は論理的に独立してテスト可能なモジュールとし、CPU/遅延の測定から必要性が示された場合のみ別プロセスに分ける。
03|一度に 1,000 件:同時に動く 2 つの経路
経路 A は常時動作: バッチ検証と重複排除 → 全有効対象の登録 → Store の履歴/metadata → 共有ソース問い合わせ → 軽量ハンドシェイク/利用可能範囲 → 保存
SourceSnapshot → 一時接続を解放 → 候補順位を更新。
経路 B は A 全体の完了を待たない: 新鮮な証拠のある対象 → 試行集合 → 本稼働ダウンロード pool → PoolSupervisor → 維持/拡大/入れ替え/観察 → 期限到来または新規ソースイベントで試行に戻る。
最初から 1,000 件の「探索ジョブ」を同時に実行可能集合へ入れられる。非同期 I/O は、1,000×全 peer の socket を同じミリ秒に作成するという意味ではない。tracker transport、eD2k server session、Kad routing table、取得中の同一 metadata を共有する。同じ content+realm+設定バージョンのソース問い合わせは統合し、結果を複数の選択範囲で利用する。
ソース protocol の reask/announce interval は守る必要がある。BT tracker の応答には次回の通常リクエストまでの間隔が含まれる。choked
も相手が現在データを送らないことを示す。いずれも正常なプロトコルの意味であり、Scheduler が任意に短縮できる時間ではない。S2
全バッチ単位の barrier はない。 900 番目の対象が先に応答したら、先に順位付け可能な集合へ入る。1 番目がタイムアウトしても他を妨げない。入力エラーでは該当 item だけを拒否し、永続化に成功した項目には個別の task_id、結果、復旧可能な取り込み operation を持たせる。
04|「半接続を制限しない」の正確な実装方法
libtorrent では connecting を half-open と呼ぶ。handshake
は接続確立済みでプロトコルのハンドシェイク待ちの状態である。peer の bitfield/queue 情報の取得には通常、単なる TCP connect を超える処理が必要になる。S5
本仕様では probe_session を短時間のプローブとして使い、「情報だけを収集する」を TCP 半開と誤記しない。UDP tracker/DHT には専用 TCP 接続がない場合がある。接続表では論理 session と実際の socket 数を区別する。
ProbeGovernor コストだけを基準に可変ウィンドウを作り、固定の
max_probing_tasks=32:
window_headroom [個] = floor(min(FD 余力, 利用可能メモリ / プローブ当たり p95 bytes) × 負荷軽減係数)
new_dials_this_tick [個] = min(window_headroom, 今回利用可能なグローバル dial tokens, 各ソースの tokens)
tokens_added [個] = adaptive_rate [回/秒] × elapsed [秒]
ウィンドウは同時に存続する数を、token bucket は毎秒の新規開始数を制御する。両者を掛け合わせて単位を誤ってはならない。FD 余力から現在の使用数と制御チャネルの予約分を引き、同じ物理 transport は一度だけ数える。NAT state、一時 port の枯渇、event-loop lag、DNS/dial timeout の急増を Governor にフィードバックする。NAT state を観測できない場合は容量を把握したと主張せず、失敗率と保守的な増加を代用する。完了したプローブは即座にリソースを返し、明確な終了 deadline を設けて半開接続による FD 占有を防ぐ。
接続解放時に保存するもの:対象コンテンツと selection digest、ソース endpoint/識別強度、宣言された coverage、サービス/待ち行列の状態、TTFB または未取得の状態、report sequence、観測時刻、有効期限、エラー分類。速度は payload の試行でしか測れない。ハンドシェイクが速くてもダウンロードが速いとは限らない。
例外は、共有 eD2k server/Hub session、常駐が必要な DHT、切断すると有効な queue ticket を失うネイティブプロトコル。解放するのは task-local のプローブ用リソースだけとし、「プローブ後に切断」のために Component 全体のソース探索を壊してはならない。ticket の維持コストは別計上し、予算のない転送を暗黙に自動開始しない。
05|状態モデル:ジョブ、接続、ソース品質を分離
| Task の主段階 | 開始条件 | 終了条件 |
|---|---|---|
collecting 収集中 |
有効な意図が送信済み |
十分な新鮮なソース証拠があれば
rank_readyに進める。他の対象が未完了でも影響しない。
|
rank_ready 試行待ち |
コンテンツ/サービス経路が見つかり、試行が許可される | 可変の試行リソースを取得する。証拠が期限切れなら収集に戻る。 |
trial 試行 |
Downloader がネイティブサービスの開始または上限付きの待機を確認 |
利用可能で安定していれば active。サンプル不足/リモートの待ち行列/失敗なら
observing。
|
active 本稼働 pool |
有用なデータを確認済みで、リソースに余裕がある |
完了時は検証へ。ローカル負荷があれば heldへ。リモートが利用不可なら
observingへ。公平な入れ替えでは checkpoint を保持する。
|
observing 観察領域 |
現時点で高コストのリソースを長時間占有する価値がない | 新規ソースの到着、クールダウン終了、queue ticket がサービス可能になった時に再審査/試行する。 |
held 維持するもの |
ユーザーの一時停止、ローカルディスク/エンジン障害、コマンド結果不明 | 具体的な原因に応じて復旧し、ソースの失敗として記録しない。 |
finished 転送段階の終了 |
要求データをすべて取得し、ネイティブの検証規則に従って完了 | 移動/共有は placement state で別管理する。 |
observing.reason
具体的でなければならない:NO_SOURCE、MISSING_SEGMENTS、REMOTE_QUEUE、SERVICE_TIMEOUT、LOW_MARGINAL_YIELD、STALE_EVIDENCE。dead_candidate
は後続の長期ファイルライフサイクルに属し、observation の同義語ではない。
ソース品質は独立したフィールド:high / available / unknown / incomplete / low。安全性の証拠は
unknown / observed_anomaly / attributed_invalid / manual_deny。UI は「不完全・本稼働ダウンロード中・安全性不明」を正しく表示できる。高速でも安全上の隔離は解除されない。
06|ソースの完全性と優先順位
同じネイティブコンテンツ、layout、selection で評価する。ローカルの検証済み集合
V、欠損集合 M、新鮮なソースが宣言する集合 A_j:
M = selected_units − V
observed_coverage = bytes((V ∪ union(A_j)) ∩ selected_units) / bytes(selected_units)
missing_supply = bytes(union(A_j) ∩ M) / bytes(M)
欠損単位がなければ完了検証に進み、seed の探索は続けない。相互補完する部分ソースだけでも完了可能である。全ソースが末尾ピースを欠くなら、ソースが多くても依然として
incompleteとなる。ネイティブ bitfield のないプロトコルでは
unknownを保持し、フィールドがないことを理由に有効なダウンロードを禁じない。
優先順位 0..999は小さい値ほど優先する。ただし先にユーザー意図、ポリシー、重複排除、ネイティブ retry floor、リソース資格を確認する。順位付けの特徴量は、新鮮な供給可能範囲、希少ピースの価値、有効速度の分位数、安定性、TTFB、接続/I/O コスト、過去のサービス資格がある時の成功率、待機の不足分、完了間近の利益、再待機コストを含む。国や peer ID の数値の大小を速度/安全性スコアに使わない。
順位付けはサービス保証の代わりにはならない。未知のジョブには探索不足分を持たせ、低速でも希少ピースを唯一保持するソースには rescue 予算を与える。手動の重み付けでブロック、ディスク満杯、不明な実行状態を越えてはならない。
07|Trial Controller:接続しただけでは昇格しない
試行では本当に必要なデータだけを取得し、サンプルを継続利用する。速度測定用の不要データはダウンロードしない。初期 bytes/時間制限はリソースウィンドウにすぎない。検証単位を取得し終える前に
verification_pending を hash failure と呼んではならない。
trial の時間を wall-clock と qualified-service-clock に分ける。リモートの queue/choke、ローカルの速度制限、ディスクの阻害、report gap は「相手がサービスを約束したのに送らなかった」時間に含めない。ネイティブサービスを得てから TTFB、連続ウィンドウ、重複のない payload を評価する。
本稼働 pool への昇格に必要な条件:
少なくとも 3 つの有効な観測ウィンドウ、欠損している unique bytes の実際の増加、許容範囲のエラー/重複率、現在安全上の隔離がないこと、そのプロトコルとホストの有効容量に対して追加利益が試行コストを上回ること。min_qualified_ms=15000、1 ウィンドウ 5 秒、CV≤0.75 は調整の出発点であり、普遍的な成功の法則ではない。
大きなファイルの低速転送/長い RTT を、固定 MiB/s に届かないだけで除外しない。遅くても安定したサービスなら fair/rescue の昇格経路を使える。試行中に完了する小さなファイルは 3 ウィンドウを無理に満たさず直接検証へ進む。検証単位がウィンドウを超える場合は発行済み byte budget を延長するか、 inconclusiveへ戻す。予算を超えてはならない。
08|可変ダウンロードプール:タスク数は目標ではなく結果
PoolSupervisor がリアルタイムのリソース概要を収集し、CapacityController
が全体を調整し、FairRotator が具体的な候補と譲る対象を決める。3 つとも Scheduler 内部のモジュールであり、Engine と制御権を争う別の piece scheduler を作るのではない。
目標は 持続可能な有効スループットの最大化であり、制御、検証、ディスク書き込み、操作の余力を確保する。94% は調整可能な目標であり、ネットワーク、CPU、ディスクを同時に 100% にする保証ではない。いずれかが先にボトルネックになり、他が満杯でないのは妥当な結果である。
| 観測 | 制御操作 | 禁止する動作 |
|---|---|---|
| 5 件のダウンロードが既知の帯域の半分だけを使用し、I/O/CPU は正常で候補がある | まず稼働中のソースで request/peer を増やせるか確認する。不足する場合は自動で試行を追加し、昇格後に pool が自然に拡大する | 「最大 5 件」を理由に追加を止めること。 |
| ネットワークは未飽和だが、ディスク backlog が増え続け、書き込み遅延が上昇 | 新しい転送 grant を減らし、利益の低いジョブを drain し、検証と flush を維持する | ゼロ速度をソースのせいにしてブラックリストに入れること。 |
| ネットワークが目標に近く、backlog が安定 | 利益の高い incumbent を保持し、少量の探索と候補による挑戦を行う | 接続数を増やすために安定性を損なうこと。 |
| ジョブを追加しても有効速度は改善せずコストが増える | 直近の拡大を戻し、限界利益の低いジョブを候補との比較で入れ替える | 無制限に追加する、または pool 全体を同時に停止・再起動すること。 |
| ネットワーク容量が不明 | 有用なデータとコストに基づいて段階的に試し、UI に推定/不明と表示する | 1 Gbit/s NIC を根拠に利用可能な Internet 帯域を断言すること。 |
| report が期限切れ | 積極的な拡大を止め、ネイティブの安全なリソース制御を維持して再同期する | サンプルの欠落を 0 B/s や空きリソースとして扱うこと。 |
| 有効なソースがこれ以上ない | 記録する: SOURCE_LIMITED。観察/retry を維持する |
必ず帯域を使い切ると保証する、または無関係なトラフィックを送って帯域を埋めること。 |
net_utilization 同じボトルネック領域、同じ byte 層のカウンターを使う。unique_goodput
は重複/不要データを除いた利益であり、NIC の回線速度と同じ分母に混在させてはならない。ダウンロード、アップロード、制御/DNS overhead、他プロセスのトラフィック、shared device I/O は別計上する。
ディスク/ファイルシステムごとに独立した pressure domain を持つ。遅い HDD はそこへ書き込むジョブだけを制限し、別の空いている SSD まで停止しない。Linux PSI は CPU、メモリ、I/O stall の信号を提供できるが、ネットワーク容量やディスクスループットの完全な測定ではない。S14
09|制御アルゴリズム、振動、公平性
生サンプルは約 1 秒、判断は約 10 秒ごと。変更後は少なくとも 30 秒またはネイティブ起動コストの大きい方を待って成否を判定する。緊急保護イベントはこの周期を待たなくてよい。スループットには直近 10~30 秒の robust EWMA/中央値を、遅延とメモリコストには p95 を使う。
もし local_pressure >= 1:限界利益が低く譲れるジョブを drain し、積極的な拡大を停止
そうでなく、データが新鮮でない、または前回の拡大が安定していない:hold
そうでなく、network < 目標の 90% かつ local_pressure < 0.70:trial のリソース予算を増やす
そうでなく、ジョブ追加後に連続 2 ウィンドウで正の限界利益がない:ロールバック/候補を入れ替え
それ以外:本稼働 pool を維持し、少量の探索、不足分の返済、希少ピース救済を継続
増加幅は現在負担可能な population の 25%、減少幅は 15% を初期推定とする。実際の受け入れでは引き続き resource-vector ledger を 1 件ずつ確認する。一度に変える主因は最大 1 つ(task population/ジョブごとの peer credit/request window)とし、ボトルネックを識別できるようにする。次を ceil(active×1.25) 常に正しいダウンロード数として扱わない。
入れ替えは incumbent/challenger 方式とする。同条件で候補の推定効用が少なくとも 15% 高い、または不足分の補填期限が来た場合に行う。通常の minimum residence は 120 秒、各ラウンドは population の約 5% まで。Component の起動/待ち行列コストに応じて緩和できる。明確な無効性、プロトコル破壊、ユーザー取消は即時処理できる。
effective service debt を保持する。休眠/速度制限された時間はサービス提供済みと同じではない。リモートの queue ticket はダウンロード資格ではないが保持する価値がある。共有/アップロードもリソースを消費するため、アップロード、ディスク読み取り、並行数の ledger に計上し、ダウンロード RX だけを保護しない。
10|Connection Manager:すべての接続を説明可能に
内部モジュール:ConnectionRegistry →
ProtocolStateNormalizer → ServiceEligibility →
EvidenceAnalyzer → PolicyResolver →
CommandOutbox。ほかに
ReputationLedger と期限到来時の再審査がある。登録済み Component/Collector からの報告だけを受け入れ、peer の自己申告統計をローカル測定として扱わない。
| フィールド群 | 必要なデータ | 意味 |
|---|---|---|
| 一意な識別情報 | connection_id、component_id、run_id、native_connection_key、transport_handle_id | 同じ endpoint への再接続には新しい connection_id、プロセス再起動には新しい run_id を与え、遅れて届いた切断コマンドが新しい接続を害するのを防ぐ。 |
| 関連付け | realm、protocol、roles、task_ids、source/tracker/server の来歴 | 1 つの transport を複数の論理ジョブに関連付けられるが、実際の FD は一度だけ数える。 |
| endpoint/識別情報 | IP+port または overlay Destination、peer_id/user_hash、身元証明の強度 | BT peer ID と eD2k user hash だけで、信頼できる人間/デバイスの識別情報になるわけではない。 |
| サービス可能条件 | handshake、remote_choked、interest、remote_queue_rank、slot_granted、未完了リクエスト、recv credit | can_serve_now ネイティブプロトコルに従って計算する。不明は false ではない。 |
| データ品質 | payload/unique/duplicate/discarded/verified bytes、hash 失敗の帰属 | keepalive には bytes があるがファイルの進捗ではない。hash 検証が未完了でも破損データとは限らない。 |
| 性能 | TTFB、request latency p50/p95、RTT 測定方法、goodput ウィンドウ、資格条件下の stall 時間 | 各測定方法/時間ウィンドウを明記し、connect RTT を継続的な RTT と混同しない。 |
| ローカルの干渉 | ローカルの速度制限、disk backlog、hash キュー、メモリ/event loop、報告の欠落 | 誤判定の排除に使う。「ネットワークが未飽和」を理由にディスク混雑を否定しない。 |
| 地理/ネットワーク | 国、ASN、データベースのバージョン、観測からの経過時間、不明の理由 | ローカルでオフライン照会し、全 peer IP を第三者に送らない。国をリスク加点に使わない。 |
libtorrent peer_info のネイティブ API には pieces、payload speeds、ディスク書き込み待ち bytes、request timeout、choke/snubbed などの情報がある。qBittorrent WebAPI が同じ詳細を公開するかは別途テストが必要。下層にフィールドがあるだけで adapter から取得可能とは主張しない。S5
10.1 接続 ID の「レベル」は 3 つの次元に分ける
connection_id はローカルの追跡 key、peer_id/user_hash
は相手側のプロトコル上の識別情報、High ID/Low ID は eD2k の到達可能性情報。これらは同じ種類のレベルではない。eMule 公式文書では High ID/Low ID はサーバーによる着信到達性の判定に基づき、ID の数値が大きいほど優れたレベルになるわけではないと説明されている。S18
設計では
reachability_class=direct/callback_needed/unknown、観測 server/時刻、callback 結果、ネイティブ ID の種類を保存する。callback を必要とするソースには追加コストがあり得るが、それだけで不完全または悪意ありと判定しない。スケジュールは必要なデータを実際に取得できるかに基づく。国/ASN は分布と診断にのみ用い、国の許可・拒否リストや安全性の百分率は作らない。
11|ゼロトラフィック:サービス資格を満たしてから不履行を数える
まず接続の役割を分類する:payload_peer / tracker / ed2k_server / dht_session / hub / metadata /
provider / upload_only。tracker と eD2k server は情報/索引を提供し、ファイル payload は転送しないため、ダウンロードトラフィックの閾値を適用しない。eMule 公式説明も server をファイルとソースの索引入口と定義している。S11
資格条件下の無応答タイマー qualified_idle_ms 以下をすべて満たす間だけ加算する:
payload の役割 + こちらが欠損し相手が供給可能と宣言した範囲がある
+ ハンドシェイク完了 + 相手のネイティブ状態がサービスを許可(choked/待ち行列ではない)
+ 実際に未完了の request を送信済み + recv/write credit 発行済み
+ 既知のローカルボトルネックなし + ネットワーク領域の共通障害なし + 新鮮な報告
有効な unique progress ごとにタイマーをリセットする。プロトコルの keepalive ではリセットしない。資格時間の停止中に wall-clock を加算しない。期限超過の request に上限付き取消/retry を行い、繰り返し失敗するなら
disconnect + temporary avoidとし、証拠を保存する。実際の request がない、相手が正当な待ち行列にいる、欠損範囲に共通部分がない場合は、不要な接続を解放するにとどめ、悪意の strike を増やさない。
期限は
max(protocol floor, 8×RTT, request size / expected lower-bound rate +
margin)に基づき、調整可能な範囲に制限する。大きな request を RTT だけで判断しない。基礎 reference は 30 秒をテスト閾値に使うが、本番 Engine はネイティブの request deadline を使い、プロトコルの規定より厳しくしてはならない。
トラフィックがあって進捗がない場合は、重複 endgame block、検証済み範囲、不要なメッセージ、未検証の一時データ、相手による誤範囲の送信に分ける。ローカルで request がないことを確認した少量の遅着 unsolicited データを、一律に攻撃扱いしない。証拠では取消競合やプロトコルが許す動作を考慮する。S2
12|ブラックリストは単一の永久 IP リストではない
| 名称 | 契機 | 範囲/有効期限 | 復旧 |
|---|---|---|---|
disconnect この接続を切断 |
不要な接続/資格条件下のタイムアウト/確認済みの malformed | 正確な run+connection。恒久的な罰則は不要 | 新しい証拠に応じて再接続できる。 |
avoid 一時的に回避 |
資格があるのに有用なデータを返さず、ローカルの干渉は除外済み | 既定は realm+content+source。60 秒から開始し、独立した再発ごとに倍増、最大 1 時間 | 期限到来時は試行を 1 回だけ許可し、成功で解除/減衰する。 |
quarantine 隔離 |
帰属を特定できる破損データ、プロトコル破壊、悪意ある metadata の挙動 | 証明可能な最小範囲。既定 1~24 時間で証拠を保持 | 照合/再試行/手動撤回。 |
manual_deny 手動ブロック |
ユーザーが明示的に指定 | 恒久化可能。scope と副作用を必ず表示 | 手動で解除。 |
同じ evidence_id の再生で strike を重複加算しない。policy は config_revision、expires、元の理由、実際の enforcement を持ち、requested、enforced、unsupported、unknown
を分けて表示する。ソース A がファイル X にサービスしなかっただけで、ファイル Y、同じ NAT 内の別 peer、ASN 全体、国全体を自動ブロックしてはならない。
複数の peer が 1 つの破損 piece に寄与しても、全員を悪意あるソースと判定しない。まず検証単位とローカル書き込み/RAM 障害を切り分け、帰属を特定できる単一ソースで再テストするか、検証済みのネイティブ attribution を使う。ネイティブ libtorrent にも hash failure への寄与者を対象とした parole 機構があり、全員を即時永久ブロックするわけではない。S5
ブロック解除は UI の変更だけでは済まない。 ネイティブポリシーを撤回して照合する。恒久的な IP ban しか支援しない adapter が、撤回可能な単一接続 avoid を提供すると偽ってはならない。
13|フィッシング、誘引、監視、安全性の判断における能力の限界
システムが検出できるのは観測可能な挙動であり、相手の真の意図ではない。分析可能なのは、パストラバーサル、危険な URL/制御文字、不正な wire 長、圧縮爆弾、帰属を特定した hash 失敗、ソースの宣言と実際の相違、利用不能なソースの反復返却、外部ページの表示や認証情報の入力を求める metadata。UI ではこれらをプレーンテキストと警告だけで表示し、自動実行、スクリプトのプレビュー、リンクの自動表示は行わない。
honeypot、著作権監視者、受動的な記録者を確実に識別することはできない。
プロトコルを完全に守り正しいデータを提供する endpoint でも、あなたの IP、hash、時刻を記録している可能性がある。正常な転送、HTTPS、peer ID、国、クラウド ASN、多数のサイトへの掲載は「誘引ノードではない」証拠にならない。surveillance_intent=unknown
見せかけの精密な百分率スコアで表現しない。
リスク分類と性能評価を分離する:availability_evidence、integrity_evidence、protocol_behavior、provenance_confidence。具体的に検証可能な evidence rules だけが、自動で狭い制限を生み出せる。将来 AI が説明/分類を補助することはできるが、LLM の推測だけで全体的な ban を行ってはならない。
provider 応答への内部ネットワーク/管理 port の混入、広範な類似ソースの洪水、DNS リダイレクト、metadata 変更などの異常では、まず provenance を保持し、該当 candidate/source を隔離する。短時間のネットワーク outage を理由に全ソースをブラックリストに入れない。
14|能力インターフェース:精密な管理は粗い adapter だけではできない
ComponentCapabilities バージョン別に reporting と enforcement を区別する。必須項目:per_connection_identity、service_eligibility、per_peer_piece_map、request_progress、disconnect_connection、avoid_content_source、reversible_ban、metadata_without_payload、retain_queue_without_autostart。値は
native / observed / unsupportedとし、テスト済み fixture version を添える。
確認した qBittorrent の banPeersAction() は endpoint を解析してから次を呼ぶ:
banIP()。したがって1 接続だけを閉じるコマンドの実装には使えない。S6
| バックエンド | 本版の要件 |
|---|---|
| 独自開発 REMULE | Engine は接続ごとの ID、request/part 進捗、queue、対象を絞った disconnect、content-source avoid、撤回可能な policy を提供する。UI だけでなく実装が必須。 |
| 標準 qBittorrent WebAPI |
取得可能な torrent/peer 概要を保持する。接続単位のサービス資格が不明なら、推測による自動ブロックは有効にしない。対象を絞った操作は次を返す:
unsupported_scope。
|
| qBittorrent 完全管理モード | 保守可能な Engine bridge/制御された extension、または明示的に審査した patch で下層の connection handle に接続する必要がある。独立したタスクと受け入れ条件を定める。libtorrent の公開 API が接続単位の全切断能力を既に保証しているとは主張しない。 |
| slskd/DC/Kubo/I2P | それぞれの queue/Hub/provider/Destination を保持し、テスト済みの能力で実装する。欠けるフィールドは null+reason で示す。overlay の識別情報に国フィールドを無理に入れない。 |
したがって、必要な能力を持たない adapter での正式な「全精度の自動接続管理」は BLOCKEDとなる。ただし、ソース探索、粗いジョブスケジュール、実態に即した表示は先に実装できる。これは能力の段階分けであり、ユーザー要件を黙って削ることではない。
15|Tracker と eD2k:幅広く収集し、段階別に利用
本パッケージには 重複排除済みの 122 個の tracker endpoint と、現在の 12 個の eD2k server 候補を内蔵する。Tracker は ngosang の 75 件と XIU2 の 122 件を統合し、このスナップショットでは前者はすべて後者に含まれる。重複排除は URI 単位であり、122 の独立運営者を意味しない。DNS alias/共有 IP/同じチームには重複の可能性が残る。
| 出典 | 今回取得したもの | default の用途 | 安全性/完全性の制約 |
|---|---|---|---|
| ngosang/trackerslist | 2026-10-02 更新のスナップショット、75 entries。元の Git blob hash を照合済み | バージョン付き候補、毎日の条件付き更新 | 保守者による正常性チェックであり、悪意や監視がないことの認証ではない。 |
| XIU2/TrackersListCollection | 2026-10-02 の README。all.txt は 122 entries、Git blob hash を照合済み | Engine への重複投入なしに候補を拡大 | HTTP/HTTPS/UDP/WSS を含み、他の aggregator と重複する。 |
| eMule-Security.org | 公式ページは 2026-10-02 16:02 UTC に 12 件を掲載 | IP+明示された TCP port を候補 default に入れる | 今回は server に接続していない。UDP/難読化 port は推測しない。 |
| newTrackon | 公式ページと安定リストの説明 | 正常性と uptime の補助資料 |
/list 動的読み込み。機械向け API は未検証のため捏造しない
/api/...。
|
| 過去の gruk/peerates リスト | 過去の公式/コミュニティ記録を追跡可能 | 有効な default に直接追加しない | 古い URL、HTTP、未確認の現在の保守状態。件数を増やすために検証を緩めない。 |
最新ページは以前の 13 件のスナップショットより 1 件少ない。sources/ed2k-previous-snapshot.json
と
catalog/ed2k-source-diff.json
は今回の差分を保持する。撤回されたソースは自動選択を停止するが、掲載削除だけで悪意ありとはしない。
HTTPS の server.met は今回 raw binary を取得できなかったため、feed は設定済みだが既定で無効とした。起動時の検証にはページ由来の 12 候補を利用できる。ツールの読み取り失敗は、その HTTPS URL が利用不能である証明にはならない。HTTP への自動降格は禁止する。修正には実際の HTTPS fetch、上限付き parser fixture、ソース更新テストが必要であり、完了後に feed を有効化する。
WSS endpoint は WebTorrent 専用能力の候補であり、対応しない通常の BT Engine では使わない。UDP/25 のような機微な port はまず手動審査に回し、公開リストにあるだけで自動的にプロトコルデータを送らない。一般的な低位 port の tracker も role/scheme を正確に許可し、通常 peer への全体許可に転用しない。
16|Config の default と自動更新の管理
config/source-feeds.toml feed URL、許可範囲、更新時刻、上限、ソースの来歴、検証ポリシーを定義する。catalog/trackers.json、catalog/ed2k-servers.json
は追跡可能な bootstrap data である。すべての Component は引き続き ConfigReader から公開済みの有効スナップショットを取得し、server/port を独自に散在する形でハードコードしない。
以下のトランザクション経路を使う。Component の共有 CatalogFetcher が許可された出典だけをダウンロード → parser が型付き候補を返す → Store が候補/provenance を一時保存 → Connection Manager が endpoint/挙動ポリシーを適用 → Config が新しい変更不能な catalog revision を公開する。生 feed に shell、extra headers、認証値、任意の include path、ローカル policy の上書きを含めてはならない。
自動更新はユーザーが該当 Component を有効化した後に動作し、HTML を開いたり spec をインストールしたりしただけでは実行しない。24 時間+jitter ごとの conditional request を使い、実際に取得した 2 つの tracker text feed だけを既定で有効にする。新しい endpoint は validated/probing から開始し、更新失敗時は従来の正常な設定を保持する。手動 pin/deny は常に feed に優先する。
大量の追加/削除、domain の所有権や DNS/証明書の異常、大量の非 public アドレス、ソース形式の変更は quarantine diff として審査する。HTTPS と Git blob digest が保護するのは出典/転送とスナップショットの整合性であり、endpoint の善意を証明せず、未検証の署名を検証済みと呼ばない。
17|安全性の自動検知とソースの有用性分析
| 段階 | 確認 | 結果 |
|---|---|---|
| 取得 | HTTPS、固定ソース、正常な TLS、同一オリジンで最大 2 回のリダイレクト、降格なし、timeout/encoded bytes | 不適合なら last-good を保持し、feed event を生成する。 |
| 解析 | raw/decoded bytes の上限、entry 上限、厳密な port/URL、MET tag/count の境界、圧縮爆弾 | 異常データを拒否し、解析中の実行や接続を禁止する。 |
| アドレス | literal/すべての A、AAAA/CNAME の最終アドレス、IPv4-mapped IPv6。loopback/private/link-local/multicast/reserved を拒否 | dial のたび、および redirect 後に再検証し、その時点で検証済みの IP を実 connect に固定する。TLS hostname/SNI は保持する。 |
| プロトコル | 正常なハンドシェイク/transaction/request correlation、応答上限、送信元アドレス確認 |
usable_observed 今回利用可能だったことだけを示す。malformed があれば一時隔離する。
|
| 意味 | 公共/private/I2P などの realm、コンテンツ hash/scope、eD2k index と peer の区別 | 領域をまたぐ注入や private hash の外部送信をしない。 |
| 継続観測 | 資格条件を満たす問い合わせ、重複のないソースの増分、接続可能率、実サービス率、最初の byte までの時間、不良結果率 | リストの長さに応じてトラフィックを積むのではなく、限界利益に応じてソースを入れ替える。 |
これらの SSRF 防御は実際の fetch/connect 経路に実装する必要がある。文字列 parser での一度きりの検査では DNS rebinding に対応できない。OWASP の検証および redirect/DNS リスクの説明を実装の参考とする。S12
指標の分母は資格条件を満たす必要がある:new_usable_sources / qualified_lookup、payload_served_sources / qualified_connected_sources。重複ソースは新しい成果として数えず、問い合わせ 0 回は不明であり成功率 0%/100% ではない。共通ネットワーク障害のウィンドウで全 source を罰しない。ソースの完全性の主張、候補 domain/IP 数、実際に返った有効ピースは別々に集計する。100% と主張していても完了可能とは限らない。
Tracker の UDP connect は有効な announce peers の受信と同じではない。BEP 15 は connect/announce/scrape を定義しており、各段階の結果を分けて保存する。ユーザーの全 hash に追加の「テスト announce」を送らない。S15
プライベート torrent: metadata が明示的に
private=1 なら公共 tracker/DHT/PEX を追加しない。metadata 未取得の magnet は、まず元のソース情報と選択したプライバシーポリシーに従い、「不明」だからと公共 default を適用しない。public の証拠が得られてからポリシーに従って注入する。BEP 27 は private torrent に私有 tracker 由来のソースだけを使うよう求める。S3
18|Downloader と Engine の入力、出力、コマンド
| インターフェース | 入力 | 出力/必須の効果 |
|---|---|---|
Discover |
task/content/realm/Config revision/deadline | metadata+sources のスナップショット、coverage quality、expiry。転送 grant は要求しない。 |
ProbeSources |
候補ソース集合、動的リソースウィンドウ、desired scope | report と保持可能な ticket。プローブ完了時に task-local 接続を解放し、解放結果を報告する。 |
StartTrial |
Task revision、source snapshot、byte/I/O/network lease | run-bound operation+qualified progress。期限切れのソースで直接、高可用性と認定しない。 |
SetDownloadBudget |
task/run/generation+多次元 resource vector | requested/effective budget、enforcement strength。利用不可なら unsupported を返す。 |
PauseOrObserve |
理由と checkpoint/ticket の保持意図 | observed paused/retained queue/unknown。停止が確定して初めて全計上分を解放する。 |
ConnectionCommand |
run+connection+policy_revision+scope+action+evidence | applied/already_closed/unsupported_scope/stale_target/unknown/failed。 |
ResourceReport |
Engine の実測 | ローカル負荷、ソース/ジョブ/接続の概要を Scheduler/Connection Manager に直接送る。過去の Metrics DB をポーリングして取得しない。 |
MetricsPush |
生観測 batch+run/sequence/lost_count | P2P Metrics が集中して永続化する。publisher のメモリ queue には上限があり、欠落を示したうえで破棄できる。 |
App 内部インターフェースの JSON 契約は contracts/control.schema.jsonを参照。Web 向け新 API は contracts/control.openapi.jsonを参照。サンプル request に provider credentials は含まれず、任意の native API path も受け付けない。
実際の socket 作成、piece 選択、通常のプロトコルタイムアウト、parser による即時拒否は Engine が担当する。Scheduler はダウンロード budget を調整し、Connection Manager はより狭いソース/接続の制限を適用する。有効な許可集合は両者の積集合であり、Connection Manager はユーザーの一時停止や Scheduler の割り当てを越えてはならない。
18.1 型と既定値の意味
run_id、connection_id と native key は opaque identifiers であり、信頼スコアにデコードしない。report sequence は正規形の十進文字列で、SQLite への保存時は 0..9223372036854775807に制限する。上限では wrap せず新しい run に切り替える。その他の API の数値/時間は JS safe integer に制限し、長期 bytes は十進文字列を用いて uint64 上限を検査する。null は常に unknown/非対応を意味し、
missing_reasonを添える。0 ではない。
SourceSnapshot は selection_digest に結び付く。TTL 期限切れは可用性の確信度だけを下げ、ファイルの完全性は変更しない。callback は component/run/seq に一致する必要がある。ConnectionReport の
service_expected は Component が handshake、interest、queue、リクエスト資格、credit を正規化した結果である。取得可能なら元の details も添付する。qualified_idle_ms は単調時計を使い、同じサービス generation の有効観測から累計する。前後のサンプル欠落をゼロで埋めない。
multiplex transport では content-source avoid は指定 work だけを制限する。他の Task が有効なサービスを受けているのにエンジンが transport 全体しか閉じられない場合、「このジョブだけを閉じる」と偽らない。自動管理は
unsupported_scopeを返し、狭い deny-new-request ルールを維持する。手動の「この物理接続を閉じる」では影響する全 Task を表示する。
If-Match: "rN" は対応コマンドの expected_policy_revision/expected_revision に対応し、body と header が不一致なら拒否する。手動ポリシー追加時の N は現在の有効 Config revision(ポリシー一覧の config_revision/ETag が返す値)、撤回時はその policy row revision、接続コマンドでは照合済みポリシーバージョンを指す。混用しない。永続的な手動ポリシーは現在の接続がなくてもよく、policy_commands に各 Component の公開/撤回結果を保存し、connection_id を捏造しない。request_id は最大 128 文字で、その管理 instance 内で重複排除する。同じ body の再送は元の operation のみを返す。ブラウザーからの mutate は同一オリジン JSON のみを受け入れ、CLI は private UDS を利用できる。製品認証は存在せず、この origin 確認を同じ UID の悪意あるプロセスに対抗できるものとはしない。
19|復旧可能なコマンドと競合
各コマンドは request_id、payload_digest、expected_run_id、connection_id または task_id、expected_revision/policy_revision を含む。先に Store に operation+outbox を記録してから Engine に送る。同じ request_id で body が異なる場合は 409、古い run/connection には stale_targetを返し、再接続後の新しい socket に適用しない。
ack がないことは
unknownを意味し、切断済みや解除済みとは扱わない。実際の接続やネイティブコマンドの結果を読み取り専用で照合する。新しい request_id に変えて盲目的に再送しない。既に存在しない handle をローカルで閉じるだけなら
already_closedを返してよいが、同じ run と識別情報を照合する必要がある。
リソース計上では
pending / active / draining / unknown / releasedを保持する。減額/一時停止した割り当ても、確認までは潜在的転送負荷として数える。自動開始し得る remote queue は、自動消費可能な credit に引き続き計上する。ラベルを
observing に変えて空きリソースを偽装してはならない。
Store に書き込めない場合は新規の派遣とポリシー拡張を止める。Engine は解析エラーの即時拒否や公開済み policy に基づく切断を継続でき、自己保護イベントは上限付きメモリに一時保存して未永続化と表示する。Metrics の障害時も即時 ResourceReport 経路を維持し、履歴観測の欠落を示すが、正常なダウンロードは止めない。
report の鮮度とサービス時間には単調時刻を使う。永続化する expiry は UTC とし、元の観測時刻/ローカル受信時刻も保持する。再起動後の時計の巻き戻り、期限範囲の不明確さ、sequence の飛びがあれば再観測が必要と示し、ブロックを延長せず、未観測のサービス時間も加算しない。Component の再登録では run を変更し、古い ID で別接続の違反数を引き継がない。
20|SQLite とデータ責任
| データ | owner/保存先 | 保存方法 |
|---|---|---|
| タスク、ダウンロード成功/失敗、native hash、重複排除 claim、ファイル journal | P2P Store/SQLite | core tables を継続使用し、トランザクションを分割しない。 |
| 探索 target と直近のスケジュール可能なスナップショット | P2P Store |
discovery_targets、source_snapshots。expiry/selection/report seq を持つ。
|
| 接続開閉インデックスとポリシーに影響する証拠 | P2P Store |
connection_identities、connection_tasks、connection_evidence。すべての 1 秒サンプルを保存するわけではない。
|
| 一時回避、隔離、コマンドと結果 | P2P Store |
connection_policies、connection_commands/policy_commands。target scope のインデックスと期限到来時の再審査。
|
| ソース候補と公開の来歴 | P2P Store+Config | Store が facts/revision を一時保存し、有効 catalog の公開は Config だけが行う。 |
| 接続ごとの速度/RTT/国の履歴 | P2P Metrics 独自のストレージ | ローカルで機密を除いた detail+aggregate。Task 成功判定の別系統にはしない。 |
| payload/ネイティブ再開情報/範囲 journal | Engine の管理下にある作業ディレクトリ | SQLite に payload BLOB を入れず、二重 writer を避ける。 |
tasks.execution_state は引き続き Engine の実行実態を表し、discovery_targets.phase
は Scheduler のスケジュール段階であり、同じ state の複製ではない。両者に関係する transition は同じトランザクションで処理する。例えば desired paused → phase held、ネイティブ停止の未確認中は lease draining を維持、検証完了 → phase finished。新しい migration では、run の証拠がない既存 running Task を先に held/RECONCILE_REQUIRED にし、active と仮定しない。ネイティブとの再照合後に trial へ戻す。
store-base.sql は v2.2 の元の参考資料、store-v23.sql
は追加型 schema。migration runner は先に baseline hash/バージョンを照合し、バックアップを作成し、schema migration を排他実行し、トランザクションを使う。foreign_key_check/integrity_check 合格後にだけバージョンを確定し、不明な任意の DB に直接実行しない。
Store は SQLite WAL、単一 writer、短い transaction、読み取り snapshot、上限付き batch を使う。同じ調整役が checkpoint をスケジュールし、長時間読み取りによる回収の阻害を避ける。本番 WAL 導入には SQLite WAL-reset 修正が必要。本仕様は少なくとも 3.51.3 または確認済み backport という方針を維持し、ローカル schema smoke test を本番バージョンの受け入れ検証と見なさない。S13
21|プールの入れ替えでファイルのライフサイクルを壊さない
ファイル全体のサイズで payload を事前割り当てせず、全 target の全容量も予約しない。実際の allocated blocks、native buffer、次の書き込みウィンドウ、WAL/metadata/移動用一時領域などを別々に byte 計上する。sparse の論理サイズが allocated blocks より大きくても、物理容量が満杯とは限らない。UI では両方を示す。
下載中/<hash[0:2]>/<hash[2:4]>/<storage_key>/...
下載完/<分類>/<hash[0:2]>/<hash[2:4]>/<storage_key>/...
死檔/<hash[0:2]>/<hash[2:4]>/<storage_key>/...
storage_key は protocol namespace/native content identity を含む安定した hash。ネイティブ hash 未取得の magnet は明示的な provisional key を使い、後で journal によって移行する。黙ってパスを変えてはならない。filesystem name はファイルの識別情報ではない。元のタイトルを完全に表示しても、任意の path として扱わない。
入れ替え/観察ではジョブの停止と checkpoint の保存だけを行い、観察状態になるたびに「死んだファイル」ディレクトリへ移動しない。ソース snapshot の期限切れはデータ無効を意味しない。長期の複数回の有効観測があり、有効な queue/pin/writer/unknown operation がない場合に初めて dead candidate となる。
完了時の移動前に writer の停止、検証完了、manifest の固定を確認する。同一 filesystem では atomic rename、異なる device 間では copy→fsync→検証→公開→journal 更新→旧ファイル削除を行う。どの段階で失敗しても復旧可能なデータを保持する。共有中の Engine のパス変更はネイティブ API で調整し、使用中のファイルを直接移動しない。
自動清掃は既定で無効。有効化後は Config retention に従い、まず隔離してから purge し、削除後も tombstone を残す。低速、個別ソースの avoid、tracker の一時停止だけでは清掃の根拠にならない。
22|React ワークベンチ:すべての判断を監査可能に
Noir Workbench のダークテーマ、繁体字中国語、システムフォント、固定のセマンティック色を継続し、新しいログイン/i18n/Next.js は導入しない。ソース検索は引き続き tabs に分け、各ソースのネイティブフィールドを保持する。大量データにはカーソルページング/仮想リストを用い、毎秒全表を再マウントしない。
| ビュー | 必須表示 |
|---|---|
| ダウンロードプール | 収集中/試行待ち/試行/本稼働ダウンロード/観察/保留/完了の件数。実際の active と payload がある件数を分ける。 |
| 制御状態 | 設定済み/推定容量、unique goodput、network 層トラフィック、I/O backlog、追加/縮小/入れ替えの理由、直近の変更結果。 |
| 接続分析 | 種類、task/source、ID、国/不明、速度、coverage、サービス資格、資格条件下のゼロ進捗秒数、ローカルの干渉、policy、実際の enforcement。 |
| ソースカタログ | 候補/観測上利用中/隔離/退役、feed provenance、最終確認、更新 diff、ネイティブ endpoint/port、ソースの利益。 |
| 詳細 Inspector | 完全な URL/hash/ネイティブ状態、証拠タイムライン、撤回理由、trial 結果。機密 query は公開カタログに表示しない。 |
「この接続を閉じる」「このソースを一時回避」「この IP をブロック」は別操作にする。非対応の精密操作は disable にして理由を表示し、より広範な操作に置き換えない。誤ブロックは撤回できるが、先にネイティブの結果を照合する。結果不明の操作に成功 toast を表示しない。
ソース名/クライアント文字列/message はすべて信頼しないテキストとして扱い、次を禁止する:
dangerouslySetInnerHTML。イベント更新後もフィルター、selection、scroll、下書き、focus を保持する。詳細は一致する object/run だけを更新する。200% browser zoom、forced colors、reduced motion、キーボード、長い hash は個別に受け入れ検証する。
23|リソースと性能の目標:保証ではなく測定が必要
開発者が対象テスト基準の CPU/RAM/storage/ネットワークと Engine build を記録する。予定する受け入れ条件:1,000 件の有効 target は登録後にすべて探索スケジュールから見えること、結果が 1 件戻ればその試行を開始できること、ソース timeout がローカル API を阻害しないこと、バックプレッシャー時に無制限 mailbox/接続 retry が生じないこと、ソース追加で net throughput が持続的に低下したらロールバックすること。
十分な制御可能ソースを持つ合成 loopback テストでは、5 ジョブが容量の 50% しか使わない時に controller が trial を追加し、目標または新たなボトルネックに達したら拡大を止める。controller の効果は同じ workload の goodput、末尾遅延、メモリ、FD、disk backlog、churn を併せて比較し、スループット曲線だけで判断しない。
初期 SLO 案:制御概要の age p95≤2 秒、ローカルの非データ問い合わせ p95≤200 ms、資格条件下のサービス timeout の次の control tick までに disconnect を提案する。実際の Engine closure latency は別記する。これらは目標であり、製品実装前に passed としない。
負荷イベントには優先チャネルを設ける。価値の低い高頻度サンプルは統合し、exact counters を失われた delta で累積しない。各 run は monotonic seq/reset を持ち、照合後に連続表示できる。Metrics は connection_id を無制限の Prometheus label に使わず、明細は retention に従い detail として保存し、集計には有限の label を使う。
24|移行、ロールバック、開発の順序
まず v2.2 のスナップショットと schema fingerprint を固定し、古い固定 slot 設定を直接適用しない。v2.3 の auto 設定と migration を追加し、バックアップ DB でリプレイテストする。旧
max_active_tasks/max_probes
は履歴設定へ変換し、無効化理由を表示する。auto モードへ密かに戻さない。
実装順:契約と state model → 探索の全体可視化/短時間プローブ → Connection Agent/Registry → 精密な失敗資格と撤回可能な policy → adaptive pool → Config catalog fetch/validation → UI → 障害・実ネットワーク受け入れ検証。REMULE が最初の全精度の縦断実装を提供する。qBittorrent の精密 bridge は独立した依存であり、標準の
banPeers で代用したふりをしない。
ロールバック前に新規派遣を止め、全 draining/unknown ジョブを確認し、DB をバックアップする。旧版 Engine に同じ partial を同時書き込みさせない。新 schema への未検証の破壊的 down-migration より、旧プロセス+対応バックアップの復元を優先する。catalog は last-good revision に戻せるが、policy evidence はロールバックで消さない。
本パッケージは commit、push、デプロイ、外部ツールのインストール、VPN Manager の変更、未許可のテストデータ利用を許可しない。Claude Code は引き継ぎ後、定めたタスクを直接実装・テストし、全内容を別の計画に書き直しただけで納品としない。
25|既知の制約と納品状況
仕様は今回の全要件を網羅しているが、製品は未実装。 ソース候補には実際の公開データと snapshot digest があるが、live peer/tracker announce/eD2k ダウンロードテストはない。「安全なサーバー」や「フィッシング排除済み」の認証はない。
標準 qBittorrent の接続単位の精密制御の不足、および server.met の raw feed 未取得は、今回明示した統合/証拠の条件である。対応する full-feature acceptance は条件を削除せず BLOCKED を維持する。実際の Node/Rust/Engine バージョンは、実装 preflight で既存ロックファイルと owner policy を読んでから固定し、利用可能な build hash を捏造しない。
添付資料の具体的な検証結果は次を参照: VALIDATION.md;ACCEPTANCE.md
のソフトウェアケースは実施すべき受け入れ検証であり、実行済みではない。操作可能な HTML はルールの例示だけで、すべての数値を合成データと明記し、どのソースにもリクエストを送らない。
懸念する状況を一つずつ当てはめる。
以下は本書の判断条件を再現するだけで、実際の速度測定、ソースプローブ、ダウンロードシミュレーションではなく、接続を一切作らない。比率、秒数、件数はすべて合成入力。
1. 動的 pool の判断
5 件のダウンロードでネットワークの 50% しか使用せず、ローカルは正常。この件数はステップ幅の例であり、実際には FD/RAM/I/O/ネットワークの割り当てを個別に発行する必要がある。
負荷比 1.0 は該当するボトルネック領域がポリシー制限に達したことを示し、ホスト全体の CPU 使用率ではない。容量不明時は限界利益を見て、「Internet 帯域の 50% 使用」と断言しない。
2. 同じ「ダウンロードしていない」でも処置が違う理由
サービス資格が成立し、request が期限超過し、ローカル/共通ネットワーク障害を除外して初めて適用する。IP 全体を自動 ban しない。
「一時回避」の既定は realm+content+source であり、一律に IP 全体をブロックせず、まして国をブロックしない。すべての自動操作で証拠と実行応答を保存する。
3. 既定の候補カタログ
122 個の tracker URI、12 個の現行 eD2k server に加え、上流で削除された 1 endpoint の旧スナップショットを保持する。以下はすべて引き続き未プローブ/意図不明。URI の表示で接続は行わない。
134 件の候補を表示。すべて未プローブで、安全上の意図は不明。
| 候補 | プロトコル | 出典 | 既定の処理 |
|---|---|---|---|
| udp://tracker.opentrackr.org:1337/announce | udp | ngosang · xiu2 | 候補・まず検証 |
| http://tracker.opentrackr.org:1337/announce | http | ngosang · xiu2 | 候補・まず検証 |
| udp://open.stealth.si:80/announce | udp | ngosang · xiu2 | 候補・まず検証 |
| udp://tracker.torrent.eu.org:451/announce | udp | ngosang · xiu2 | 機微な port・手動審査 |
| udp://open.demonii.com:1337/announce | udp | ngosang · xiu2 | 候補・まず検証 |
| udp://tracker.skynetcloud.site:6969/announce | udp | ngosang · xiu2 | 候補・まず検証 |
| udp://tracker.qu.ax:6969/announce | udp | ngosang · xiu2 | 候補・まず検証 |
| http://tracker.qu.ax:6969/announce | http | ngosang · xiu2 | 候補・まず検証 |
| udp://tracker.corpscorp.online:80/announce | udp | ngosang · xiu2 | 候補・まず検証 |
| udp://tracker.bittor.pw:1337/announce | udp | ngosang · xiu2 | 候補・まず検証 |
| udp://explodie.org:6969/announce | udp | ngosang · xiu2 | 候補・まず検証 |
| udp://tracker.tryhackx.org:6969/announce | udp | ngosang · xiu2 | 候補・まず検証 |
| udp://tracker.gmi.gd:6969/announce | udp | ngosang · xiu2 | 候補・まず検証 |
| udp://tracker-udp.gbitt.info:80/announce | udp | ngosang · xiu2 | 候補・まず検証 |
| udp://retracker01-msk-virt.corbina.net:80/announce | udp | ngosang · xiu2 | 候補・まず検証 |
| udp://tracker.nyaa.vc:6969/announce | udp | ngosang · xiu2 | 候補・まず検証 |
| http://tracker.dler.org:6969/announce | http | ngosang · xiu2 | 候補・まず検証 |
| http://tracker.dler.com:6969/announce | http | ngosang · xiu2 | 候補・まず検証 |
| udp://tracker.dler.org:6969/announce | udp | ngosang · xiu2 | 候補・まず検証 |
| udp://tracker2.dler.org:80/announce | udp | ngosang · xiu2 | 候補・まず検証 |
| http://tracker2.dler.org:80/announce | http | ngosang · xiu2 | 候補・まず検証 |
| udp://tracker.ducks.party:1984/announce | udp | ngosang · xiu2 | 候補・まず検証 |
| http://tracker.renfei.net:8080/announce | http | ngosang · xiu2 | 候補・まず検証 |
| udp://tracker.peerfect.org:6969/announce | udp | ngosang · xiu2 | 候補・まず検証 |
| udp://tracker.opentrackr.com:6969/announce | udp | ngosang · xiu2 | 候補・まず検証 |
| udp://tracker.ilibr.org:6969/announce | udp | ngosang · xiu2 | 候補・まず検証 |
| udp://mail.segso.net:6969/announce | udp | ngosang · xiu2 | 候補・まず検証 |
| udp://t.overflow.biz:6969/announce | udp | ngosang · xiu2 | 候補・まず検証 |
| udp://bittorrent-tracker.e-n-c-r-y-p-t.net:1337/announce | udp | ngosang · xiu2 | 候補・まず検証 |
| http://t.overflow.biz:6969/announce | http | ngosang · xiu2 | 候補・まず検証 |
| http://bittorrent-tracker.e-n-c-r-y-p-t.net:1337/announce | http | ngosang · xiu2 | 候補・まず検証 |
| https://tracker.pmman.tech:443/announce | https | ngosang · xiu2 | 候補・まず検証 |
| udp://ipv4announce.sktorrent.eu:6969/announce | udp | ngosang · xiu2 | 候補・まず検証 |
| http://ipv4announce.sktorrent.eu:6969/announce | http | ngosang · xiu2 | 候補・まず検証 |
| udp://evan.im:6969/announce | udp | ngosang · xiu2 | 候補・まず検証 |
| udp://tracker.wildkat.net:6969/announce | udp | ngosang · xiu2 | 候補・まず検証 |
| udp://tracker.004430.xyz:1337/announce | udp | ngosang · xiu2 | 候補・まず検証 |
| udp://tr4ck3r.duckdns.org:6969/announce | udp | ngosang · xiu2 | 候補・まず検証 |
| udp://seedpeer.net:6969/announce | udp | ngosang · xiu2 | 候補・まず検証 |
| https://tracker.zhuqiy.com:443/announce | https | ngosang · xiu2 | 候補・まず検証 |
| https://tracker.nekomi.cn:443/announce | https | ngosang · xiu2 | 候補・まず検証 |
| https://004430.xyz:443/announce | https | ngosang · xiu2 | 候補・まず検証 |
| http://tracker.mywaifu.best:6969/announce | http | ngosang · xiu2 | 候補・まず検証 |
| http://004430.xyz:80/announce | http | ngosang · xiu2 | 候補・まず検証 |
| udp://open.ftorrent.com:443/announce | udp | ngosang · xiu2 | 候補・まず検証 |
| udp://martin-gebhardt.eu:25/announce | udp | ngosang · xiu2 | 機微な port・手動審査 |
| https://tracker.7471.top:443/announce | https | ngosang · xiu2 | 候補・まず検証 |
| https://tr.nyacat.pw:443/announce | https | ngosang · xiu2 | 候補・まず検証 |
| http://tracker.waaa.moe:6969/announce | http | ngosang · xiu2 | 候補・まず検証 |
| http://tracker.dhitechnical.com:6969/announce | http | ngosang · xiu2 | 候補・まず検証 |
| http://tr.nyacat.pw:80/announce | http | ngosang · xiu2 | 候補・まず検証 |
| http://open.tracker.cl:1337/announce | http | ngosang · xiu2 | 候補・まず検証 |
| udp://tracker.teambelgium.net:6969/announce | udp | ngosang · xiu2 | 候補・まず検証 |
| udp://tracker.fnix.net:6969/announce | udp | ngosang · xiu2 | 候補・まず検証 |
| udp://tracker.aruku.ovh:8081/announce | udp | ngosang · xiu2 | 候補・まず検証 |
| udp://admin.52ywp.com:6969/announce | udp | ngosang · xiu2 | 候補・まず検証 |
| https://open.ftorrent.com:443/announce | https | ngosang · xiu2 | 候補・まず検証 |
| http://tracker.23794.top:6969/announce | http | ngosang · xiu2 | 候補・まず検証 |
| udp://anime-tracker.aruku.kro.kr:8081/announce | udp | ngosang · xiu2 | 候補・まず検証 |
| https://tracker.foreverpirates.co:443/announce | https | ngosang · xiu2 | 候補・まず検証 |
| udp://tracker.torrents.observer:80/announce | udp | ngosang · xiu2 | 候補・まず検証 |
| udp://tracker.nyaa.net:6969/announce | udp | ngosang · xiu2 | 候補・まず検証 |
| udp://tracker.cn.nyaa.net:6969/announce | udp | ngosang · xiu2 | 候補・まず検証 |
| udp://tr3.ysagin.top:2715/announce | udp | ngosang · xiu2 | 候補・まず検証 |
| udp://kolankoalastree.newtrackon.co.nz:1337/announce | udp | ngosang · xiu2 | 候補・まず検証 |
| udp://archive.torrentonline.cc:42069/announce | udp | ngosang · xiu2 | 候補・まず検証 |
| http://tracker.zhuqiy.dgj055.icu:80/announce | http | ngosang · xiu2 | 候補・まず検証 |
| http://1337.abcvg.info:80/announce | http | ngosang · xiu2 | 候補・まず検証 |
| udp://yuptracker-eu.gaijinent.com:27022/announce | udp | ngosang · xiu2 | 候補・まず検証 |
| udp://whybother.torrentonline.cc:42069/announce | udp | ngosang · xiu2 | 候補・まず検証 |
| udp://tracker.playground.ru:6969/announce | udp | ngosang · xiu2 | 候補・まず検証 |
| udp://tracker.ddunlimited.net:6969/announce | udp | ngosang · xiu2 | 候補・まず検証 |
| udp://ns575949.ip-51-222-82.net:6969/announce | udp | ngosang · xiu2 | 候補・まず検証 |
| udp://edgev.duckdns.org:6969/announce | udp | ngosang · xiu2 | 候補・まず検証 |
| https://t.213891.xyz:443/announce | https | ngosang · xiu2 | 候補・まず検証 |
| http://107.189.2.131:1337/announce | http | xiu2 | 候補・まず検証 |
| http://207.241.226.111:6969/announce | http | xiu2 | 候補・まず検証 |
| http://207.241.231.226:6969/announce | http | xiu2 | 候補・まず検証 |
| http://announce.sktorrent.eu:6969/announce | http | xiu2 | 候補・まず検証 |
| http://bt1.archive.org:6969/announce | http | xiu2 | 候補・まず検証 |
| http://bt2.archive.org:6969/announce | http | xiu2 | 候補・まず検証 |
| http://nyaa.tracker.wf:7777/announce | http | xiu2 | 候補・まず検証 |
| http://retracker01-msk-virt.corbina.net:80/announce | http | xiu2 | 候補・まず検証 |
| http://torrentsmd.com:8080/announce | http | xiu2 | 候補・まず検証 |
| http://tracker.internetwarriors.net:1337/announce | http | xiu2 | 候補・まず検証 |
| http://tracker.xn--djrq4gl4hvoi.top:80/announce | http | xiu2 | 候補・まず検証 |
| http://tracker1.itzmx.com:8080/announce | http | xiu2 | 候補・まず検証 |
| http://www.wareztorrent.com:80/announce | http | xiu2 | 候補・まず検証 |
| https://1.tracker.eu.org:443/announce | https | xiu2 | 候補・まず検証 |
| https://1337.abcvg.info:443/announce | https | xiu2 | 候補・まず検証 |
| https://tr.abiir.top:443/announce | https | xiu2 | 候補・まず検証 |
| https://tr.burnabyhighstar.com:443/announce | https | xiu2 | 候補・まず検証 |
| https://tracker.kuroy.me:443/announce | https | xiu2 | 候補・まず検証 |
| https://tracker.midnightprogrammer.net:443/announce | https | xiu2 | 候補・まず検証 |
| https://tracker.qingwapt.org:443/announce | https | xiu2 | 候補・まず検証 |
| https://tracker1.520.jp:443/announce | https | xiu2 | 候補・まず検証 |
| udp://52.58.128.163:6969/announce | udp | xiu2 | 候補・まず検証 |
| udp://93.158.213.92:6969/announce | udp | xiu2 | 候補・まず検証 |
| udp://[2a03:7220:8083:cd00::1]:451/announce | udp | xiu2 | 機微な port・手動審査 |
| udp://[2a04:ac00:1:3dd8::1:2710]:2710/announce | udp | xiu2 | 候補・まず検証 |
| udp://exodus.desync.com:6969/announce | udp | xiu2 | 候補・まず検証 |
| udp://ipv6.govt.hu:6969/announce | udp | xiu2 | 候補・まず検証 |
| udp://open.tracker.ink:6969/announce | udp | xiu2 | 候補・まず検証 |
| udp://opentor.org:2710/announce | udp | xiu2 | 候補・まず検証 |
| udp://opentracker.lain.moscow:6969/announce | udp | xiu2 | 候補・まず検証 |
| udp://p4p.arenabg.com:1337/announce | udp | xiu2 | 候補・まず検証 |
| udp://retracker.hotplug.ru:2710/announce | udp | xiu2 | 候補・まず検証 |
| udp://torrent.tracker.durukanbal.com:6969/announce | udp | xiu2 | 候補・まず検証 |
| udp://tracker.dler.com:6969/announce | udp | xiu2 | 候補・まず検証 |
| udp://tracker.farted.net:6969/announce | udp | xiu2 | 候補・まず検証 |
| udp://tracker.filemail.com:6969/announce | udp | xiu2 | 候補・まず検証 |
| udp://tracker.flatuslifir.is:6969/announce | udp | xiu2 | 候補・まず検証 |
| udp://tracker.k.vu:6969/announce | udp | xiu2 | 候補・まず検証 |
| udp://tracker.skyts.net:6969/announce | udp | xiu2 | 候補・まず検証 |
| udp://tracker.willy.pro:6969/announce | udp | xiu2 | 候補・まず検証 |
| udp://tracker.yume-hatsuyuki.moe:6969/announce | udp | xiu2 | 候補・まず検証 |
| udp://tracker1.itzmx.com:8080/announce | udp | xiu2 | 候補・まず検証 |
| udp://tracker2.itzmx.com:6961/announce | udp | xiu2 | 候補・まず検証 |
| udp://tracker3.itzmx.com:6961/announce | udp | xiu2 | 候補・まず検証 |
| udp://tracker4.itzmx.com:2710/announce | udp | xiu2 | 候補・まず検証 |
| udp://v2.iperson.xyz:6969/announce | udp | xiu2 | 候補・まず検証 |
| wss://tracker.openwebtorrent.com:443/announce | wss | xiu2 | WebTorrent 能力が必要 |
| eMule Sunrise — ed2k://|server|176.123.5.89|4725|/ | ed2k | emule-security-web | 候補・まず検証 |
| Nordic Server — ed2k://|server|77.42.68.79|4232|/ | ed2k | emule-security-web | 候補・まず検証 |
| Sharing-Devils No.4 — ed2k://|server|91.208.162.87|4232|/ | ed2k | emule-security-web | 候補・まず検証 |
| MO-Server — ed2k://|server|91.208.162.182|4232|/ | ed2k | emule-security-web | 候補・まず検証 |
| ed2k-rust — ed2k://|server|85.17.116.222|6082|/ | ed2k | emule-security-web | 候補・まず検証 |
| Sharing-Devils No.2 — ed2k://|server|85.121.5.137|4232|/ | ed2k | emule-security-web | 候補・まず検証 |
| eMule Cosmic — ed2k://|server|212.95.35.240|4232|/ | ed2k | emule-security-web | 候補・まず検証 |
| Mazinga Server — ed2k://|server|213.141.198.207|4232|/ | ed2k | emule-security-web | 候補・まず検証 |
| MO-ad-free — ed2k://|server|57.131.35.107|4232|/ | ed2k | emule-security-web | 候補・まず検証 |
| Drunken Donkey — ed2k://|server|193.187.90.12|4661|/ | ed2k | emule-security-web | 候補・まず検証 |
| MO-24/7 — ed2k://|server|212.95.35.240|4323|/ | ed2k | emule-security-web | 候補・まず検証 |
| Sharing-Devils No.3 TEST — ed2k://|server|91.208.162.55|4235|/ | ed2k | emule-security-web | 候補・まず検証 |
4. 審査メモ
候補ソースの元データ:134 endpoint、来歴、不明状態
原稿に埋め込まれた全データフィールドを閲覧用に保持し、endpoint へのリクエストは送信しない。
[
{
"endpoint_id": "tr_e7aafb3a92ad2a4c04d3",
"uri": "udp://tracker.opentrackr.org:1337/announce",
"protocol": "udp",
"realm": "public_bt",
"source_ids": [
"ngosang",
"xiu2"
],
"syntax_status": "passed",
"runtime_status": "unprobed",
"risk_status": "unknown",
"default_use": "eligible_for_validation",
"country": null,
"kind": "tracker"
},
{
"endpoint_id": "tr_5347b4c4a5d8897046d8",
"uri": "http://tracker.opentrackr.org:1337/announce",
"protocol": "http",
"realm": "public_bt",
"source_ids": [
"ngosang",
"xiu2"
],
"syntax_status": "passed",
"runtime_status": "unprobed",
"risk_status": "unknown",
"default_use": "eligible_for_validation",
"country": null,
"kind": "tracker"
},
{
"endpoint_id": "tr_9602e7b2019adcad1a45",
"uri": "udp://open.stealth.si:80/announce",
"protocol": "udp",
"realm": "public_bt",
"source_ids": [
"ngosang",
"xiu2"
],
"syntax_status": "passed",
"runtime_status": "unprobed",
"risk_status": "unknown",
"default_use": "eligible_for_validation",
"country": null,
"kind": "tracker"
},
{
"endpoint_id": "tr_49b560d0e99309186ed2",
"uri": "udp://tracker.torrent.eu.org:451/announce",
"protocol": "udp",
"realm": "public_bt",
"source_ids": [
"ngosang",
"xiu2"
],
"syntax_status": "passed",
"runtime_status": "unprobed",
"risk_status": "unknown",
"default_use": "manual_review_sensitive_port",
"country": null,
"kind": "tracker"
},
{
"endpoint_id": "tr_768d2af44fd5cbd0bbb4",
"uri": "udp://open.demonii.com:1337/announce",
"protocol": "udp",
"realm": "public_bt",
"source_ids": [
"ngosang",
"xiu2"
],
"syntax_status": "passed",
"runtime_status": "unprobed",
"risk_status": "unknown",
"default_use": "eligible_for_validation",
"country": null,
"kind": "tracker"
},
{
"endpoint_id": "tr_9b45647cbc4ec20494df",
"uri": "udp://tracker.skynetcloud.site:6969/announce",
"protocol": "udp",
"realm": "public_bt",
"source_ids": [
"ngosang",
"xiu2"
],
"syntax_status": "passed",
"runtime_status": "unprobed",
"risk_status": "unknown",
"default_use": "eligible_for_validation",
"country": null,
"kind": "tracker"
},
{
"endpoint_id": "tr_8a3460ed3132abf5b5e9",
"uri": "udp://tracker.qu.ax:6969/announce",
"protocol": "udp",
"realm": "public_bt",
"source_ids": [
"ngosang",
"xiu2"
],
"syntax_status": "passed",
"runtime_status": "unprobed",
"risk_status": "unknown",
"default_use": "eligible_for_validation",
"country": null,
"kind": "tracker"
},
{
"endpoint_id": "tr_7c3ca5e0e49e4b81b0ba",
"uri": "http://tracker.qu.ax:6969/announce",
"protocol": "http",
"realm": "public_bt",
"source_ids": [
"ngosang",
"xiu2"
],
"syntax_status": "passed",
"runtime_status": "unprobed",
"risk_status": "unknown",
"default_use": "eligible_for_validation",
"country": null,
"kind": "tracker"
},
{
"endpoint_id": "tr_d52fbcb060a99de3d419",
"uri": "udp://tracker.corpscorp.online:80/announce",
"protocol": "udp",
"realm": "public_bt",
"source_ids": [
"ngosang",
"xiu2"
],
"syntax_status": "passed",
"runtime_status": "unprobed",
"risk_status": "unknown",
"default_use": "eligible_for_validation",
"country": null,
"kind": "tracker"
},
{
"endpoint_id": "tr_00b85fcb09930b486810",
"uri": "udp://tracker.bittor.pw:1337/announce",
"protocol": "udp",
"realm": "public_bt",
"source_ids": [
"ngosang",
"xiu2"
],
"syntax_status": "passed",
"runtime_status": "unprobed",
"risk_status": "unknown",
"default_use": "eligible_for_validation",
"country": null,
"kind": "tracker"
},
{
"endpoint_id": "tr_f90e8a1ef4642b3d458e",
"uri": "udp://explodie.org:6969/announce",
"protocol": "udp",
"realm": "public_bt",
"source_ids": [
"ngosang",
"xiu2"
],
"syntax_status": "passed",
"runtime_status": "unprobed",
"risk_status": "unknown",
"default_use": "eligible_for_validation",
"country": null,
"kind": "tracker"
},
{
"endpoint_id": "tr_6a2d73948ec717bd1661",
"uri": "udp://tracker.tryhackx.org:6969/announce",
"protocol": "udp",
"realm": "public_bt",
"source_ids": [
"ngosang",
"xiu2"
],
"syntax_status": "passed",
"runtime_status": "unprobed",
"risk_status": "unknown",
"default_use": "eligible_for_validation",
"country": null,
"kind": "tracker"
},
{
"endpoint_id": "tr_0d3c4bf282cf13183eaa",
"uri": "udp://tracker.gmi.gd:6969/announce",
"protocol": "udp",
"realm": "public_bt",
"source_ids": [
"ngosang",
"xiu2"
],
"syntax_status": "passed",
"runtime_status": "unprobed",
"risk_status": "unknown",
"default_use": "eligible_for_validation",
"country": null,
"kind": "tracker"
},
{
"endpoint_id": "tr_0bc11831f07df4bbdcd1",
"uri": "udp://tracker-udp.gbitt.info:80/announce",
"protocol": "udp",
"realm": "public_bt",
"source_ids": [
"ngosang",
"xiu2"
],
"syntax_status": "passed",
"runtime_status": "unprobed",
"risk_status": "unknown",
"default_use": "eligible_for_validation",
"country": null,
"kind": "tracker"
},
{
"endpoint_id": "tr_0e68c794851f89008cb8",
"uri": "udp://retracker01-msk-virt.corbina.net:80/announce",
"protocol": "udp",
"realm": "public_bt",
"source_ids": [
"ngosang",
"xiu2"
],
"syntax_status": "passed",
"runtime_status": "unprobed",
"risk_status": "unknown",
"default_use": "eligible_for_validation",
"country": null,
"kind": "tracker"
},
{
"endpoint_id": "tr_2a15cbf6aeafc0a5ca00",
"uri": "udp://tracker.nyaa.vc:6969/announce",
"protocol": "udp",
"realm": "public_bt",
"source_ids": [
"ngosang",
"xiu2"
],
"syntax_status": "passed",
"runtime_status": "unprobed",
"risk_status": "unknown",
"default_use": "eligible_for_validation",
"country": null,
"kind": "tracker"
},
{
"endpoint_id": "tr_7290c29a76512a7efbbc",
"uri": "http://tracker.dler.org:6969/announce",
"protocol": "http",
"realm": "public_bt",
"source_ids": [
"ngosang",
"xiu2"
],
"syntax_status": "passed",
"runtime_status": "unprobed",
"risk_status": "unknown",
"default_use": "eligible_for_validation",
"country": null,
"kind": "tracker"
},
{
"endpoint_id": "tr_f0d50d0bf39024111736",
"uri": "http://tracker.dler.com:6969/announce",
"protocol": "http",
"realm": "public_bt",
"source_ids": [
"ngosang",
"xiu2"
],
"syntax_status": "passed",
"runtime_status": "unprobed",
"risk_status": "unknown",
"default_use": "eligible_for_validation",
"country": null,
"kind": "tracker"
},
{
"endpoint_id": "tr_1305ac54bbf0dddb8f50",
"uri": "udp://tracker.dler.org:6969/announce",
"protocol": "udp",
"realm": "public_bt",
"source_ids": [
"ngosang",
"xiu2"
],
"syntax_status": "passed",
"runtime_status": "unprobed",
"risk_status": "unknown",
"default_use": "eligible_for_validation",
"country": null,
"kind": "tracker"
},
{
"endpoint_id": "tr_4601f3abc045f1e2cafd",
"uri": "udp://tracker2.dler.org:80/announce",
"protocol": "udp",
"realm": "public_bt",
"source_ids": [
"ngosang",
"xiu2"
],
"syntax_status": "passed",
"runtime_status": "unprobed",
"risk_status": "unknown",
"default_use": "eligible_for_validation",
"country": null,
"kind": "tracker"
},
{
"endpoint_id": "tr_aea6c1899a6573ce1418",
"uri": "http://tracker2.dler.org:80/announce",
"protocol": "http",
"realm": "public_bt",
"source_ids": [
"ngosang",
"xiu2"
],
"syntax_status": "passed",
"runtime_status": "unprobed",
"risk_status": "unknown",
"default_use": "eligible_for_validation",
"country": null,
"kind": "tracker"
},
{
"endpoint_id": "tr_1da6adaf350291d38be0",
"uri": "udp://tracker.ducks.party:1984/announce",
"protocol": "udp",
"realm": "public_bt",
"source_ids": [
"ngosang",
"xiu2"
],
"syntax_status": "passed",
"runtime_status": "unprobed",
"risk_status": "unknown",
"default_use": "eligible_for_validation",
"country": null,
"kind": "tracker"
},
{
"endpoint_id": "tr_ccafa756cfa8bbf605f6",
"uri": "http://tracker.renfei.net:8080/announce",
"protocol": "http",
"realm": "public_bt",
"source_ids": [
"ngosang",
"xiu2"
],
"syntax_status": "passed",
"runtime_status": "unprobed",
"risk_status": "unknown",
"default_use": "eligible_for_validation",
"country": null,
"kind": "tracker"
},
{
"endpoint_id": "tr_8b9bbe1e89109d3807b3",
"uri": "udp://tracker.peerfect.org:6969/announce",
"protocol": "udp",
"realm": "public_bt",
"source_ids": [
"ngosang",
"xiu2"
],
"syntax_status": "passed",
"runtime_status": "unprobed",
"risk_status": "unknown",
"default_use": "eligible_for_validation",
"country": null,
"kind": "tracker"
},
{
"endpoint_id": "tr_1a8e7be370b3d0402f37",
"uri": "udp://tracker.opentrackr.com:6969/announce",
"protocol": "udp",
"realm": "public_bt",
"source_ids": [
"ngosang",
"xiu2"
],
"syntax_status": "passed",
"runtime_status": "unprobed",
"risk_status": "unknown",
"default_use": "eligible_for_validation",
"country": null,
"kind": "tracker"
},
{
"endpoint_id": "tr_0a79fae0544191597bdb",
"uri": "udp://tracker.ilibr.org:6969/announce",
"protocol": "udp",
"realm": "public_bt",
"source_ids": [
"ngosang",
"xiu2"
],
"syntax_status": "passed",
"runtime_status": "unprobed",
"risk_status": "unknown",
"default_use": "eligible_for_validation",
"country": null,
"kind": "tracker"
},
{
"endpoint_id": "tr_0e0e3c29f21b584bdd54",
"uri": "udp://mail.segso.net:6969/announce",
"protocol": "udp",
"realm": "public_bt",
"source_ids": [
"ngosang",
"xiu2"
],
"syntax_status": "passed",
"runtime_status": "unprobed",
"risk_status": "unknown",
"default_use": "eligible_for_validation",
"country": null,
"kind": "tracker"
},
{
"endpoint_id": "tr_8e43ee12d073342ce1ed",
"uri": "udp://t.overflow.biz:6969/announce",
"protocol": "udp",
"realm": "public_bt",
"source_ids": [
"ngosang",
"xiu2"
],
"syntax_status": "passed",
"runtime_status": "unprobed",
"risk_status": "unknown",
"default_use": "eligible_for_validation",
"country": null,
"kind": "tracker"
},
{
"endpoint_id": "tr_7e056bf58ddd282514d2",
"uri": "udp://bittorrent-tracker.e-n-c-r-y-p-t.net:1337/announce",
"protocol": "udp",
"realm": "public_bt",
"source_ids": [
"ngosang",
"xiu2"
],
"syntax_status": "passed",
"runtime_status": "unprobed",
"risk_status": "unknown",
"default_use": "eligible_for_validation",
"country": null,
"kind": "tracker"
},
{
"endpoint_id": "tr_1c0dbd90b96339c7bef2",
"uri": "http://t.overflow.biz:6969/announce",
"protocol": "http",
"realm": "public_bt",
"source_ids": [
"ngosang",
"xiu2"
],
"syntax_status": "passed",
"runtime_status": "unprobed",
"risk_status": "unknown",
"default_use": "eligible_for_validation",
"country": null,
"kind": "tracker"
},
{
"endpoint_id": "tr_e65763949fba96ff14d9",
"uri": "http://bittorrent-tracker.e-n-c-r-y-p-t.net:1337/announce",
"protocol": "http",
"realm": "public_bt",
"source_ids": [
"ngosang",
"xiu2"
],
"syntax_status": "passed",
"runtime_status": "unprobed",
"risk_status": "unknown",
"default_use": "eligible_for_validation",
"country": null,
"kind": "tracker"
},
{
"endpoint_id": "tr_5399dffb660edcc7e377",
"uri": "https://tracker.pmman.tech:443/announce",
"protocol": "https",
"realm": "public_bt",
"source_ids": [
"ngosang",
"xiu2"
],
"syntax_status": "passed",
"runtime_status": "unprobed",
"risk_status": "unknown",
"default_use": "eligible_for_validation",
"country": null,
"kind": "tracker"
},
{
"endpoint_id": "tr_ec9c8a050b732fab8d54",
"uri": "udp://ipv4announce.sktorrent.eu:6969/announce",
"protocol": "udp",
"realm": "public_bt",
"source_ids": [
"ngosang",
"xiu2"
],
"syntax_status": "passed",
"runtime_status": "unprobed",
"risk_status": "unknown",
"default_use": "eligible_for_validation",
"country": null,
"kind": "tracker"
},
{
"endpoint_id": "tr_3a8e27ba74c65281f587",
"uri": "http://ipv4announce.sktorrent.eu:6969/announce",
"protocol": "http",
"realm": "public_bt",
"source_ids": [
"ngosang",
"xiu2"
],
"syntax_status": "passed",
"runtime_status": "unprobed",
"risk_status": "unknown",
"default_use": "eligible_for_validation",
"country": null,
"kind": "tracker"
},
{
"endpoint_id": "tr_d31b5445418d00503b85",
"uri": "udp://evan.im:6969/announce",
"protocol": "udp",
"realm": "public_bt",
"source_ids": [
"ngosang",
"xiu2"
],
"syntax_status": "passed",
"runtime_status": "unprobed",
"risk_status": "unknown",
"default_use": "eligible_for_validation",
"country": null,
"kind": "tracker"
},
{
"endpoint_id": "tr_bf6c1241ac9b56e6697c",
"uri": "udp://tracker.wildkat.net:6969/announce",
"protocol": "udp",
"realm": "public_bt",
"source_ids": [
"ngosang",
"xiu2"
],
"syntax_status": "passed",
"runtime_status": "unprobed",
"risk_status": "unknown",
"default_use": "eligible_for_validation",
"country": null,
"kind": "tracker"
},
{
"endpoint_id": "tr_ad965301125418e0ead7",
"uri": "udp://tracker.004430.xyz:1337/announce",
"protocol": "udp",
"realm": "public_bt",
"source_ids": [
"ngosang",
"xiu2"
],
"syntax_status": "passed",
"runtime_status": "unprobed",
"risk_status": "unknown",
"default_use": "eligible_for_validation",
"country": null,
"kind": "tracker"
},
{
"endpoint_id": "tr_ed4257101f050cf483a3",
"uri": "udp://tr4ck3r.duckdns.org:6969/announce",
"protocol": "udp",
"realm": "public_bt",
"source_ids": [
"ngosang",
"xiu2"
],
"syntax_status": "passed",
"runtime_status": "unprobed",
"risk_status": "unknown",
"default_use": "eligible_for_validation",
"country": null,
"kind": "tracker"
},
{
"endpoint_id": "tr_177b8a369d20a9afcb0c",
"uri": "udp://seedpeer.net:6969/announce",
"protocol": "udp",
"realm": "public_bt",
"source_ids": [
"ngosang",
"xiu2"
],
"syntax_status": "passed",
"runtime_status": "unprobed",
"risk_status": "unknown",
"default_use": "eligible_for_validation",
"country": null,
"kind": "tracker"
},
{
"endpoint_id": "tr_cfd72a51cd1ee02e8095",
"uri": "https://tracker.zhuqiy.com:443/announce",
"protocol": "https",
"realm": "public_bt",
"source_ids": [
"ngosang",
"xiu2"
],
"syntax_status": "passed",
"runtime_status": "unprobed",
"risk_status": "unknown",
"default_use": "eligible_for_validation",
"country": null,
"kind": "tracker"
},
{
"endpoint_id": "tr_e239d5bc5eb10f0862f2",
"uri": "https://tracker.nekomi.cn:443/announce",
"protocol": "https",
"realm": "public_bt",
"source_ids": [
"ngosang",
"xiu2"
],
"syntax_status": "passed",
"runtime_status": "unprobed",
"risk_status": "unknown",
"default_use": "eligible_for_validation",
"country": null,
"kind": "tracker"
},
{
"endpoint_id": "tr_1ef5402a1ba857349587",
"uri": "https://004430.xyz:443/announce",
"protocol": "https",
"realm": "public_bt",
"source_ids": [
"ngosang",
"xiu2"
],
"syntax_status": "passed",
"runtime_status": "unprobed",
"risk_status": "unknown",
"default_use": "eligible_for_validation",
"country": null,
"kind": "tracker"
},
{
"endpoint_id": "tr_e4838ecfad683c540971",
"uri": "http://tracker.mywaifu.best:6969/announce",
"protocol": "http",
"realm": "public_bt",
"source_ids": [
"ngosang",
"xiu2"
],
"syntax_status": "passed",
"runtime_status": "unprobed",
"risk_status": "unknown",
"default_use": "eligible_for_validation",
"country": null,
"kind": "tracker"
},
{
"endpoint_id": "tr_dbbc9fc9f9e0b6e415af",
"uri": "http://004430.xyz:80/announce",
"protocol": "http",
"realm": "public_bt",
"source_ids": [
"ngosang",
"xiu2"
],
"syntax_status": "passed",
"runtime_status": "unprobed",
"risk_status": "unknown",
"default_use": "eligible_for_validation",
"country": null,
"kind": "tracker"
},
{
"endpoint_id": "tr_93fd046608d6f6415a59",
"uri": "udp://open.ftorrent.com:443/announce",
"protocol": "udp",
"realm": "public_bt",
"source_ids": [
"ngosang",
"xiu2"
],
"syntax_status": "passed",
"runtime_status": "unprobed",
"risk_status": "unknown",
"default_use": "eligible_for_validation",
"country": null,
"kind": "tracker"
},
{
"endpoint_id": "tr_a52edc69aeb9dcd0b3f9",
"uri": "udp://martin-gebhardt.eu:25/announce",
"protocol": "udp",
"realm": "public_bt",
"source_ids": [
"ngosang",
"xiu2"
],
"syntax_status": "passed",
"runtime_status": "unprobed",
"risk_status": "unknown",
"default_use": "manual_review_sensitive_port",
"country": null,
"kind": "tracker"
},
{
"endpoint_id": "tr_65c37e05b8c3bf438115",
"uri": "https://tracker.7471.top:443/announce",
"protocol": "https",
"realm": "public_bt",
"source_ids": [
"ngosang",
"xiu2"
],
"syntax_status": "passed",
"runtime_status": "unprobed",
"risk_status": "unknown",
"default_use": "eligible_for_validation",
"country": null,
"kind": "tracker"
},
{
"endpoint_id": "tr_3210bf260996b1e21e02",
"uri": "https://tr.nyacat.pw:443/announce",
"protocol": "https",
"realm": "public_bt",
"source_ids": [
"ngosang",
"xiu2"
],
"syntax_status": "passed",
"runtime_status": "unprobed",
"risk_status": "unknown",
"default_use": "eligible_for_validation",
"country": null,
"kind": "tracker"
},
{
"endpoint_id": "tr_26c33d6e61a7ea8f32d5",
"uri": "http://tracker.waaa.moe:6969/announce",
"protocol": "http",
"realm": "public_bt",
"source_ids": [
"ngosang",
"xiu2"
],
"syntax_status": "passed",
"runtime_status": "unprobed",
"risk_status": "unknown",
"default_use": "eligible_for_validation",
"country": null,
"kind": "tracker"
},
{
"endpoint_id": "tr_62c68e75757248fdb3d4",
"uri": "http://tracker.dhitechnical.com:6969/announce",
"protocol": "http",
"realm": "public_bt",
"source_ids": [
"ngosang",
"xiu2"
],
"syntax_status": "passed",
"runtime_status": "unprobed",
"risk_status": "unknown",
"default_use": "eligible_for_validation",
"country": null,
"kind": "tracker"
},
{
"endpoint_id": "tr_6c13c9de7c3c4ffe98f4",
"uri": "http://tr.nyacat.pw:80/announce",
"protocol": "http",
"realm": "public_bt",
"source_ids": [
"ngosang",
"xiu2"
],
"syntax_status": "passed",
"runtime_status": "unprobed",
"risk_status": "unknown",
"default_use": "eligible_for_validation",
"country": null,
"kind": "tracker"
},
{
"endpoint_id": "tr_9d75a903482157d43261",
"uri": "http://open.tracker.cl:1337/announce",
"protocol": "http",
"realm": "public_bt",
"source_ids": [
"ngosang",
"xiu2"
],
"syntax_status": "passed",
"runtime_status": "unprobed",
"risk_status": "unknown",
"default_use": "eligible_for_validation",
"country": null,
"kind": "tracker"
},
{
"endpoint_id": "tr_89becaa140a0e5855ccf",
"uri": "udp://tracker.teambelgium.net:6969/announce",
"protocol": "udp",
"realm": "public_bt",
"source_ids": [
"ngosang",
"xiu2"
],
"syntax_status": "passed",
"runtime_status": "unprobed",
"risk_status": "unknown",
"default_use": "eligible_for_validation",
"country": null,
"kind": "tracker"
},
{
"endpoint_id": "tr_c29901bbbb842bd27834",
"uri": "udp://tracker.fnix.net:6969/announce",
"protocol": "udp",
"realm": "public_bt",
"source_ids": [
"ngosang",
"xiu2"
],
"syntax_status": "passed",
"runtime_status": "unprobed",
"risk_status": "unknown",
"default_use": "eligible_for_validation",
"country": null,
"kind": "tracker"
},
{
"endpoint_id": "tr_22ffae26c9bb05586686",
"uri": "udp://tracker.aruku.ovh:8081/announce",
"protocol": "udp",
"realm": "public_bt",
"source_ids": [
"ngosang",
"xiu2"
],
"syntax_status": "passed",
"runtime_status": "unprobed",
"risk_status": "unknown",
"default_use": "eligible_for_validation",
"country": null,
"kind": "tracker"
},
{
"endpoint_id": "tr_a0b8fce3c58387d4b243",
"uri": "udp://admin.52ywp.com:6969/announce",
"protocol": "udp",
"realm": "public_bt",
"source_ids": [
"ngosang",
"xiu2"
],
"syntax_status": "passed",
"runtime_status": "unprobed",
"risk_status": "unknown",
"default_use": "eligible_for_validation",
"country": null,
"kind": "tracker"
},
{
"endpoint_id": "tr_153629b08e1d449007ba",
"uri": "https://open.ftorrent.com:443/announce",
"protocol": "https",
"realm": "public_bt",
"source_ids": [
"ngosang",
"xiu2"
],
"syntax_status": "passed",
"runtime_status": "unprobed",
"risk_status": "unknown",
"default_use": "eligible_for_validation",
"country": null,
"kind": "tracker"
},
{
"endpoint_id": "tr_dcbfaf8a6379c365c369",
"uri": "http://tracker.23794.top:6969/announce",
"protocol": "http",
"realm": "public_bt",
"source_ids": [
"ngosang",
"xiu2"
],
"syntax_status": "passed",
"runtime_status": "unprobed",
"risk_status": "unknown",
"default_use": "eligible_for_validation",
"country": null,
"kind": "tracker"
},
{
"endpoint_id": "tr_8b6e6d8593717fcbd8e8",
"uri": "udp://anime-tracker.aruku.kro.kr:8081/announce",
"protocol": "udp",
"realm": "public_bt",
"source_ids": [
"ngosang",
"xiu2"
],
"syntax_status": "passed",
"runtime_status": "unprobed",
"risk_status": "unknown",
"default_use": "eligible_for_validation",
"country": null,
"kind": "tracker"
},
{
"endpoint_id": "tr_42d103ff92a192f10f17",
"uri": "https://tracker.foreverpirates.co:443/announce",
"protocol": "https",
"realm": "public_bt",
"source_ids": [
"ngosang",
"xiu2"
],
"syntax_status": "passed",
"runtime_status": "unprobed",
"risk_status": "unknown",
"default_use": "eligible_for_validation",
"country": null,
"kind": "tracker"
},
{
"endpoint_id": "tr_b5f4bf48e5b62cc60a02",
"uri": "udp://tracker.torrents.observer:80/announce",
"protocol": "udp",
"realm": "public_bt",
"source_ids": [
"ngosang",
"xiu2"
],
"syntax_status": "passed",
"runtime_status": "unprobed",
"risk_status": "unknown",
"default_use": "eligible_for_validation",
"country": null,
"kind": "tracker"
},
{
"endpoint_id": "tr_30ab8a6195b3b937b936",
"uri": "udp://tracker.nyaa.net:6969/announce",
"protocol": "udp",
"realm": "public_bt",
"source_ids": [
"ngosang",
"xiu2"
],
"syntax_status": "passed",
"runtime_status": "unprobed",
"risk_status": "unknown",
"default_use": "eligible_for_validation",
"country": null,
"kind": "tracker"
},
{
"endpoint_id": "tr_5136e11d0a4db5b8a2fd",
"uri": "udp://tracker.cn.nyaa.net:6969/announce",
"protocol": "udp",
"realm": "public_bt",
"source_ids": [
"ngosang",
"xiu2"
],
"syntax_status": "passed",
"runtime_status": "unprobed",
"risk_status": "unknown",
"default_use": "eligible_for_validation",
"country": null,
"kind": "tracker"
},
{
"endpoint_id": "tr_3a517c9676460af2c244",
"uri": "udp://tr3.ysagin.top:2715/announce",
"protocol": "udp",
"realm": "public_bt",
"source_ids": [
"ngosang",
"xiu2"
],
"syntax_status": "passed",
"runtime_status": "unprobed",
"risk_status": "unknown",
"default_use": "eligible_for_validation",
"country": null,
"kind": "tracker"
},
{
"endpoint_id": "tr_d8764c6a2e54e554d737",
"uri": "udp://kolankoalastree.newtrackon.co.nz:1337/announce",
"protocol": "udp",
"realm": "public_bt",
"source_ids": [
"ngosang",
"xiu2"
],
"syntax_status": "passed",
"runtime_status": "unprobed",
"risk_status": "unknown",
"default_use": "eligible_for_validation",
"country": null,
"kind": "tracker"
},
{
"endpoint_id": "tr_8f459cc4659bb8918879",
"uri": "udp://archive.torrentonline.cc:42069/announce",
"protocol": "udp",
"realm": "public_bt",
"source_ids": [
"ngosang",
"xiu2"
],
"syntax_status": "passed",
"runtime_status": "unprobed",
"risk_status": "unknown",
"default_use": "eligible_for_validation",
"country": null,
"kind": "tracker"
},
{
"endpoint_id": "tr_3e231294fec576a21474",
"uri": "http://tracker.zhuqiy.dgj055.icu:80/announce",
"protocol": "http",
"realm": "public_bt",
"source_ids": [
"ngosang",
"xiu2"
],
"syntax_status": "passed",
"runtime_status": "unprobed",
"risk_status": "unknown",
"default_use": "eligible_for_validation",
"country": null,
"kind": "tracker"
},
{
"endpoint_id": "tr_1d23856a4dcba12f0890",
"uri": "http://1337.abcvg.info:80/announce",
"protocol": "http",
"realm": "public_bt",
"source_ids": [
"ngosang",
"xiu2"
],
"syntax_status": "passed",
"runtime_status": "unprobed",
"risk_status": "unknown",
"default_use": "eligible_for_validation",
"country": null,
"kind": "tracker"
},
{
"endpoint_id": "tr_bfad8febecc8d34ea60f",
"uri": "udp://yuptracker-eu.gaijinent.com:27022/announce",
"protocol": "udp",
"realm": "public_bt",
"source_ids": [
"ngosang",
"xiu2"
],
"syntax_status": "passed",
"runtime_status": "unprobed",
"risk_status": "unknown",
"default_use": "eligible_for_validation",
"country": null,
"kind": "tracker"
},
{
"endpoint_id": "tr_d00204c2dc99432de5bc",
"uri": "udp://whybother.torrentonline.cc:42069/announce",
"protocol": "udp",
"realm": "public_bt",
"source_ids": [
"ngosang",
"xiu2"
],
"syntax_status": "passed",
"runtime_status": "unprobed",
"risk_status": "unknown",
"default_use": "eligible_for_validation",
"country": null,
"kind": "tracker"
},
{
"endpoint_id": "tr_a3715e45cc4ff2a08c08",
"uri": "udp://tracker.playground.ru:6969/announce",
"protocol": "udp",
"realm": "public_bt",
"source_ids": [
"ngosang",
"xiu2"
],
"syntax_status": "passed",
"runtime_status": "unprobed",
"risk_status": "unknown",
"default_use": "eligible_for_validation",
"country": null,
"kind": "tracker"
},
{
"endpoint_id": "tr_b670d5ffef147c1a34f5",
"uri": "udp://tracker.ddunlimited.net:6969/announce",
"protocol": "udp",
"realm": "public_bt",
"source_ids": [
"ngosang",
"xiu2"
],
"syntax_status": "passed",
"runtime_status": "unprobed",
"risk_status": "unknown",
"default_use": "eligible_for_validation",
"country": null,
"kind": "tracker"
},
{
"endpoint_id": "tr_92ff87846531ca4561d0",
"uri": "udp://ns575949.ip-51-222-82.net:6969/announce",
"protocol": "udp",
"realm": "public_bt",
"source_ids": [
"ngosang",
"xiu2"
],
"syntax_status": "passed",
"runtime_status": "unprobed",
"risk_status": "unknown",
"default_use": "eligible_for_validation",
"country": null,
"kind": "tracker"
},
{
"endpoint_id": "tr_6322a4e0ac580ca0b5eb",
"uri": "udp://edgev.duckdns.org:6969/announce",
"protocol": "udp",
"realm": "public_bt",
"source_ids": [
"ngosang",
"xiu2"
],
"syntax_status": "passed",
"runtime_status": "unprobed",
"risk_status": "unknown",
"default_use": "eligible_for_validation",
"country": null,
"kind": "tracker"
},
{
"endpoint_id": "tr_6426e702803f2a56bd2e",
"uri": "https://t.213891.xyz:443/announce",
"protocol": "https",
"realm": "public_bt",
"source_ids": [
"ngosang",
"xiu2"
],
"syntax_status": "passed",
"runtime_status": "unprobed",
"risk_status": "unknown",
"default_use": "eligible_for_validation",
"country": null,
"kind": "tracker"
},
{
"endpoint_id": "tr_1fa0694e8c47f66bab78",
"uri": "http://107.189.2.131:1337/announce",
"protocol": "http",
"realm": "public_bt",
"source_ids": [
"xiu2"
],
"syntax_status": "passed",
"runtime_status": "unprobed",
"risk_status": "unknown",
"default_use": "eligible_for_validation",
"country": null,
"kind": "tracker"
},
{
"endpoint_id": "tr_85bf612e15f11c251e06",
"uri": "http://207.241.226.111:6969/announce",
"protocol": "http",
"realm": "public_bt",
"source_ids": [
"xiu2"
],
"syntax_status": "passed",
"runtime_status": "unprobed",
"risk_status": "unknown",
"default_use": "eligible_for_validation",
"country": null,
"kind": "tracker"
},
{
"endpoint_id": "tr_9ac05b94a64cc1d0ee51",
"uri": "http://207.241.231.226:6969/announce",
"protocol": "http",
"realm": "public_bt",
"source_ids": [
"xiu2"
],
"syntax_status": "passed",
"runtime_status": "unprobed",
"risk_status": "unknown",
"default_use": "eligible_for_validation",
"country": null,
"kind": "tracker"
},
{
"endpoint_id": "tr_81cf09ece384117fd0af",
"uri": "http://announce.sktorrent.eu:6969/announce",
"protocol": "http",
"realm": "public_bt",
"source_ids": [
"xiu2"
],
"syntax_status": "passed",
"runtime_status": "unprobed",
"risk_status": "unknown",
"default_use": "eligible_for_validation",
"country": null,
"kind": "tracker"
},
{
"endpoint_id": "tr_effa179ee8647e57fba2",
"uri": "http://bt1.archive.org:6969/announce",
"protocol": "http",
"realm": "public_bt",
"source_ids": [
"xiu2"
],
"syntax_status": "passed",
"runtime_status": "unprobed",
"risk_status": "unknown",
"default_use": "eligible_for_validation",
"country": null,
"kind": "tracker"
},
{
"endpoint_id": "tr_1c78d114e0beafc157ca",
"uri": "http://bt2.archive.org:6969/announce",
"protocol": "http",
"realm": "public_bt",
"source_ids": [
"xiu2"
],
"syntax_status": "passed",
"runtime_status": "unprobed",
"risk_status": "unknown",
"default_use": "eligible_for_validation",
"country": null,
"kind": "tracker"
},
{
"endpoint_id": "tr_9da1458a29c500d77fcd",
"uri": "http://nyaa.tracker.wf:7777/announce",
"protocol": "http",
"realm": "public_bt",
"source_ids": [
"xiu2"
],
"syntax_status": "passed",
"runtime_status": "unprobed",
"risk_status": "unknown",
"default_use": "eligible_for_validation",
"country": null,
"kind": "tracker"
},
{
"endpoint_id": "tr_197005b958105f57772b",
"uri": "http://retracker01-msk-virt.corbina.net:80/announce",
"protocol": "http",
"realm": "public_bt",
"source_ids": [
"xiu2"
],
"syntax_status": "passed",
"runtime_status": "unprobed",
"risk_status": "unknown",
"default_use": "eligible_for_validation",
"country": null,
"kind": "tracker"
},
{
"endpoint_id": "tr_93bd6abeb95507c17e4e",
"uri": "http://torrentsmd.com:8080/announce",
"protocol": "http",
"realm": "public_bt",
"source_ids": [
"xiu2"
],
"syntax_status": "passed",
"runtime_status": "unprobed",
"risk_status": "unknown",
"default_use": "eligible_for_validation",
"country": null,
"kind": "tracker"
},
{
"endpoint_id": "tr_fa444de822d4fc660cff",
"uri": "http://tracker.internetwarriors.net:1337/announce",
"protocol": "http",
"realm": "public_bt",
"source_ids": [
"xiu2"
],
"syntax_status": "passed",
"runtime_status": "unprobed",
"risk_status": "unknown",
"default_use": "eligible_for_validation",
"country": null,
"kind": "tracker"
},
{
"endpoint_id": "tr_8a1943e27b9ded1c801c",
"uri": "http://tracker.xn--djrq4gl4hvoi.top:80/announce",
"protocol": "http",
"realm": "public_bt",
"source_ids": [
"xiu2"
],
"syntax_status": "passed",
"runtime_status": "unprobed",
"risk_status": "unknown",
"default_use": "eligible_for_validation",
"country": null,
"kind": "tracker"
},
{
"endpoint_id": "tr_f4ba27c3df99e4a177a8",
"uri": "http://tracker1.itzmx.com:8080/announce",
"protocol": "http",
"realm": "public_bt",
"source_ids": [
"xiu2"
],
"syntax_status": "passed",
"runtime_status": "unprobed",
"risk_status": "unknown",
"default_use": "eligible_for_validation",
"country": null,
"kind": "tracker"
},
{
"endpoint_id": "tr_d4c351818647f027f93d",
"uri": "http://www.wareztorrent.com:80/announce",
"protocol": "http",
"realm": "public_bt",
"source_ids": [
"xiu2"
],
"syntax_status": "passed",
"runtime_status": "unprobed",
"risk_status": "unknown",
"default_use": "eligible_for_validation",
"country": null,
"kind": "tracker"
},
{
"endpoint_id": "tr_fecc3323bb8e25e365e0",
"uri": "https://1.tracker.eu.org:443/announce",
"protocol": "https",
"realm": "public_bt",
"source_ids": [
"xiu2"
],
"syntax_status": "passed",
"runtime_status": "unprobed",
"risk_status": "unknown",
"default_use": "eligible_for_validation",
"country": null,
"kind": "tracker"
},
{
"endpoint_id": "tr_f949af7d4c434450546a",
"uri": "https://1337.abcvg.info:443/announce",
"protocol": "https",
"realm": "public_bt",
"source_ids": [
"xiu2"
],
"syntax_status": "passed",
"runtime_status": "unprobed",
"risk_status": "unknown",
"default_use": "eligible_for_validation",
"country": null,
"kind": "tracker"
},
{
"endpoint_id": "tr_ca197896ef641f99ca3e",
"uri": "https://tr.abiir.top:443/announce",
"protocol": "https",
"realm": "public_bt",
"source_ids": [
"xiu2"
],
"syntax_status": "passed",
"runtime_status": "unprobed",
"risk_status": "unknown",
"default_use": "eligible_for_validation",
"country": null,
"kind": "tracker"
},
{
"endpoint_id": "tr_6be536d2f232af5b867f",
"uri": "https://tr.burnabyhighstar.com:443/announce",
"protocol": "https",
"realm": "public_bt",
"source_ids": [
"xiu2"
],
"syntax_status": "passed",
"runtime_status": "unprobed",
"risk_status": "unknown",
"default_use": "eligible_for_validation",
"country": null,
"kind": "tracker"
},
{
"endpoint_id": "tr_96ebc73f40872cfdf53e",
"uri": "https://tracker.kuroy.me:443/announce",
"protocol": "https",
"realm": "public_bt",
"source_ids": [
"xiu2"
],
"syntax_status": "passed",
"runtime_status": "unprobed",
"risk_status": "unknown",
"default_use": "eligible_for_validation",
"country": null,
"kind": "tracker"
},
{
"endpoint_id": "tr_eb2db6860c56c56043da",
"uri": "https://tracker.midnightprogrammer.net:443/announce",
"protocol": "https",
"realm": "public_bt",
"source_ids": [
"xiu2"
],
"syntax_status": "passed",
"runtime_status": "unprobed",
"risk_status": "unknown",
"default_use": "eligible_for_validation",
"country": null,
"kind": "tracker"
},
{
"endpoint_id": "tr_aee04a414594e02c7a2f",
"uri": "https://tracker.qingwapt.org:443/announce",
"protocol": "https",
"realm": "public_bt",
"source_ids": [
"xiu2"
],
"syntax_status": "passed",
"runtime_status": "unprobed",
"risk_status": "unknown",
"default_use": "eligible_for_validation",
"country": null,
"kind": "tracker"
},
{
"endpoint_id": "tr_9bb064af7f9fac5f7fed",
"uri": "https://tracker1.520.jp:443/announce",
"protocol": "https",
"realm": "public_bt",
"source_ids": [
"xiu2"
],
"syntax_status": "passed",
"runtime_status": "unprobed",
"risk_status": "unknown",
"default_use": "eligible_for_validation",
"country": null,
"kind": "tracker"
},
{
"endpoint_id": "tr_5aa546aa6429c21562bd",
"uri": "udp://52.58.128.163:6969/announce",
"protocol": "udp",
"realm": "public_bt",
"source_ids": [
"xiu2"
],
"syntax_status": "passed",
"runtime_status": "unprobed",
"risk_status": "unknown",
"default_use": "eligible_for_validation",
"country": null,
"kind": "tracker"
},
{
"endpoint_id": "tr_621c69ccd287852c6ffb",
"uri": "udp://93.158.213.92:6969/announce",
"protocol": "udp",
"realm": "public_bt",
"source_ids": [
"xiu2"
],
"syntax_status": "passed",
"runtime_status": "unprobed",
"risk_status": "unknown",
"default_use": "eligible_for_validation",
"country": null,
"kind": "tracker"
},
{
"endpoint_id": "tr_9aaf54b6de887e506605",
"uri": "udp://[2a03:7220:8083:cd00::1]:451/announce",
"protocol": "udp",
"realm": "public_bt",
"source_ids": [
"xiu2"
],
"syntax_status": "passed",
"runtime_status": "unprobed",
"risk_status": "unknown",
"default_use": "manual_review_sensitive_port",
"country": null,
"kind": "tracker"
},
{
"endpoint_id": "tr_9b53ba718fdd78b7d97c",
"uri": "udp://[2a04:ac00:1:3dd8::1:2710]:2710/announce",
"protocol": "udp",
"realm": "public_bt",
"source_ids": [
"xiu2"
],
"syntax_status": "passed",
"runtime_status": "unprobed",
"risk_status": "unknown",
"default_use": "eligible_for_validation",
"country": null,
"kind": "tracker"
},
{
"endpoint_id": "tr_975eeb764b3c82e9eef5",
"uri": "udp://exodus.desync.com:6969/announce",
"protocol": "udp",
"realm": "public_bt",
"source_ids": [
"xiu2"
],
"syntax_status": "passed",
"runtime_status": "unprobed",
"risk_status": "unknown",
"default_use": "eligible_for_validation",
"country": null,
"kind": "tracker"
},
{
"endpoint_id": "tr_3c49cdb225af51e2cdee",
"uri": "udp://ipv6.govt.hu:6969/announce",
"protocol": "udp",
"realm": "public_bt",
"source_ids": [
"xiu2"
],
"syntax_status": "passed",
"runtime_status": "unprobed",
"risk_status": "unknown",
"default_use": "eligible_for_validation",
"country": null,
"kind": "tracker"
},
{
"endpoint_id": "tr_14abef20bbf32479b592",
"uri": "udp://open.tracker.ink:6969/announce",
"protocol": "udp",
"realm": "public_bt",
"source_ids": [
"xiu2"
],
"syntax_status": "passed",
"runtime_status": "unprobed",
"risk_status": "unknown",
"default_use": "eligible_for_validation",
"country": null,
"kind": "tracker"
},
{
"endpoint_id": "tr_793a7ea68ff42c290e2a",
"uri": "udp://opentor.org:2710/announce",
"protocol": "udp",
"realm": "public_bt",
"source_ids": [
"xiu2"
],
"syntax_status": "passed",
"runtime_status": "unprobed",
"risk_status": "unknown",
"default_use": "eligible_for_validation",
"country": null,
"kind": "tracker"
},
{
"endpoint_id": "tr_d60a7f8cc21ae5c83f17",
"uri": "udp://opentracker.lain.moscow:6969/announce",
"protocol": "udp",
"realm": "public_bt",
"source_ids": [
"xiu2"
],
"syntax_status": "passed",
"runtime_status": "unprobed",
"risk_status": "unknown",
"default_use": "eligible_for_validation",
"country": null,
"kind": "tracker"
},
{
"endpoint_id": "tr_38611c3f8126c9b4e9f2",
"uri": "udp://p4p.arenabg.com:1337/announce",
"protocol": "udp",
"realm": "public_bt",
"source_ids": [
"xiu2"
],
"syntax_status": "passed",
"runtime_status": "unprobed",
"risk_status": "unknown",
"default_use": "eligible_for_validation",
"country": null,
"kind": "tracker"
},
{
"endpoint_id": "tr_f237059b169ee48288ba",
"uri": "udp://retracker.hotplug.ru:2710/announce",
"protocol": "udp",
"realm": "public_bt",
"source_ids": [
"xiu2"
],
"syntax_status": "passed",
"runtime_status": "unprobed",
"risk_status": "unknown",
"default_use": "eligible_for_validation",
"country": null,
"kind": "tracker"
},
{
"endpoint_id": "tr_bb48f3e6abee60b5e719",
"uri": "udp://torrent.tracker.durukanbal.com:6969/announce",
"protocol": "udp",
"realm": "public_bt",
"source_ids": [
"xiu2"
],
"syntax_status": "passed",
"runtime_status": "unprobed",
"risk_status": "unknown",
"default_use": "eligible_for_validation",
"country": null,
"kind": "tracker"
},
{
"endpoint_id": "tr_66f78ddb6a174d3cdc58",
"uri": "udp://tracker.dler.com:6969/announce",
"protocol": "udp",
"realm": "public_bt",
"source_ids": [
"xiu2"
],
"syntax_status": "passed",
"runtime_status": "unprobed",
"risk_status": "unknown",
"default_use": "eligible_for_validation",
"country": null,
"kind": "tracker"
},
{
"endpoint_id": "tr_f5d5a4239eab5bbe1755",
"uri": "udp://tracker.farted.net:6969/announce",
"protocol": "udp",
"realm": "public_bt",
"source_ids": [
"xiu2"
],
"syntax_status": "passed",
"runtime_status": "unprobed",
"risk_status": "unknown",
"default_use": "eligible_for_validation",
"country": null,
"kind": "tracker"
},
{
"endpoint_id": "tr_7231187c42916af832e5",
"uri": "udp://tracker.filemail.com:6969/announce",
"protocol": "udp",
"realm": "public_bt",
"source_ids": [
"xiu2"
],
"syntax_status": "passed",
"runtime_status": "unprobed",
"risk_status": "unknown",
"default_use": "eligible_for_validation",
"country": null,
"kind": "tracker"
},
{
"endpoint_id": "tr_35e5139bec3d124c5cb1",
"uri": "udp://tracker.flatuslifir.is:6969/announce",
"protocol": "udp",
"realm": "public_bt",
"source_ids": [
"xiu2"
],
"syntax_status": "passed",
"runtime_status": "unprobed",
"risk_status": "unknown",
"default_use": "eligible_for_validation",
"country": null,
"kind": "tracker"
},
{
"endpoint_id": "tr_1cf6e29fec5e1adfa926",
"uri": "udp://tracker.k.vu:6969/announce",
"protocol": "udp",
"realm": "public_bt",
"source_ids": [
"xiu2"
],
"syntax_status": "passed",
"runtime_status": "unprobed",
"risk_status": "unknown",
"default_use": "eligible_for_validation",
"country": null,
"kind": "tracker"
},
{
"endpoint_id": "tr_8647636414170b8ae4cc",
"uri": "udp://tracker.skyts.net:6969/announce",
"protocol": "udp",
"realm": "public_bt",
"source_ids": [
"xiu2"
],
"syntax_status": "passed",
"runtime_status": "unprobed",
"risk_status": "unknown",
"default_use": "eligible_for_validation",
"country": null,
"kind": "tracker"
},
{
"endpoint_id": "tr_9c8f4b1393fa35c207cb",
"uri": "udp://tracker.willy.pro:6969/announce",
"protocol": "udp",
"realm": "public_bt",
"source_ids": [
"xiu2"
],
"syntax_status": "passed",
"runtime_status": "unprobed",
"risk_status": "unknown",
"default_use": "eligible_for_validation",
"country": null,
"kind": "tracker"
},
{
"endpoint_id": "tr_f1b4ca7ff40f7fc487eb",
"uri": "udp://tracker.yume-hatsuyuki.moe:6969/announce",
"protocol": "udp",
"realm": "public_bt",
"source_ids": [
"xiu2"
],
"syntax_status": "passed",
"runtime_status": "unprobed",
"risk_status": "unknown",
"default_use": "eligible_for_validation",
"country": null,
"kind": "tracker"
},
{
"endpoint_id": "tr_e3dc7e2540d3b9221c2b",
"uri": "udp://tracker1.itzmx.com:8080/announce",
"protocol": "udp",
"realm": "public_bt",
"source_ids": [
"xiu2"
],
"syntax_status": "passed",
"runtime_status": "unprobed",
"risk_status": "unknown",
"default_use": "eligible_for_validation",
"country": null,
"kind": "tracker"
},
{
"endpoint_id": "tr_705c677be0bdfaadd829",
"uri": "udp://tracker2.itzmx.com:6961/announce",
"protocol": "udp",
"realm": "public_bt",
"source_ids": [
"xiu2"
],
"syntax_status": "passed",
"runtime_status": "unprobed",
"risk_status": "unknown",
"default_use": "eligible_for_validation",
"country": null,
"kind": "tracker"
},
{
"endpoint_id": "tr_7a4c7e0d1162e7a57200",
"uri": "udp://tracker3.itzmx.com:6961/announce",
"protocol": "udp",
"realm": "public_bt",
"source_ids": [
"xiu2"
],
"syntax_status": "passed",
"runtime_status": "unprobed",
"risk_status": "unknown",
"default_use": "eligible_for_validation",
"country": null,
"kind": "tracker"
},
{
"endpoint_id": "tr_8b119d7f519ba0442456",
"uri": "udp://tracker4.itzmx.com:2710/announce",
"protocol": "udp",
"realm": "public_bt",
"source_ids": [
"xiu2"
],
"syntax_status": "passed",
"runtime_status": "unprobed",
"risk_status": "unknown",
"default_use": "eligible_for_validation",
"country": null,
"kind": "tracker"
},
{
"endpoint_id": "tr_638fd3f69d78a8cc976f",
"uri": "udp://v2.iperson.xyz:6969/announce",
"protocol": "udp",
"realm": "public_bt",
"source_ids": [
"xiu2"
],
"syntax_status": "passed",
"runtime_status": "unprobed",
"risk_status": "unknown",
"default_use": "eligible_for_validation",
"country": null,
"kind": "tracker"
},
{
"endpoint_id": "tr_bd4914bd4d5d433f649a",
"uri": "wss://tracker.openwebtorrent.com:443/announce",
"protocol": "wss",
"realm": "public_bt",
"source_ids": [
"xiu2"
],
"syntax_status": "passed",
"runtime_status": "unprobed",
"risk_status": "unknown",
"default_use": "requires_webtorrent_capability",
"country": null,
"kind": "tracker"
},
{
"endpoint_id": "ed_61f00ea481c990a9a6eb",
"name": "eMule Sunrise",
"uri": "ed2k://|server|176.123.5.89|4725|/",
"ip": "176.123.5.89",
"tcp_port": 4725,
"udp_port": null,
"obfuscated_port": null,
"source_ids": [
"emule-security-web"
],
"source_updated_at": "2026-10-02T16:02:00Z",
"observed_date": "2026-10-03",
"runtime_status": "unprobed",
"risk_status": "unknown",
"default_use": "eligible_for_validation",
"kind": "ed2k",
"protocol": "ed2k"
},
{
"endpoint_id": "ed_cd74a8536f0297e43f99",
"name": "Nordic Server",
"uri": "ed2k://|server|77.42.68.79|4232|/",
"ip": "77.42.68.79",
"tcp_port": 4232,
"udp_port": null,
"obfuscated_port": null,
"source_ids": [
"emule-security-web"
],
"source_updated_at": "2026-10-02T16:02:00Z",
"observed_date": "2026-10-03",
"runtime_status": "unprobed",
"risk_status": "unknown",
"default_use": "eligible_for_validation",
"kind": "ed2k",
"protocol": "ed2k"
},
{
"endpoint_id": "ed_1749651af8b6af20bb96",
"name": "Sharing-Devils No.4",
"uri": "ed2k://|server|91.208.162.87|4232|/",
"ip": "91.208.162.87",
"tcp_port": 4232,
"udp_port": null,
"obfuscated_port": null,
"source_ids": [
"emule-security-web"
],
"source_updated_at": "2026-10-02T16:02:00Z",
"observed_date": "2026-10-03",
"runtime_status": "unprobed",
"risk_status": "unknown",
"default_use": "eligible_for_validation",
"kind": "ed2k",
"protocol": "ed2k"
},
{
"endpoint_id": "ed_801e2a754201c3c505f7",
"name": "MO-Server",
"uri": "ed2k://|server|91.208.162.182|4232|/",
"ip": "91.208.162.182",
"tcp_port": 4232,
"udp_port": null,
"obfuscated_port": null,
"source_ids": [
"emule-security-web"
],
"source_updated_at": "2026-10-02T16:02:00Z",
"observed_date": "2026-10-03",
"runtime_status": "unprobed",
"risk_status": "unknown",
"default_use": "eligible_for_validation",
"kind": "ed2k",
"protocol": "ed2k"
},
{
"endpoint_id": "ed_1d9ae4dc6a91c2279869",
"name": "ed2k-rust",
"uri": "ed2k://|server|85.17.116.222|6082|/",
"ip": "85.17.116.222",
"tcp_port": 6082,
"udp_port": null,
"obfuscated_port": null,
"source_ids": [
"emule-security-web"
],
"source_updated_at": "2026-10-02T16:02:00Z",
"observed_date": "2026-10-03",
"runtime_status": "unprobed",
"risk_status": "unknown",
"default_use": "eligible_for_validation",
"kind": "ed2k",
"protocol": "ed2k"
},
{
"endpoint_id": "ed_29423d6cd95a8ff0d7d8",
"name": "Sharing-Devils No.2",
"uri": "ed2k://|server|85.121.5.137|4232|/",
"ip": "85.121.5.137",
"tcp_port": 4232,
"udp_port": null,
"obfuscated_port": null,
"source_ids": [
"emule-security-web"
],
"source_updated_at": "2026-10-02T16:02:00Z",
"observed_date": "2026-10-03",
"runtime_status": "unprobed",
"risk_status": "unknown",
"default_use": "eligible_for_validation",
"kind": "ed2k",
"protocol": "ed2k"
},
{
"endpoint_id": "ed_67ca89c53e638fafe3b9",
"name": "eMule Cosmic",
"uri": "ed2k://|server|212.95.35.240|4232|/",
"ip": "212.95.35.240",
"tcp_port": 4232,
"udp_port": null,
"obfuscated_port": null,
"source_ids": [
"emule-security-web"
],
"source_updated_at": "2026-10-02T16:02:00Z",
"observed_date": "2026-10-03",
"runtime_status": "unprobed",
"risk_status": "unknown",
"default_use": "eligible_for_validation",
"kind": "ed2k",
"protocol": "ed2k"
},
{
"endpoint_id": "ed_449439c90b437084b2b0",
"name": "Mazinga Server",
"uri": "ed2k://|server|213.141.198.207|4232|/",
"ip": "213.141.198.207",
"tcp_port": 4232,
"udp_port": null,
"obfuscated_port": null,
"source_ids": [
"emule-security-web"
],
"source_updated_at": "2026-10-02T16:02:00Z",
"observed_date": "2026-10-03",
"runtime_status": "unprobed",
"risk_status": "unknown",
"default_use": "eligible_for_validation",
"kind": "ed2k",
"protocol": "ed2k"
},
{
"endpoint_id": "ed_1d3c52855c846492aa58",
"name": "MO-ad-free",
"uri": "ed2k://|server|57.131.35.107|4232|/",
"ip": "57.131.35.107",
"tcp_port": 4232,
"udp_port": null,
"obfuscated_port": null,
"source_ids": [
"emule-security-web"
],
"source_updated_at": "2026-10-02T16:02:00Z",
"observed_date": "2026-10-03",
"runtime_status": "unprobed",
"risk_status": "unknown",
"default_use": "eligible_for_validation",
"kind": "ed2k",
"protocol": "ed2k"
},
{
"endpoint_id": "ed_29aae7e9d0f9c71fbe06",
"name": "Drunken Donkey",
"uri": "ed2k://|server|193.187.90.12|4661|/",
"ip": "193.187.90.12",
"tcp_port": 4661,
"udp_port": null,
"obfuscated_port": null,
"source_ids": [
"emule-security-web"
],
"source_updated_at": "2026-10-02T16:02:00Z",
"observed_date": "2026-10-03",
"runtime_status": "unprobed",
"risk_status": "unknown",
"default_use": "eligible_for_validation",
"kind": "ed2k",
"protocol": "ed2k"
},
{
"endpoint_id": "ed_a1debf19e9cc0aaa46c4",
"name": "MO-24/7",
"uri": "ed2k://|server|212.95.35.240|4323|/",
"ip": "212.95.35.240",
"tcp_port": 4323,
"udp_port": null,
"obfuscated_port": null,
"source_ids": [
"emule-security-web"
],
"source_updated_at": "2026-10-02T16:02:00Z",
"observed_date": "2026-10-03",
"runtime_status": "unprobed",
"risk_status": "unknown",
"default_use": "eligible_for_validation",
"kind": "ed2k",
"protocol": "ed2k"
},
{
"endpoint_id": "ed_2100cf95fa0d285e529e",
"name": "Sharing-Devils No.3 TEST",
"uri": "ed2k://|server|91.208.162.55|4235|/",
"ip": "91.208.162.55",
"tcp_port": 4235,
"udp_port": null,
"obfuscated_port": null,
"source_ids": [
"emule-security-web"
],
"source_updated_at": "2026-10-02T16:02:00Z",
"observed_date": "2026-10-03",
"runtime_status": "unprobed",
"risk_status": "unknown",
"default_use": "eligible_for_validation",
"kind": "ed2k",
"protocol": "ed2k"
}
]
今回の納品と検証の範囲
標準 qBittorrent の精密管理 bridge、HTTPS server.met の raw binary テスト、実 P2P、ファイル操作には引き続き独立した受け入れ条件がある。データ表、HTML、オフライン参考モデルの検査合格は、本番 Engine や全ソースの安全性が検証済みであることを意味しない。
契約、設定、開発引き継ぎの原文
以下は同梱版の Markdown/JSON/SQL/TOML の原文であり、別の要約は作らない。正式実装には ZIP の対応ファイルを使う。出典 URL は明示的にクリックした時だけ開く。
