- Behind your provider's shared address, me-web? now shows how its exit hands out ports
(kept, one after another, from one block, or at random), the range it gave this device,
and how many customers may share the address at most; the estimate sharpens with each
check on the same address.
- It tests whether two devices behind the same address can reach each other (hairpin), and
how long an unused connection stays open: the card says "measuring" for about two minutes
after the check, then the answer.
- With the test from outside, the publisher's server also traces the route back to your
address: your provider's routers and the networks in between appear on the path, with
their names.
- The provider card says which networks your provider reaches the internet through.
- On mobile data, the path shows the operator and the type of network (5G, 4G) read from the
phone; on Android 13 and later the phone asks once for permission to read the network type.
- The speed card adds the round trip to the publisher's server.
- The network data now comes from the publisher's server, refreshed there from open sources:
iptoasn.com, DB-IP Lite (CC BY 4.0), the University of Oregon Route Views Project (CC BY 4.0)
and the Android Open Source Project's list of mobile operators (Apache 2.0); the release
notes list each source's date and checksum.
- Source links in the cards wrap instead of being cut off.
- New strings, drafted in every language.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_012CzABvBkbcFqoHdmi8b9WB
- Every network call returns a result whatever fails, not only the exceptions .NET
usually throws: on Android the HTTPS client is the platform's own stack, and a network
switch mid-request throws others. The outside test as a whole cannot throw; sharing the
link falls back to copying it. A last guard (the UI thread, unobserved tasks, Android's
raiser) writes errors.log in the app folder and keeps the app running; nothing is sent.
- On mobile data the app no longer probes the operator's gateway as if it were a home
router: the router card says there is none, a private address on the phone with another
public one is the operator's address sharing (CGNAT) and is drawn as its shared exit, the
public IPv4 is held by that exit, and the provider's notes are labelled as being about its
home lines. These were "router not answering" and "can't tell" on an Iliad phone.
- The route's routers appear as stops on the path's wires: the operator's internal ones
before its exit, the public ones with their network number towards the internet.
- The download speed is timed after the first quarter of the sample, once the connection
has ramped up; the path no longer shows the address block's registry country.
- Two new strings, drafted in every language.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_012CzABvBkbcFqoHdmi8b9WB
Phases two and three ship together, because their code grew in the same
files. With consent the app asks the router to open 80, 443 and a high
port for ten minutes (UPnP, NAT-PMP or PCP), and the server, holding a
single-use ticket bound to the caller's own address, connects back and
must get an HMAC only the app can give; the mappings are removed after the
run and remembered until then, so a crash cannot leave one open. Hairpin
is tried from inside. Two STUN servers, the outside one first, tell easy
from hard NAT.
Mail gets port 25 to Gmail and Outlook, the reverse name and five
blocklists through the user's own resolver, network-wide UCEPROTECT
listings counted as a caution. DNS, speed against the server (four at a
time, twelve an hour per address) and the device follow, and six uses
(website, home from outside, files, game server, fediverse, mail) close
the run as possible, possible with a named workaround, or can't tell.
Findings can be shared after reading the exact JSON: a file per submission
under the unit's state directory, ten a day per address, deletable by the
token the app keeps, swept after twelve months; /privacy says all of it in
English and Italian. QR codes lead to the downloads. Every language carries
every string.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_012CzABvBkbcFqoHdmi8b9WB