gitmyhub

GlobalTrace

TypeScript ★ 107 updated 1d ago

GlobalTrace 是一个基于 Globalping MTR 测量的 traceroute 风格诊断工具

A web tool that runs global traceroutes via Globalping and enriches each hop with location and network ownership data from NextTrace.

TypeScriptReactViteMapLibreHonoCloudflare Workerssetup: moderatecomplexity 3/5

GlobalTrace is a web tool for tracing the route network traffic takes from various points around the world to a target destination. It combines two existing services: Globalping, which provides a network of volunteer-run probes distributed globally, and NextTrace, which offers a database of IP address geolocation and network ownership data. The result is a route-trace diagnostic tool that shows each hop on a map with geographic and network details attached.

When you start a trace, the tool asks Globalping to run an MTR measurement (a form of traceroute that also measures packet loss and latency) from one or more of its globally distributed probes. The backend, a Cloudflare Worker, then takes the list of IP addresses from the measurement results and calls the NextTrace batch API to enrich each hop with location, autonomous system number, and WHOIS data. The enriched trace is cached on Cloudflare for seven days so the same result can be retrieved by sharing the measurement ID.

You can optionally provide your own personal NextTrace API token in the advanced settings. When provided, new trace requests will call the NextTrace enrichment API directly from your browser rather than routing through the Worker. The token is stored only in your browser session (or in local storage if you choose to remember it) and is never sent to Globalping or the GlobalTrace backend.

The frontend is built with React, Vite, TypeScript, and MapLibre for the map rendering. The backend is a single Cloudflare Worker that serves both the API routes and the static single-page application assets. The project uses no persistent server-side storage: no database, no key-value store, no durable objects. Share links depend entirely on the measurement ID and the 7-day cache.

The project is released under GPL-3.0-or-later.

Where it fits