geoip.alpagot.net · port 443 · your address, annotated

Where the edge
thinks you are.

Every request arrives with an address, and the edge knows quite a lot about it. This page shows you everything Fastly can say about yours — or about any address you care to ask about.

YOUR ADDRESS, AS THE EDGE SEES IT
lookup address216.73.216.209
lookup sourceyour connection
AS nameamazon.com inc.
AS number16509
citycolumbus
regionOH
region nameOH
countryunited states
country codeUS
country code 3USA
continentNA
latitude40.040
longitude-82.860
postal code43230
metro code535
area code614
UTC offset-400
connection speedbroadband
connection typewired
proxy type?
proxy description?

Read by VCL in a fraction of a millisecond at the CMH POP (cache-cmh1290067-CMH) and written straight into this HTML. No JavaScript collected anything.

WHAT THIS IS

An IP’s biography, read at the edge

The card above is Fastly’s client.geo.* and client.as.* geolocation data for the address that fetched this page, straight from the geolocation variable family. It goes well beyond a dot on a map: connection speed and type, the autonomous system behind the address, and proxy intelligence that can tell a home broadband line from a VPN exit or a cloud datacentre.

A ? means the database has no data for that field, and coordinates of 999.0 flag an invalid region — the dataset’s honest ways of saying “don’t know”. City-level accuracy is an estimate, not a subpoena.

LOOK SOMETHING UP

Any address, not just yours

The lookup runs on client.geo.ip_override: hand the edge a different address and every variable above is recomputed for it, in the same fraction of a millisecond.

Works for IPv4 and IPv6. Or from the command line: curl -s "https://geoip.alpagot.net/raw?ip=8.8.8.8"

FOR MACHINES

The plain-text endpoint lives on

Scripts get the same data without the furniture at /raw, in the original variable: value format — and the old paths (/geoip, /tls, /device) still answer exactly as they always did, so nothing you have automated against this hostname breaks.

# yourself, or anyone else $ curl -s https://geoip.alpagot.net/raw $ curl -s "https://geoip.alpagot.net/raw?ip=151.101.1.91"
NOT JUST FOR SHOW

The same variables drive edge logic

Everything on this page is a live VCL expression, evaluated on every request before your origin is ever involved. That means each value can conditionalise the request flow — route, block, redirect, rewrite, rate limit, or vary the cache on it. A taste, in this site’s dialect:

# vcl_recv - geofence an admin path if (req.url.path ~ "^/admin" && client.geo.country_code != "GB") { error 403; } # vcl_log - audience geography, per request log "syslog " + req.service_id + " insight :: " + client.geo.country_code + " " + client.as.number;

The other half is insight: every variable here can be emitted through Fastly’s real-time log streaming from vcl_log — per-request, from every POP, with no JavaScript beacons or client-side analytics. Stream them into your warehouse and you know your audience’s countries, networks and connection types at whatever depth you like.

UNDER THE HOOD

One service, three hostnames, zero origins

geoip, tls and device are a single origin-less Fastly VCL service, routed by req.http.host. Every response is a synthetic response: the variables above are captured into request headers in vcl_recv (most are not available in vcl_error, where the page is assembled) and interpolated into the HTML at the POP nearest you. Values echoed from client-controlled input are HTML-escaped in VCL first.

The whole family works this way — see http.alpagot.net and h3.alpagot.net for the other experiments, and Fastly’s VCL variables reference for everything the edge can see.

WHO BUILT THIS

Richard Alpagot

Senior Cloud Engineer at Fastly, collector of small sites that explain themselves.