P2P Downloader v2.3: core architecture and connection governance
Keep source information flowing to every valid target; run a trial when evidence is available, and retain it in the pool when it delivers value. The download count is not a fixed cap, and idle connections are not an achievement.
Article contents
Date: 2026-10-03. This is a design specification, not a deployed product or one that has passed live-network acceptance. This revision fully redesigns discovery and transfer in Scheduler/Component, adds connection governance, and provides traceable tracker/eD2k default sources. Latencies, ratios, and capacities in these files are adjustable initial policies, not measured optimal values.
Markdown, JSON Schema, SQL, and TOML are implementation contracts; HTML is a review view of the same content. reference/model.py
It is only an executable offline decision reference, not a P2P Engine. It does not modify the original repository, open peer connections, send announces, measure network speed, or delete data.
01 | What changes in this revision
The previous version kept most jobs in Store and admitted only a small number for discovery. This version immediately adds every valid target to the discovery and analysis working set. Source information flows back continuously; whichever target is ready enters trial first. The active download pool is sized by sustainable resource headroom. Do not wait until all 1,000 probes finish, and do not let a fixed 5, 8, or 32 transfer slots prevent the remaining targets from obtaining source information.
| Decision | v2.3 requirement |
|---|---|
| Discovery eligibility | All valid targets may participate simultaneously, independently of transfer-pool capacity. Importing 1,000 at once does not create 1,000 Engines or pre-create payload files. |
| Half-connection | Interpret the user's intent as short-lived source probing: after the protocol handshake/necessary metadata completes, save the evidence and release connections that can be released. Do not deliberately leave TCP SYN connections half-open. |
| Connection concurrency |
Remove the fixed task-count cap; connection_window=auto. FD, memory, system pressure, and remote protocol rate limits still create dynamic backpressure; sockets cannot truly be unlimited.
|
| Trial and active transfer | Both are elastic resource sets, not fixed numbers of slots. Useful data, stability, and cost determine promotion and demotion. |
| Dedicated supervision |
Scheduler contains a
PoolSupervisor, which continuously observes downloads, rotations, and the observation area; connection governance is separately handled by
P2P Connection Manager .
|
| Blocking | Separate narrowly scoped disconnects, temporary avoidance, revocable quarantine, and manual persistent blocks. Zero traffic or country alone cannot establish malicious intent. |
| Default sources | Include traceable candidates and an update policy. Candidates may be validated first; that does not mean all endpoints are used simultaneously or confirmed safe. |
This revision replaces v2.2's fixed probe/transfer slots, dominance by a single scheduling score, and conclusion that no new connection component is needed. Retained Split Config files, source tabs, Component.Downloader + Engine, SQLite-backed Store, centralized Metrics storage, incremental writes, hash bucketing, completed-file moves, and dead-file cleanup. VPN Manager and product User/login systems remain outside this core scope.
02 | Overview: nine logical components, not nine microservices
A ninth logical component is recommended: P2P Connection Manager. Previously, Scheduler only needed resource summaries. Now it must also track individual connections across Components, analyze evidence, avoid false blocks, execute disconnects, and review policies. This responsibility has its own state and contracts; it should neither be buried in Metrics nor require Scheduler to operate protocol sockets directly.
| Component | Owned decisions and state | Boundary |
|---|---|---|
| P2P Web View | Download pool, source tabs, connection table, evidence details, and operation status | React + Vite + Tailwind, Traditional Chinese, dark-only; no direct Engine connection. |
| P2P Manager | API, Component Registry, entry points for intents, Operations, and domain events | Does not replace Scheduler's scheduling or Connection Manager's maliciousness judgments. |
| P2P Config | Split-file defaults, source feeds, schema, effective snapshots, configuration versions | Remote candidate lists cannot change configuration directly; Components read the same snapshot version. |
| P2P Search | Keyword search, exact resolve, per-source discovery scheduling | Continuously supplies sources for every registered target; does not own trial or active transfer. |
| P2P Scheduler | Trials, active pool, observation area, resource optimization, and fair rotation | Owns a Task's download intent, not wire/piece operations; receives availability and cost summaries from Connection Manager. |
| P2P Component | Protocol adaptation and execution capabilities | Contains Search Provider, Downloader, Engine, Connection Agent, Resource Reporter, and Metrics Publisher; not one process per Task. |
| P2P Store | SQLite tasks, content identities, snapshots, policy evidence, command and file journals | A single write owner; stores neither every peer's per-second time series nor payloads. |
| P2P Metrics | All observation samples, time series, distributions, monitoring retention | Components only push; they do not write to the monitoring DB or monitoring disk spool. Metrics failure does not mean download failure. |
| P2P Connection Manager | Connection index, service eligibility, anomaly evidence, source avoidance, and blocking decisions | Adds no firewall or VPN; only Connection Agent can execute concrete actions inside Engine. |
For the first version, a single Rust p2pd containing control/analysis modules is recommended, with multiple Component hosts arranged according to native engine processes. Connection Manager is a logically independent, testable module; split it into a process only if CPU/latency measurements justify it.
03 | 1,000 at once: two paths running together
Path A runs continuously: Batch validation and deduplication → register all valid targets → Store history/metadata → shared source queries → lightweight handshake/available ranges → save
SourceSnapshot → release temporary connections → update candidate ranking.
Path B does not wait for all of A to finish: Targets with fresh evidence → trial set → active download pool → PoolSupervisor → maintain / expand / rotate / observe → return to trial on expiry or new-source events.
All 1,000 discovery jobs can enter the runnable set at the outset. Asynchronous I/O does not require sockets for 1,000 × all peers to open in the same millisecond. Share tracker transports, eD2k server sessions, Kad routing tables, and identical metadata already being fetched. Coalesce source queries for the same content + realm + configuration version, and reuse results across multiple selected ranges.
Source protocols' reask/announce intervals must be respected. BT tracker responses include the interval before the next normal request; choked
also means the remote side is not currently sending data. These are normal protocol semantics, not intervals Scheduler may arbitrarily shorten. S2
There is no whole-batch barrier. If target 900 replies first, it enters the rankable set first; a timeout on target 1 does not block others. Reject only the item with invalid input. Every successfully persisted item must have its own task_id, result, and recoverable import operation.
04 | A precise implementation of unlimited half-connections
libtorrent calls connecting half-open; handshake
is an established connection waiting for the protocol handshake. Obtaining peer bitfields/queue information usually requires more than a TCP connect. S5
This specification uses probe_session for short-lived probes, avoiding the mistaken description of information gathering as TCP half-open. UDP trackers/DHT may not have a dedicated TCP connection; the connection table must distinguish logical sessions from actual socket counts.
ProbeGovernor builds elastic windows solely from cost, without a fixed
max_probing_tasks=32:
window_headroom [count] = floor(min(FD headroom, available memory / p95 bytes per probe) × pressure reduction factor)
new_dials_this_tick [count] = min(window_headroom, global dial tokens available this tick, per-source tokens)
tokens_added [count] = adaptive_rate [attempts/second] × elapsed [seconds]
The window limits simultaneous live probes, while the token bucket limits new attempts per second; multiplying them would be a unit error. FD headroom subtracts current usage and control-channel reserves; count each physical transport once. NAT state, ephemeral port exhaustion, event-loop lag, and surges in DNS/dial timeouts must feed back to Governor. If NAT state is unobservable, do not claim to know its capacity; use failure rates and conservative growth instead. Completed probes immediately return resources and have explicit termination deadlines to prevent half-open connections from exhausting FDs.
When releasing a connection, save: target content and selection digest, source endpoint/identity strength, advertised coverage, service/queue status, TTFB or its absence, report sequence, observation time, expiry time, and error classification. Speed can only be measured by payload trials; a fast handshake does not imply fast downloads.
Exceptions include shared eD2k server/Hub sessions, DHT that must remain resident, and native protocols where disconnecting loses a valid queue ticket. Release only task-local probing resources; a disconnect-after-probe rule must not break source discovery for an entire Component. Track ticket-maintenance costs separately and never silently start unbudgeted transfers.
05 | State model: separate jobs, connections, and source quality
| Task main phase | Entry condition | Exit condition |
|---|---|---|
collecting Collecting |
Valid intent submitted |
Sufficient fresh source evidence allows
rank_ready; unfinished targets do not affect it.
|
rank_ready Awaiting trial |
Content/service path is discoverable; trial is allowed | Receive elastic trial resources; return to collection when evidence expires. |
trial Trial |
Downloader confirms native service startup or bounded waiting |
Available and stable → active; insufficient samples / remote queue / failure →
observing.
|
active Active pool |
Useful data proven and resources available |
On completion, verify; on local pressure, enter held; when remote is unavailable, enter
observing; retain checkpoints during fair rotation.
|
observing Observation area |
Currently not worth holding expensive resources for long | Review/retry when new sources arrive, cooldown expires, or a queue ticket becomes serviceable. |
held Retained |
User pause, local disk/engine failure, unknown command outcome | Recovery must match the specific cause; do not record source failure. |
finished Transfer phase finished |
All required data acquired and native verification completed | Moves/sharing are managed separately by placement state. |
observing.reason
Must be specific: NO_SOURCE, MISSING_SEGMENTS, REMOTE_QUEUE, SERVICE_TIMEOUT, LOW_MARGINAL_YIELD, STALE_EVIDENCE. dead_candidate
belongs to the later long-term file lifecycle; it is not a synonym for observation.
Source quality is an orthogonal field: high / available / unknown / incomplete / low; safety evidence is
unknown / observed_anomaly / attributed_invalid / manual_deny. The UI can correctly show incomplete · actively downloading · safety unknown; high speed does not clear a safety quarantine.
06 | Source completeness and priorities
Evaluate against the same native content, layout, and selection. The locally verified set
V, the missing set M, and the set advertised by fresh sources 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)
When no units are missing, enter completion verification and stop searching for seeds. Sources with complementary partial data can still complete the download. If all sources lack the tail pieces, even numerous sources still yield
incomplete. Protocols without native bitfields retain
unknown; do not prohibit useful downloads because a field is absent.
Priority 0..999, with lower values taking precedence; first pass checks for user intent, policy, deduplication, native retry floors, and resource eligibility. Ranking features include fresh supply coverage, rare-piece value, useful-speed quantiles, stability, TTFB, connection/I/O cost, historical success when eligible to serve, waiting deficits, near-completion benefit, and requeue cost. Do not score speed or safety using country or the numeric magnitude of peer IDs.
Ranking cannot replace service guarantees. Unknown jobs receive a discovery deficit; slow sources holding the only copy of rare pieces receive a rescue budget. Manual weights cannot bypass blocks, full disks, or unknown execution state.
07 | Trial Controller: connecting alone does not earn promotion
Trials fetch only data actually needed, retaining samples for later use rather than downloading junk for speed tests. Initial bytes/time limits are resource windows only; before a verification unit is fully fetched, do not describe
verification_pending as a hash failure.
trial time is divided into wall-clock and qualified-service-clock. Remote queues/chokes, local rate limits, disk blockage, and report gaps do not count as time when the peer promised service but failed to send data. Evaluate TTFB, consecutive windows, and unique payload only after native service is obtained.
Requirements for promotion into the active pool:
At least three valid observation windows; an actual increase in missing unique bytes; acceptable error/duplicate ratios; no current safety quarantine; and incremental benefit exceeding trial cost relative to the effective capacity of that protocol and host. min_qualified_ms=15000, 5 seconds per window, and CV ≤ 0.75 are starting points for tuning, not universal guarantees of success.
Do not discard large, slow files or long-RTT transfers solely for missing a fixed MiB/s threshold. Slow but stable protocol service may qualify through fair/rescue promotion. Small files completed during trial go straight to verification without forcing three windows. If a verifiable unit exceeds the window, extend the issued byte budget or return to inconclusive; never exceed the budget.
08 | Elastic download pool: task count is an outcome, not a target
PoolSupervisor collects live resource summaries, CapacityController
performs global adjustments, and FairRotator chooses specific candidates and yielding tasks. All three are internal Scheduler modules, not another piece scheduler competing with Engine for control.
The goal is to maximize sustainable useful throughput, while retaining headroom for control, verification, disk writes, and interaction. A 94% target is adjustable, not a promise to run network, CPU, and disk all at 100%. One resource will bottleneck first; spare capacity elsewhere is a reasonable result.
| Observation | Control action | Prohibited behavior |
|---|---|---|
| Five downloads use only half the known bandwidth; I/O and CPU are healthy, with candidates available | First check whether active sources can accept more requests/peers; if insufficient, automatically add trials, with the pool naturally growing after promotion | Stop adding because the maximum is five. |
| Network has headroom, but disk backlog and write latency keep rising | Reduce new transfer grants, drain low-benefit jobs, and maintain verification and flush | Blame sources for zero speed and blacklist them. |
| Network approaches its target and backlog is stable | Keep high-benefit incumbents; reserve a small share for discovery and challenger candidates | Disrupt stability to accumulate more connections. |
| Adding jobs brings no useful-speed improvement while increasing cost | Roll back the latest expansion and use challengers to replace jobs with low marginal benefit | Add indefinitely or pause and restart the entire pool together. |
| Unknown network capacity | Probe gradually using useful data and cost; show estimated/unknown in the UI | Claim available Internet bandwidth from a 1 Gbit/s NIC. |
| Stale reports | Stop aggressive expansion, retain native safe resource controls, and resynchronize | Treat missing samples as 0 B/s or idle resources. |
| No more useful sources | Record SOURCE_LIMITED, and maintain observation/retry |
Guarantee saturation or send unrelated traffic to fill bandwidth. |
net_utilization Use counters from the same bottleneck domain and byte layer; unique_goodput
is the benefit after removing duplicate/useless data and cannot share a denominator directly with NIC wire speed. Account separately for downloads, uploads, control/DNS overhead, traffic from other processes, and shared-device I/O.
Each disk/filesystem has its own pressure domain. A slow HDD should constrain only jobs writing to it, without freezing another idle SSD. Linux PSI can signal CPU, memory, and I/O stalls, but does not fully measure network capacity or disk throughput. S14
09 | Control algorithms, oscillation, and fairness
Raw samples are about 1 second apart, decisions about 10 seconds apart. After a change, wait at least 30 seconds or the native startup cost, whichever is longer, before judging success. Fast protection events need not wait. Use robust EWMA/medians over the past 10–30 seconds for throughput, and p95 for latency and memory cost.
If local_pressure >= 1: drain yielding jobs with low marginal benefit and stop aggressive expansion
Else if data is stale or the last expansion has not stabilized: hold
Else if network < 90% of target and local_pressure < 0.70: increase the trial resource budget
Else if additions show no positive marginal benefit for two consecutive windows: roll back / rotate candidates
Else: maintain the active pool, with a small ongoing share for discovery, deficit repayment, and rare-piece rescue
Start with an expansion step estimated at 25% of the currently affordable population, and a reduction step of 15%. Actual admission still checks the resource-vector ledger item by item. Change at most one main factor at a time (task population / per-job peer credit / request window) so bottlenecks remain identifiable. Do not treat ceil(active×1.25) as the permanently correct download count.
Use incumbent/challenger rotation: under equal conditions, the candidate's estimated utility must be at least 15% higher, or its deficit must be due. Typical minimum residence is 120 seconds, with at most about 5% of the population rotated per round. These may be relaxed for Component startup/queue costs; clearly useless behavior, protocol violations, or user cancellation can be handled immediately.
Retain effective service debt: sleeping/rate-limited time is not service. Remote queue tickets do not confer download eligibility but have retention value. Sharing/uploads also consume resources and must enter upload, disk-read, and concurrency ledgers rather than protecting download RX alone.
10 | Connection Manager: explain every connection
Internal modules: ConnectionRegistry →
ProtocolStateNormalizer → ServiceEligibility →
EvidenceAnalyzer → PolicyResolver →
CommandOutbox. Also includes
ReputationLedger and expiry reviews. Accept reports only from registered Components/Collectors; peer-claimed statistics are not local measurements.
| Field group | Required data | Semantics |
|---|---|---|
| Unique identity | connection_id、component_id、run_id、native_connection_key、transport_handle_id | Reconnecting to the same endpoint creates a new connection_id; restarting a process creates a new run_id, preventing late disconnect commands from harming new connections. |
| Associations | realm、protocol、roles、task_ids、source/tracker/server provenance | One transport may be associated with multiple logical jobs; count its physical FD only once. |
| Endpoint / identity | IP + port or overlay Destination, peer_id/user_hash, strength of identity proof | BT peer IDs and eD2k user hashes do not automatically establish trusted human/device identities. |
| Service eligibility conditions | handshake、remote_choked、interest、remote_queue_rank、slot_granted、outstanding requests、recv credit | can_serve_now Must follow the native protocol; unknown is not false. |
| Data quality | payload/unique/duplicate/discarded/verified bytes、hash failure attribution | Keepalive carries bytes but is not file progress; unfinished hash verification is not corrupt data. |
| Performance | TTFB, request latency p50/p95, RTT method, goodput window, qualified stall duration | Specify each measurement method/window explicitly; do not confuse connect RTT with ongoing RTT. |
| Local interference | local throttle、disk backlog、hash queue、memory/event loop、report gaps | Used to exclude false judgments; network headroom does not disprove disk congestion. |
| Geography / network | country、ASN、database version、observation age、unknown reason | Query locally offline; do not send all peer IPs to third parties. Country adds no risk score. |
libtorrent peer_info native APIs include pieces, payload speeds, pending disk-write bytes, request timeouts, choke/snubbed status, and more; Whether qBittorrent WebAPI exposes the same details requires separate testing; underlying fields do not prove adapter access. S5
10.1 Connection ID levels must be separated into three dimensions
connection_id is the local tracking key; peer_id/user_hash
is the remote protocol identity; High ID/Low ID is eD2k reachability information. These are not the same type of level. Official eMule documentation explains that High ID/Low ID comes from the server's judgment of inbound reachability; a larger ID number does not mean a better level. S18
The design stores
reachability_class=direct/callback_needed/unknown, observing server/time, callback results, and native ID type. Sources requiring callbacks may cost more, but cannot be classified as incomplete or malicious on that basis; scheduling depends on whether needed data can actually be obtained. Country/ASN are only for distribution and diagnostics, not country allowlists/denylists or safety percentages.
11 | Zero traffic: count faults only when eligible for service
Classify connection roles first: payload_peer / tracker / ed2k_server / dht_session / hub / metadata /
provider / upload_only. Trackers and eD2k servers provide information/indexes, not file payloads; download-traffic thresholds do not apply. Official eMule documentation also defines servers as entry points to file and source indexes. S11
Qualified no-response timer qualified_idle_ms Accumulate only while all of the following hold:
payload role + a range we lack that the peer advertises as available
+ handshake complete + native remote state permits service (not choked/queued)
+ an actual outstanding request has been sent + recv/write credit issued
+ no known local bottleneck + no shared network-domain failure + fresh reports
Reset the timer on each valid unique-progress event; protocol keepalives do not reset it. Do not count wall-clock time while qualified time is paused. Apply bounded cancellation/retry to overdue requests; repeated failures lead to
disconnect + temporary avoid, preserving evidence. If no request exists, the peer is legitimately queued, or missing ranges do not intersect, release unused connections at most; do not add maliciousness strikes.
Set the deadline using
max(protocol floor, 8×RTT, request size / expected lower-bound rate +
margin), then constrain it to an adjustable range. RTT alone cannot judge large requests. The base reference uses 30 seconds as a test threshold; production Engines must use their native request deadlines and be no more aggressive than the protocol permits.
Traffic without progress needs separate classification: duplicate endgame blocks, already-verified ranges, useless messages, buffered but unverified data, or wrong ranges sent by the peer. Small amounts of late unsolicited data for which no local request is outstanding should not always count as attacks; evidence must account for cancellation races and protocol-permitted behavior. S2
12 | A blacklist is not a single permanent IP list
| Name | Trigger | Scope / expiry | Recovery |
|---|---|---|---|
disconnect Disconnect this connection |
Unused connection / qualified timeout / confirmed malformed data | Exact run + connection, without requiring a permanent penalty | May reconnect based on new evidence. |
avoid Temporarily avoid |
Eligible but returns no useful data; local interference ruled out | Default: realm + content + source; starts at 60 seconds, doubles for independent repeat offenses, up to 1 hour | Permit only one trial at expiry; success clears/decays the penalty. |
quarantine Quarantine |
Attributable corrupt data, protocol violations, malicious metadata behavior | Narrowest provable scope; default 1–24 hours, with evidence retained | Reconcile / retry trial / manually revoke. |
manual_deny Manual block |
Explicitly specified by the user | May be permanent; must show scope and side effects | Manual unblock. |
Replaying the same evidence_id must not add another strike. Policies include config_revision, expires, original reason, and actual enforcement; requested, enforced, unsupported, unknown
are shown separately. Source A failing to serve file X must not automatically block file Y, other peers behind the same NAT, an entire ASN, or a whole country.
When multiple peers contribute to one corrupt piece, do not label every peer malicious. First isolate the verification unit and local write/RAM faults, then retest with attributable single-source data or use verified native attribution. Native libtorrent also uses a parole mechanism for hash-failure contributors instead of immediately banning all of them permanently. S5
Unblocking cannot be a UI-only change. Revoke the native policy and reconcile it. An adapter supporting only permanent IP bans must not pretend to offer revocable single-connection avoidance.
13 | Capability limits in judging phishing, entrapment, monitoring, and safety
The system can detect observable behavior, not the peer's true intent. It can analyze path traversal, dangerous URLs/control characters, invalid wire lengths, compression bombs, attributable hash failures, discrepancies between source claims and behavior, repeated unusable sources, and metadata asking users to open external pages or enter credentials. The UI renders such content only as plain text and warnings; it never automatically executes it, previews scripts, or opens links.
It cannot guarantee detection of honeypots, copyright monitors, or passive loggers.
An endpoint that follows the protocol perfectly and serves correct data may still record your IP, hash, and timestamps. Normal transfers, HTTPS, peer IDs, country, cloud ASN, or listings on many websites do not prove that it is not a trap. surveillance_intent=unknown
Do not package this as falsely precise percentage scores.
Keep risk classification separate from performance evaluation: availability_evidence, integrity_evidence, protocol_behavior, provenance_confidence; only concretely verifiable evidence rules may automatically impose narrow restrictions. AI may later help explain or cluster evidence, but LLM speculation alone must never trigger a global ban.
For anomalies such as provider responses injecting internal-network/management ports, floods of broadly similar sources, DNS redirects, or metadata changes, first retain provenance and quarantine the affected candidate/source. A short network outage must not blacklist all sources.
14 | Capability interfaces: precise governance needs more than coarse adapters
ComponentCapabilities Separate reporting from enforcement by version. Required entries: 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. Values are
native / observed / unsupported, with the tested fixture version attached.
The inspected qBittorrent banPeersAction() parses endpoints and then calls
banIP(), so it cannot implement a command that closes only one connection. S6
| Backend | Requirements in this version |
|---|---|
| Custom REMULE | Engine provides per-connection IDs, request/part progress, queues, precise disconnect, content-source avoid, and revocable policies. These must be implemented, not merely shown in the UI. |
| Stock qBittorrent WebAPI |
Keep available torrent/peer summaries; do not enable speculative automatic bans when per-connection service eligibility is unknown. Precise actions return
unsupported_scope.
|
| qBittorrent full-governance mode | Requires a maintainable Engine bridge, controlled extension, or explicitly reviewed patch connected to underlying connection handles; define separate tasks and acceptance criteria. Do not claim that libtorrent's public API already guarantees all per-connection closing capabilities. |
| slskd/DC/Kubo/I2P | Retain each one's queue/Hub/provider/Destination; implement only tested capabilities, with null + reason for unavailable fields. Do not force country fields onto overlay identities. |
Thus, full-precision automatic connection governance is BLOCKED for adapters lacking the required capabilities, but source discovery, coarse job scheduling, and honest reporting can be implemented first. This is capability tiering, not silently reducing the user's requirements.
15 | Tracker and eD2k: collect broadly, use in tiers
This package includes 122 deduplicated tracker endpoints and 12 current eD2k server candidates. Trackers combine ngosang's 75 entries and XIU2's 122; the former is entirely contained in the latter in this snapshot. Deduplication is at URI level, not proof of 122 independent operators: DNS aliases, shared IPs, or common teams can still overlap.
| Source | Retrieved in this revision | Purpose of the default | Safety / integrity limitations |
|---|---|---|---|
| ngosang/trackerslist | Snapshot updated 2026-10-02, 75 entries; original Git blob hash checked | Versioned candidates, conditional daily updates | Maintainer health checks, not certification against maliciousness or monitoring. |
| XIU2/TrackersListCollection | 2026-10-02 README; all.txt has 122 entries, Git blob hash checked | Expand candidates without duplicate injection into Engine | Includes HTTP/HTTPS/UDP/WSS; overlaps with other aggregators. |
| eMule-Security.org | Official page listed 12 entries at 2026-10-02 16:02 UTC | Include IP + explicitly stated TCP port in candidate defaults | No server connections were made this time; no guessing UDP/obfuscation ports. |
| newTrackon | Official page and stable-list documentation | Supporting health and uptime reference |
/list Dynamically loaded; machine API not verified, so none invented
/api/....
|
| Historical gruk / peerates lists | Historical official/community records are traceable | Not directly included in enabled defaults | Old URLs, HTTP, and unconfirmed current maintenance status; do not relax validation merely to increase the count. |
The latest page has one fewer entry than the previous 13-entry snapshot. sources/ed2k-previous-snapshot.json
and
catalog/ed2k-source-diff.json
retain this difference; removed sources are no longer selected automatically, but delisting alone does not label them malicious.
The HTTPS server.met raw binary was not obtained this time, so the feed is configured but disabled by default; 12 page-derived candidates are available for startup validation. A tool read failure does not prove the HTTPS URL is unusable; automatic fallback to HTTP is prohibited. Fixing this requires a real HTTPS fetch, bounded parser fixtures, and source-update tests; enable the feed only after these complete.
WSS endpoints are candidates for WebTorrent-specific capabilities, not unsupported standard BT Engines. Sensitive ports such as UDP/25 require manual review; being in a public list does not authorize automatic protocol traffic. Even trackers on common low ports need exact role/scheme allowances, never a blanket allowance for general peers.
16 | Config defaults and automatic update governance
config/source-feeds.toml Defines feed URLs, authorized scope, update timing, limits, source lineage, and validation policies. catalog/trackers.json, catalog/ed2k-servers.json
is traceable bootstrap data. Every Component still obtains published effective snapshots through ConfigReader rather than embedding scattered servers/ports independently.
Use this transactional path: the Component's shared CatalogFetcher downloads only allowed sources → parser returns typed candidates → Store stages candidates/provenance → Connection Manager applies endpoint/behavior policies → Config publishes a new immutable catalog revision. Raw feeds cannot carry shell commands, extra headers, credentials, arbitrary include paths, or overrides of local policy.
Automatic updates run after the user enables the corresponding Component, not upon opening HTML or installing the spec. Use conditional requests every 24 hours plus jitter; only the two tracker text feeds actually retrieved are enabled by default. New endpoints begin as validated/probing; failed updates retain the last known-good configuration. Manual pin/deny always overrides feeds.
Large additions/removals, domain ownership or DNS/certificate anomalies, many non-public addresses, and source-format changes enter a quarantine diff for review. HTTPS and Git blob digests protect source/transport and snapshot consistency; they do not prove endpoints are benign, and unverified signatures must not be called verified.
17 | Automatic safety awareness and source-benefit analysis
| Stage | Checks | Result |
|---|---|---|
| Fetch | HTTPS, fixed sources, valid TLS, at most 2 same-origin redirects, no downgrade, timeout/encoded-byte limits | On failure, retain last-good and emit a feed event. |
| Parse | Raw/decoded byte limits, entry limits, strict ports/URLs, MET tag/count bounds, compression bombs | Reject anomalous data; parsing must never execute or connect. |
| Address | Literals, all A/AAAA/CNAME final addresses, IPv4-mapped IPv6; reject loopback/private/link-local/multicast/reserved | Revalidate on every dial and after every redirect; pin the IP validated for that attempt to the actual connection, preserving TLS hostname/SNI. |
| Protocol | Valid handshake/transaction/request correlation, response limits, source-address checks |
usable_observed Proves usability only for this attempt; temporarily quarantine malformed responses.
|
| Semantics | Public/private/I2P realms; content hash/scope; eD2k index versus peer | No cross-realm injection or sending private hashes outside. |
| Continuous observation | Qualified queries, incremental unique sources, connection success, actual service rate, time to first byte, bad-result ratio | Rotate sources by marginal benefit rather than accumulating traffic according to list length. |
These SSRF defenses must be enforced on actual fetch/connect paths; a one-time string-parser check cannot handle DNS rebinding. OWASP guidance on validation and redirect/DNS risks serves as the implementation reference. S12
Metric denominators must be qualified: new_usable_sources / qualified_lookup, payload_served_sources / qualified_connected_sources. Duplicate sources do not count as new results; zero queries means unknown, not 0% or 100% success. Shared network-failure windows must not penalize every source. Track claimed completeness, candidate domain/IP counts, and actual useful pieces received separately; a 100% claim does not automatically mean completion is possible.
A tracker's UDP connect does not mean valid announce peers were received. BEP 15 defines connect/announce/scrape; store each stage's result separately. Do not send extra test announces for all the user's hashes. S15
Private torrent: When metadata explicitly states
private=1 , do not add public trackers/DHT/PEX. For magnets without metadata, follow the original source information and selected privacy policy first; unknown does not authorize public defaults. Inject according to policy only after public evidence is obtained. BEP 27 requires private torrents to use only sources from their private trackers. S3
18 | Downloader and Engine inputs, outputs, and commands
| Interface | Input | Output / required effect |
|---|---|---|
Discover |
task/content/realm/Config revision/deadline | Metadata + source snapshots, coverage quality, expiry; no transfer grant required. |
ProbeSources |
Candidate source set, dynamic resource window, desired scope | Report and retainable tickets; release task-local connections when probing finishes and report the release result. |
StartTrial |
Task revision、source snapshot、byte/I/O/network lease | Run-bound operation + qualified progress; stale sources cannot directly establish high availability. |
SetDownloadBudget |
Task / run / generation + multidimensional resource vector | Requested/effective budget, enforcement strength; return unsupported if unavailable. |
PauseOrObserve |
Reason and intent to retain checkpoint/ticket | Observed paused / retained queue / unknown; release all accounting only after stopping is confirmed. |
ConnectionCommand |
run+connection+policy_revision+scope+action+evidence | applied/already_closed/unsupported_scope/stale_target/unknown/failed。 |
ResourceReport |
Engine measurements | Local pressure and source/job/connection summaries go directly to Scheduler/Connection Manager, not through polling historical Metrics DB data. |
MetricsPush |
Raw observation batch + run / sequence / lost_count | P2P Metrics centralizes persistence; publisher memory queues are bounded and may drop data with recorded gaps. |
For internal App interface JSON contracts, see contracts/control.schema.json; for new Web APIs, see contracts/control.openapi.json. Example requests contain no provider credentials and accept no arbitrary native API paths.
Actual socket creation, piece selection, normal protocol timeouts, and immediate parser rejection belong to Engine. Scheduler adjusts download budgets; Connection Manager imposes narrower source/connection restrictions. The effective allowed set is their intersection. Connection Manager cannot bypass user pauses or exceed Scheduler budgets.
18.1 Types and default semantics
run_id, connection_id and native keys are opaque identifiers, not decoded trust scores. Report sequence is a canonical decimal string, limited in SQLite to 0..9223372036854775807; start a new run at the limit rather than wrapping. Other API counts/times are constrained to JS safe integers; long-lived byte counters use decimal strings checked against the uint64 maximum. null always means unknown/unsupported, accompanied by
missing_reason, not zero.
SourceSnapshot is bound to selection_digest. TTL expiry only reduces confidence in availability, not file completeness; callbacks must match component/run/seq. ConnectionReport 's
service_expected is the Component-normalized result of handshake, interest, queue, request eligibility, and credit; include raw details too when available. qualified_idle_ms must accumulate valid observations from a monotonic clock within the same service generation; never fill sampling gaps with zero.
For multiplexed transports, content-source avoid restricts only the specified work. If the engine can only close the whole transport while other Tasks are receiving useful service, do not present this as closing only that job; automatic governance returns
unsupported_scope, preserving narrow deny-new-request rules. A manual close-this-physical-connection action must show all affected Tasks.
If-Match: "rN" corresponds to expected_policy_revision/expected_revision on the command; reject mismatched body and header values. N for creating a manual policy is the current effective Config revision (returned as config_revision/ETag by the policy list); revocation uses that policy row's revision; connection commands use the reconciled policy version. Do not mix these. Persistent manual policies may have no current connection: policy_commands stores each Component's publication/revocation result without inventing a connection_id. request_id is at most 128 characters and deduplicated within that management instance; resending the same body returns only the original operation. Browser mutations accept only same-origin JSON; CLI may use private UDS. There is no product authentication, and this origin check is not claimed to resist malicious same-UID processes.
19 | Recoverable commands and races
Every command contains request_id, payload_digest, expected_run_id, connection_id or task_id, and expected_revision/policy_revision. Store operation + outbox first, then send to Engine. The same request_id with a different body returns 409; stale run/connection returns stale_target, and must not affect the new socket created by a reconnect.
No ack means
unknown, not disconnected or unblocked. Reconcile actual connections or native command results read-only; never blindly resend with a new request_id. A purely local close of an already-missing handle may return
already_closed, but only after checking the same run and identity.
Resource accounting retains
pending / active / draining / unknown / released. Reduced/paused grants still count as potential transfer load until confirmed. A remote queue that may start automatically still consumes credit available for automatic use; changing its label to
observing must not create fictitious free resources.
If Store cannot write, stop new dispatches and policy expansion. Engine may still immediately reject parse errors or disconnect under published policies; self-protection events go to bounded memory and are marked unpersisted. If Metrics fails, retain the live ResourceReport path, mark historical observation gaps, and do not stop healthy downloads.
Use monotonic time for report freshness and service timing. Persist expiries in UTC, retaining original observation and local receive times. After restart, clock rollback, unclear expiry ranges, or sequence jumps require new observations: never extend blocks or count unobserved service time. Component re-registration changes run; old IDs cannot carry violation counts onto other connections.
20 | SQLite and data ownership
| Data | Owner / storage | Persistence method |
|---|---|---|
| Tasks, download success/failure, native hashes, deduplication claims, file journal | P2P Store/SQLite | Keep the core tables; transactions must not split. |
| Discovery targets and recent schedulable snapshots | P2P Store |
discovery_targets, source_snapshots; include expiry / selection / report seq.
|
| Connection open/close indexes and evidence affecting policies | P2P Store |
connection_identities, connection_tasks, connection_evidence; not every 1-second sample.
|
| Temporary avoidance, quarantines, commands, and results | P2P Store |
connection_policies, connection_commands/policy_commands; target-scope indexes and expiry reviews.
|
| Source candidates and publication lineage | P2P Store+Config | Store stages facts/revisions; Config alone publishes the effective catalog. |
| Per-connection speed / RTT / country history | P2P Metrics' own storage | Locally redacted detail + aggregates; not a second system for deciding Task success. |
| Payload / native resume / range journal | Engine-managed working directory | No payload BLOBs in SQLite; avoid dual writers. |
tasks.execution_state still represents Engine execution reality; discovery_targets.phase
is Scheduler's scheduling phase, not another copy of the same state. Handle transitions involving both in one transaction: desired paused → phase held; keep lease draining until native pause is confirmed; completed verification → phase finished. New migrations first put existing running Tasks without run evidence into held/RECONCILE_REQUIRED, never assuming active; return to trial only after native reconciliation.
store-base.sql is the original v2.2 reference, while store-v23.sql
is the additive schema. The migration runner first checks baseline hash/version, backs up, takes exclusive schema-migration access, and uses a transaction. Commit the version only after foreign_key_check/integrity_check pass; never run directly against an arbitrary unknown DB.
Store uses SQLite WAL, one writer, short transactions, read snapshots, and bounded batches. The same coordinator schedules checkpoints to avoid long reads blocking reclamation. Production WAL deployments must include the SQLite WAL-reset fix; this spec retains the policy of at least 3.51.3 or a verified backport. A local schema smoke test is not production-version acceptance. S13
21 | Pool rotation must not disrupt the file lifecycle
Do not preallocate whole-file payloads or reserve full capacity for all targets. Account separately for actual allocated blocks, native buffers, the next write window, WAL/metadata/move staging, and other byte costs. Sparse logical size exceeding allocated blocks does not mean physical space is full; show both in the 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 is a stable hash including protocol namespace/native content identity. Magnets without native hashes use explicit provisional keys, later migrated through the journal without silently changing paths. Filesystem names are not file identities; display the full original title without treating it as an arbitrary path.
Rotation/observation only pauses jobs and saves checkpoints; do not move files to the dead-file directory on every observation transition. An expired source snapshot does not invalidate data. A dead candidate requires repeated qualified observations over the long term and no valid queue, pin, writer, or unknown operation.
Before a completion move, confirm writers have stopped, verification is complete, and the manifest is fixed. Use atomic rename on the same filesystem; across devices, copy → fsync → verify → publish → update journal → delete old files. Preserve recoverable data if any step fails. Path changes for a sharing Engine require native API coordination; never directly move files still in use.
Automatic cleanup is off by default. When enabled, follow Config retention, quarantine before purge, and retain tombstones after deletion. Low speed, an avoided individual source, or temporary tracker downtime alone cannot justify cleanup.
22 | React workbench: every decision is reviewable
Retain Noir Workbench's dark theme, Traditional Chinese, system fonts, and fixed semantic colors; no new login/i18n/Next.js. Source searches remain in tabs with each source's native fields. Use cursor pagination/virtual lists for large datasets instead of remounting whole tables every second.
| View | Required display |
|---|---|
| Download pool | Counts for collecting / trial-ready / trial / active download / observation / held / complete; distinguish actual active tasks from tasks with payload traffic. |
| Control state | Configured/estimated capacity, unique goodput, network-layer traffic, I/O backlog, reasons for expansion/reduction/rotation, and the last perturbation result. |
| Connection analysis | Type, task/source, ID, country/unknown, speed, coverage, service eligibility, qualified zero-progress seconds, local interference, policy, and actual enforcement. |
| Source catalog | Candidate / observed in use / quarantined / retired, feed provenance, last check, update diff, native endpoint/port, and source benefit. |
| Detail Inspector | Full URL/hash/native state, evidence timeline, revocation reason, and trial results; confidential queries are excluded from public catalogs. |
Separate close this connection, temporarily avoid this source, and block this IP actions. Disable unsupported precise actions with a reason; never substitute a broader action. False blocks can be revoked after checking native results; unknown operations must not show success toasts.
Treat source names, client strings, and messages as untrusted text; prohibit
dangerouslySetInnerHTML. Preserve filters, selection, scroll, drafts, and focus across event updates; each detail view updates only its matching object/run. Verify 200% browser zoom, forced colors, reduced motion, keyboard access, and long hashes separately.
23 | Resource and performance targets: measurements required, not guarantees
Developers record the target test baseline's CPU/RAM/storage/network and Engine build. Planned acceptance: all 1,000 valid targets are visible to discovery scheduling after registration; a single returning result may start that target's trial; source timeouts do not block local APIs; backpressure produces no unbounded mailboxes/connection retries; and additional sources must not cause sustained net-throughput degradation without rollback.
In synthetic loopback tests with enough controllable sources, the controller must add trials when five jobs use only 50% of capacity, and stop growing when the target or a new bottleneck is reached. Compare controller benefit on the same workload using goodput, tail latency, memory, FD, disk backlog, and churn together, not only throughput curves.
Proposed initial SLOs: control-summary age p95 ≤ 2 seconds; local non-data queries p95 ≤ 200 ms; propose disconnect by the next control tick after a qualified-service timeout, with actual Engine closure latency recorded separately. These are targets, not passed checks before product implementation.
Pressure events use a priority channel. Coalesce low-value, high-frequency samples; exact counters must not accumulate from lost deltas. Each run has monotonic seq/reset and becomes continuous only after reconciliation. Metrics must not use connection_id as an unbounded Prometheus label; store details under retention and use bounded labels for aggregates.
24 | Migration, rollback, and development order
Freeze the v2.2 snapshot and schema fingerprint first; do not apply old fixed-slot settings directly. Add v2.3 auto settings and migrations, and replay tests against a DB backup. Old
max_active_tasks/max_probes
become historical settings with deactivation reasons; do not silently reintroduce them into auto mode.
Implementation order: contracts and state model → globally visible discovery/short-lived probing → Connection Agent/Registry → precise failure eligibility and revocable policies → adaptive pool → Config catalog fetch/validation → UI → fault and live-network acceptance. REMULE supplies the first full-precision vertical slice; qBittorrent's precise bridge is an independent dependency, not something stock
banPeers can stand in for.
Before rollback, stop new dispatches, reconcile all draining/unknown jobs, and back up the DB. Old Engines must not concurrently write the same partial files. Prefer restoring the old process and matching backup over unverified destructive down-migrations. Catalogs can return to last-good revisions; policy evidence must survive rollback.
This package does not authorize commits, pushes, deployment, external-tool installation, VPN Manager changes, or unapproved test data. Claude Code should implement and test the specified tasks directly after handoff; rewriting everything into another plan does not count as delivery.
25 | Known limitations and delivery status
The specification covers all requirements in this revision; the product is not implemented yet. Candidate sources have real public data and snapshot digests, but no live-peer/tracker-announce/eD2k download tests. There is no safe-server or phishing-excluded certification.
Stock qBittorrent's gap in precise per-connection control and the unavailable raw feed for server.met are explicit integration/evidence gates in this revision. Corresponding full-feature acceptance must remain BLOCKED rather than removing requirements. Actual Node/Rust/Engine versions are fixed after reading existing lockfiles and owner policy during implementation preflight; do not invent available build hashes.
For concrete attachment validation results, see VALIDATION.md; ACCEPTANCE.md
contains software cases to be accepted, not cases already run. Interactive HTML is only a rules example; all data is labeled synthetic and no requests are sent to any source.
Work through the situations you are concerned about, one by one.
The following only replays this document's decision conditions. It is not a real speed test, source probe, or download simulation and creates no connections. All ratios, durations, and counts are synthetic inputs.
1. Dynamic pool decisions
Five downloads use only 50% of the network, and the local system is healthy. This count illustrates a step size; actual FD/RAM/I/O/network budgets must still be granted individually.
A pressure ratio of 1.0 means that bottleneck domain has reached its policy limit, not whole-host CPU usage. With unknown capacity, use marginal benefit rather than claiming 50% of Internet bandwidth is in use.
2. Why treat two cases of not downloading differently?
Applies only after service eligibility is established, the request times out, and local/shared-network failures are excluded. No automatic whole-IP ban.
Temporary avoidance defaults to realm + content + source, not blanket IP bans, much less country bans. Preserve evidence and execution responses for every automatic action.
3. Default candidate catalog
122 tracker URIs and 12 current eD2k servers, plus an old snapshot of one upstream-removed endpoint. All entries below remain unprobed / intent unknown. Displaying a URI creates no connection.
Showing 134 candidates; all are unprobed, with safety intent unknown.
| Candidate | Protocol | Source | Default handling |
|---|---|---|---|
| udp://tracker.opentrackr.org:1337/announce | udp | ngosang · xiu2 | Candidate · validate first |
| http://tracker.opentrackr.org:1337/announce | http | ngosang · xiu2 | Candidate · validate first |
| udp://open.stealth.si:80/announce | udp | ngosang · xiu2 | Candidate · validate first |
| udp://tracker.torrent.eu.org:451/announce | udp | ngosang · xiu2 | Sensitive port · manual review |
| udp://open.demonii.com:1337/announce | udp | ngosang · xiu2 | Candidate · validate first |
| udp://tracker.skynetcloud.site:6969/announce | udp | ngosang · xiu2 | Candidate · validate first |
| udp://tracker.qu.ax:6969/announce | udp | ngosang · xiu2 | Candidate · validate first |
| http://tracker.qu.ax:6969/announce | http | ngosang · xiu2 | Candidate · validate first |
| udp://tracker.corpscorp.online:80/announce | udp | ngosang · xiu2 | Candidate · validate first |
| udp://tracker.bittor.pw:1337/announce | udp | ngosang · xiu2 | Candidate · validate first |
| udp://explodie.org:6969/announce | udp | ngosang · xiu2 | Candidate · validate first |
| udp://tracker.tryhackx.org:6969/announce | udp | ngosang · xiu2 | Candidate · validate first |
| udp://tracker.gmi.gd:6969/announce | udp | ngosang · xiu2 | Candidate · validate first |
| udp://tracker-udp.gbitt.info:80/announce | udp | ngosang · xiu2 | Candidate · validate first |
| udp://retracker01-msk-virt.corbina.net:80/announce | udp | ngosang · xiu2 | Candidate · validate first |
| udp://tracker.nyaa.vc:6969/announce | udp | ngosang · xiu2 | Candidate · validate first |
| http://tracker.dler.org:6969/announce | http | ngosang · xiu2 | Candidate · validate first |
| http://tracker.dler.com:6969/announce | http | ngosang · xiu2 | Candidate · validate first |
| udp://tracker.dler.org:6969/announce | udp | ngosang · xiu2 | Candidate · validate first |
| udp://tracker2.dler.org:80/announce | udp | ngosang · xiu2 | Candidate · validate first |
| http://tracker2.dler.org:80/announce | http | ngosang · xiu2 | Candidate · validate first |
| udp://tracker.ducks.party:1984/announce | udp | ngosang · xiu2 | Candidate · validate first |
| http://tracker.renfei.net:8080/announce | http | ngosang · xiu2 | Candidate · validate first |
| udp://tracker.peerfect.org:6969/announce | udp | ngosang · xiu2 | Candidate · validate first |
| udp://tracker.opentrackr.com:6969/announce | udp | ngosang · xiu2 | Candidate · validate first |
| udp://tracker.ilibr.org:6969/announce | udp | ngosang · xiu2 | Candidate · validate first |
| udp://mail.segso.net:6969/announce | udp | ngosang · xiu2 | Candidate · validate first |
| udp://t.overflow.biz:6969/announce | udp | ngosang · xiu2 | Candidate · validate first |
| udp://bittorrent-tracker.e-n-c-r-y-p-t.net:1337/announce | udp | ngosang · xiu2 | Candidate · validate first |
| http://t.overflow.biz:6969/announce | http | ngosang · xiu2 | Candidate · validate first |
| http://bittorrent-tracker.e-n-c-r-y-p-t.net:1337/announce | http | ngosang · xiu2 | Candidate · validate first |
| https://tracker.pmman.tech:443/announce | https | ngosang · xiu2 | Candidate · validate first |
| udp://ipv4announce.sktorrent.eu:6969/announce | udp | ngosang · xiu2 | Candidate · validate first |
| http://ipv4announce.sktorrent.eu:6969/announce | http | ngosang · xiu2 | Candidate · validate first |
| udp://evan.im:6969/announce | udp | ngosang · xiu2 | Candidate · validate first |
| udp://tracker.wildkat.net:6969/announce | udp | ngosang · xiu2 | Candidate · validate first |
| udp://tracker.004430.xyz:1337/announce | udp | ngosang · xiu2 | Candidate · validate first |
| udp://tr4ck3r.duckdns.org:6969/announce | udp | ngosang · xiu2 | Candidate · validate first |
| udp://seedpeer.net:6969/announce | udp | ngosang · xiu2 | Candidate · validate first |
| https://tracker.zhuqiy.com:443/announce | https | ngosang · xiu2 | Candidate · validate first |
| https://tracker.nekomi.cn:443/announce | https | ngosang · xiu2 | Candidate · validate first |
| https://004430.xyz:443/announce | https | ngosang · xiu2 | Candidate · validate first |
| http://tracker.mywaifu.best:6969/announce | http | ngosang · xiu2 | Candidate · validate first |
| http://004430.xyz:80/announce | http | ngosang · xiu2 | Candidate · validate first |
| udp://open.ftorrent.com:443/announce | udp | ngosang · xiu2 | Candidate · validate first |
| udp://martin-gebhardt.eu:25/announce | udp | ngosang · xiu2 | Sensitive port · manual review |
| https://tracker.7471.top:443/announce | https | ngosang · xiu2 | Candidate · validate first |
| https://tr.nyacat.pw:443/announce | https | ngosang · xiu2 | Candidate · validate first |
| http://tracker.waaa.moe:6969/announce | http | ngosang · xiu2 | Candidate · validate first |
| http://tracker.dhitechnical.com:6969/announce | http | ngosang · xiu2 | Candidate · validate first |
| http://tr.nyacat.pw:80/announce | http | ngosang · xiu2 | Candidate · validate first |
| http://open.tracker.cl:1337/announce | http | ngosang · xiu2 | Candidate · validate first |
| udp://tracker.teambelgium.net:6969/announce | udp | ngosang · xiu2 | Candidate · validate first |
| udp://tracker.fnix.net:6969/announce | udp | ngosang · xiu2 | Candidate · validate first |
| udp://tracker.aruku.ovh:8081/announce | udp | ngosang · xiu2 | Candidate · validate first |
| udp://admin.52ywp.com:6969/announce | udp | ngosang · xiu2 | Candidate · validate first |
| https://open.ftorrent.com:443/announce | https | ngosang · xiu2 | Candidate · validate first |
| http://tracker.23794.top:6969/announce | http | ngosang · xiu2 | Candidate · validate first |
| udp://anime-tracker.aruku.kro.kr:8081/announce | udp | ngosang · xiu2 | Candidate · validate first |
| https://tracker.foreverpirates.co:443/announce | https | ngosang · xiu2 | Candidate · validate first |
| udp://tracker.torrents.observer:80/announce | udp | ngosang · xiu2 | Candidate · validate first |
| udp://tracker.nyaa.net:6969/announce | udp | ngosang · xiu2 | Candidate · validate first |
| udp://tracker.cn.nyaa.net:6969/announce | udp | ngosang · xiu2 | Candidate · validate first |
| udp://tr3.ysagin.top:2715/announce | udp | ngosang · xiu2 | Candidate · validate first |
| udp://kolankoalastree.newtrackon.co.nz:1337/announce | udp | ngosang · xiu2 | Candidate · validate first |
| udp://archive.torrentonline.cc:42069/announce | udp | ngosang · xiu2 | Candidate · validate first |
| http://tracker.zhuqiy.dgj055.icu:80/announce | http | ngosang · xiu2 | Candidate · validate first |
| http://1337.abcvg.info:80/announce | http | ngosang · xiu2 | Candidate · validate first |
| udp://yuptracker-eu.gaijinent.com:27022/announce | udp | ngosang · xiu2 | Candidate · validate first |
| udp://whybother.torrentonline.cc:42069/announce | udp | ngosang · xiu2 | Candidate · validate first |
| udp://tracker.playground.ru:6969/announce | udp | ngosang · xiu2 | Candidate · validate first |
| udp://tracker.ddunlimited.net:6969/announce | udp | ngosang · xiu2 | Candidate · validate first |
| udp://ns575949.ip-51-222-82.net:6969/announce | udp | ngosang · xiu2 | Candidate · validate first |
| udp://edgev.duckdns.org:6969/announce | udp | ngosang · xiu2 | Candidate · validate first |
| https://t.213891.xyz:443/announce | https | ngosang · xiu2 | Candidate · validate first |
| http://107.189.2.131:1337/announce | http | xiu2 | Candidate · validate first |
| http://207.241.226.111:6969/announce | http | xiu2 | Candidate · validate first |
| http://207.241.231.226:6969/announce | http | xiu2 | Candidate · validate first |
| http://announce.sktorrent.eu:6969/announce | http | xiu2 | Candidate · validate first |
| http://bt1.archive.org:6969/announce | http | xiu2 | Candidate · validate first |
| http://bt2.archive.org:6969/announce | http | xiu2 | Candidate · validate first |
| http://nyaa.tracker.wf:7777/announce | http | xiu2 | Candidate · validate first |
| http://retracker01-msk-virt.corbina.net:80/announce | http | xiu2 | Candidate · validate first |
| http://torrentsmd.com:8080/announce | http | xiu2 | Candidate · validate first |
| http://tracker.internetwarriors.net:1337/announce | http | xiu2 | Candidate · validate first |
| http://tracker.xn--djrq4gl4hvoi.top:80/announce | http | xiu2 | Candidate · validate first |
| http://tracker1.itzmx.com:8080/announce | http | xiu2 | Candidate · validate first |
| http://www.wareztorrent.com:80/announce | http | xiu2 | Candidate · validate first |
| https://1.tracker.eu.org:443/announce | https | xiu2 | Candidate · validate first |
| https://1337.abcvg.info:443/announce | https | xiu2 | Candidate · validate first |
| https://tr.abiir.top:443/announce | https | xiu2 | Candidate · validate first |
| https://tr.burnabyhighstar.com:443/announce | https | xiu2 | Candidate · validate first |
| https://tracker.kuroy.me:443/announce | https | xiu2 | Candidate · validate first |
| https://tracker.midnightprogrammer.net:443/announce | https | xiu2 | Candidate · validate first |
| https://tracker.qingwapt.org:443/announce | https | xiu2 | Candidate · validate first |
| https://tracker1.520.jp:443/announce | https | xiu2 | Candidate · validate first |
| udp://52.58.128.163:6969/announce | udp | xiu2 | Candidate · validate first |
| udp://93.158.213.92:6969/announce | udp | xiu2 | Candidate · validate first |
| udp://[2a03:7220:8083:cd00::1]:451/announce | udp | xiu2 | Sensitive port · manual review |
| udp://[2a04:ac00:1:3dd8::1:2710]:2710/announce | udp | xiu2 | Candidate · validate first |
| udp://exodus.desync.com:6969/announce | udp | xiu2 | Candidate · validate first |
| udp://ipv6.govt.hu:6969/announce | udp | xiu2 | Candidate · validate first |
| udp://open.tracker.ink:6969/announce | udp | xiu2 | Candidate · validate first |
| udp://opentor.org:2710/announce | udp | xiu2 | Candidate · validate first |
| udp://opentracker.lain.moscow:6969/announce | udp | xiu2 | Candidate · validate first |
| udp://p4p.arenabg.com:1337/announce | udp | xiu2 | Candidate · validate first |
| udp://retracker.hotplug.ru:2710/announce | udp | xiu2 | Candidate · validate first |
| udp://torrent.tracker.durukanbal.com:6969/announce | udp | xiu2 | Candidate · validate first |
| udp://tracker.dler.com:6969/announce | udp | xiu2 | Candidate · validate first |
| udp://tracker.farted.net:6969/announce | udp | xiu2 | Candidate · validate first |
| udp://tracker.filemail.com:6969/announce | udp | xiu2 | Candidate · validate first |
| udp://tracker.flatuslifir.is:6969/announce | udp | xiu2 | Candidate · validate first |
| udp://tracker.k.vu:6969/announce | udp | xiu2 | Candidate · validate first |
| udp://tracker.skyts.net:6969/announce | udp | xiu2 | Candidate · validate first |
| udp://tracker.willy.pro:6969/announce | udp | xiu2 | Candidate · validate first |
| udp://tracker.yume-hatsuyuki.moe:6969/announce | udp | xiu2 | Candidate · validate first |
| udp://tracker1.itzmx.com:8080/announce | udp | xiu2 | Candidate · validate first |
| udp://tracker2.itzmx.com:6961/announce | udp | xiu2 | Candidate · validate first |
| udp://tracker3.itzmx.com:6961/announce | udp | xiu2 | Candidate · validate first |
| udp://tracker4.itzmx.com:2710/announce | udp | xiu2 | Candidate · validate first |
| udp://v2.iperson.xyz:6969/announce | udp | xiu2 | Candidate · validate first |
| wss://tracker.openwebtorrent.com:443/announce | wss | xiu2 | Requires WebTorrent capability |
| eMule Sunrise — ed2k://|server|176.123.5.89|4725|/ | ed2k | emule-security-web | Candidate · validate first |
| Nordic Server — ed2k://|server|77.42.68.79|4232|/ | ed2k | emule-security-web | Candidate · validate first |
| Sharing-Devils No.4 — ed2k://|server|91.208.162.87|4232|/ | ed2k | emule-security-web | Candidate · validate first |
| MO-Server — ed2k://|server|91.208.162.182|4232|/ | ed2k | emule-security-web | Candidate · validate first |
| ed2k-rust — ed2k://|server|85.17.116.222|6082|/ | ed2k | emule-security-web | Candidate · validate first |
| Sharing-Devils No.2 — ed2k://|server|85.121.5.137|4232|/ | ed2k | emule-security-web | Candidate · validate first |
| eMule Cosmic — ed2k://|server|212.95.35.240|4232|/ | ed2k | emule-security-web | Candidate · validate first |
| Mazinga Server — ed2k://|server|213.141.198.207|4232|/ | ed2k | emule-security-web | Candidate · validate first |
| MO-ad-free — ed2k://|server|57.131.35.107|4232|/ | ed2k | emule-security-web | Candidate · validate first |
| Drunken Donkey — ed2k://|server|193.187.90.12|4661|/ | ed2k | emule-security-web | Candidate · validate first |
| MO-24/7 — ed2k://|server|212.95.35.240|4323|/ | ed2k | emule-security-web | Candidate · validate first |
| Sharing-Devils No.3 TEST — ed2k://|server|91.208.162.55|4235|/ | ed2k | emule-security-web | Candidate · validate first |
4. Your review notes
Raw candidate-source data: 134 endpoints, provenance, and unknown states
Preserves all data fields embedded in the original, for reading only; no requests are sent to endpoints.
[
{
"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"
}
]
Delivery and verification boundaries
Stock qBittorrent's precise-governance bridge, raw HTTPS server.met binary tests, real P2P, and file operations still have separate acceptance gates. Passing data-table, HTML, and offline-reference-model checks does not mean production Engines or all sources have been verified safe.
Original contracts, configuration, and development handoff
The following reproduces this version's bundled Markdown/JSON/SQL/TOML rather than creating another summary. Use the corresponding ZIP files for implementation; source URLs open only when explicitly clicked.
