Schnellstart
Die Beispielausgaben unten verwenden 192.0.2.1, eine reservierte Dokumentationsadresse, die nie zu einem echten Gerät gehört. Wenn du die Befehle selbst ausführst, siehst du deine eigene IP.
$ curl iseeu.cc
192.0.2.1
$ curl -s iseeu.cc/json | jq '{ip, country: .location.country, asn: .network.asn, tls: .tls.version}'
{
"ip": "192.0.2.1",
"country": "US",
"asn": 7922,
"tls": "TLSv1.3"
}
Was die Start-URL zurückgibt, entscheidet dein Accept-Header: Browser fragen nach text/html und bekommen die Seite; curl, wget, HTTPie, PowerShell und HTTP-Bibliotheken tun das nicht und bekommen eine einzige Zeile mit deiner IP-Adresse und einem Zeilenumbruch.
Endpunkte
| Pfad | Liefert |
|---|---|
| / | Deine IP als reinen Text (Clients ohne Browser) oder die Webseite (Browser) |
| /ip | Deine IP als reinen Text, immer |
| /json | Alles: IP, Standort, Netzwerk, TLS, HTTP, zerlegter User-Agent, Request-Header, Serverzeit |
| /geo | IP, Standort, ASN, Organisation und Cloudflare-Rechenzentrum |
| /tls | TLS-Version, Cipher, Größe des ClientHello, Hashes der Cipher und Extensions, HTTP-Version |
| /ua | Dein User-Agent, zerlegt in Browser, Engine, Betriebssystem, Gerät und Client-Typ |
| /headers | Die Request-Header, die du gesendet hast, und die, die Cloudflare ergänzt hat |
| /api/rdap?q= | RDAP-Registrierungsdaten zu einer Domain, einer IP-Adresse oder einem CIDR-Bereich oder einer AS-Nummer, von der Registry, die die IANA dafür führt: eine Zusammenfassung plus das rohe RDAP-JSON |
| /api/headers-check?url= | Response-Header einer öffentlichen URL (Weiterleitungen werden verfolgt, der Body wird nie gelesen) mit Sicherheitsnote |
| /mcp | MCP-Server (Streamable HTTP, zustandslos) – siehe unten |
Um die Adresse eines bestimmten Protokolls zu sehen, erzwingst du es in curl: curl -4 iseeu.cc gibt deine IPv4-Adresse aus und curl -6 iseeu.cc deine IPv6-Adresse (das schlägt sofort fehl, wenn dein Rechner keine IPv6-Route hat). Für JSON funktioniert das genauso mit curl -4 iseeu.cc/json und curl -6 iseeu.cc/json.
Häng ?format=text an einen beliebigen JSON-Endpunkt an (oder sende Accept: text/plain), um flache Zeilen im Format key: value zu bekommen – praktisch mit grep. format akzeptiert nur json oder text; jeder andere Wert führt zu einem 400 mit "error": "invalid_format" statt zu einem stillen Rückfall. curl "iseeu.cc/ua?format=text" gibt nur den User-Agent-String aus. Die maschinenlesbare Beschreibung liegt unter /openapi.json (OpenAPI 3.1).
Das /json-Objekt
Eine Beispielantwort (wieder mit der reservierten Beispieladresse 192.0.2.1):
{
"ip": "192.0.2.1",
"ipVersion": 4,
"location": {
"country": "US", "countryName": "United States",
"region": "Texas", "regionCode": "TX", "city": "Austin",
"postalCode": "78701", "metroCode": "635", "continent": "NA",
"isEU": false, "latitude": 30.27, "longitude": -97.74,
"timezone": "America/Chicago"
},
"network": { "asn": 7922, "asOrganization": "Comcast Cable", "colo": "DFW",
"clientTcpRttMs": 22, "clientQuicRttMs": null, "deliveryRateBps": null },
"tls": { "version": "TLSv1.3", "cipher": "AEAD-AES128-GCM-SHA256", "clientHelloLength": 508,
"clientCiphersSha1": "…", "clientExtensionsSha1": "…" },
"http": { "protocol": "HTTP/2", "method": "GET", "priority": null, "acceptEncoding": "gzip, br" },
"userAgent": { "raw": "curl/8.9.1", "browser": {…}, "engine": {…}, "os": {…},
"device": {…}, "cpu": {…}, "kind": "cli", "bot": { "name": "curl", "kind": "cli", "operator": null } },
"headers": { "accept": "*/*", "host": "iseeu.cc", "user-agent": "curl/8.9.1" },
"edgeHeaders": { "cf-ray": "…", "cf-ipcountry": "US", … },
"time": { "server": "2026-10-08T12:00:00.000Z", "serverMs": 1791460800000 },
"meta": { "docs": "https://iseeu.cc/api/", "privacy": "https://iseeu.cc/privacy/", "simulated": false }
}
Fehlende Werte sind null und werden nie weggelassen, die Struktur bleibt also stabil. Das gilt auch für Messwerte, die nicht zutreffen oder nicht erhoben wurden: clientTcpRttMs gibt es nur bei TCP-Verbindungen (HTTP/1.1 und HTTP/2), clientQuicRttMs nur bei HTTP/3, und einen nicht gemessenen Wert meldet Cloudflare als 0, den wir als null weitergeben statt als Roundtrip von null Millisekunden. Standort- und Netzwerkdaten stammen aus Cloudflares IP-Daten zu der Adresse, von der aus du verbunden bist; sie beschreiben das Netz deines Anbieters, keine Postanschrift. tls.clientCiphersSha1 und clientExtensionsSha1 sind Cloudflares Hashes deines ClientHello, nicht JA3 oder JA4. Chrome mischt die Reihenfolge seiner TLS-Extensions zufällig, deshalb ändert sich sein Extensions-Hash meist von Verbindung zu Verbindung; der Cipher-Hash ist der beständigere der beiden. userAgent.kind hat einen der Werte browser, search-crawler, ai-crawler, ai-assistant, social-preview, http-library, cli, headless-browser, monitoring, bot oder unknown.
Typische Anwendungen
Vor einem Job prüfen, ob ein VPN oder Proxy aktiv ist. Vergleiche das Ausgangsland mit dem erwarteten und brich ab, wenn es nicht stimmt:
country=$(curl -s "iseeu.cc/geo?format=text" | awk -F': ' '$1=="country"{print $2}')
[ "$country" = "DE" ] || { echo "VPN not in Germany (got $country)"; exit 1; }
Die öffentliche Adresse eines Servers herausfinden – aus einem Container, einem CI-Runner oder einer Cloud-Funktion heraus, wo die Netzwerkschnittstelle nur eine private Adresse zeigt. curl -s iseeu.cc genügt, und durch den abschließenden Zeilenumbruch lässt sich das Ergebnis gefahrlos in einer Kommandosubstitution der Shell verwenden.
Sehen, was dein HTTP-Client wirklich sendet. Bibliotheken fügen Header hinzu, benennen sie um und ändern ihre Reihenfolge. Ruf /headers aus deinem Code auf, um den genauen Satz zu sehen, oder /tls, um zu prüfen, welche TLS-Version und welchen Cipher deine Laufzeitumgebung aushandelt.
Aus anderen Programmiersprachen:
// JavaScript (browser or Node 18+)
const me = await (await fetch("https://iseeu.cc/json")).json();
# Python
import requests; me = requests.get("https://iseeu.cc/json", timeout=5).json()
// Go
resp, _ := http.Get("https://iseeu.cc/ip")
# PowerShell
(Invoke-RestMethod https://iseeu.cc/json).location.country
Abfragen, die iseeu.cc verlassen
/api/rdap und /api/headers-check stellen jeweils eine ausgehende Anfrage und haben deshalb ein eigenes, niedrigeres Limit: 10 Aufrufe pro Minute und IP-Adresse; darüber hinaus antworten sie mit 429 und Retry-After: 60. RDAP-Abfragen gehen ausschließlich an Server, die im Bootstrap-Verzeichnis der IANA stehen. Der Header-Check akzeptiert öffentliche http/https-URLs auf den Ports 80 und 443, lehnt private und reservierte Adressen sowie iseeu.cc selbst ab (auch als Ziel einer Weiterleitung; das ergibt 400 invalid_target), folgt bis zu fünf Weiterleitungen und gibt nach fünf Sekunden auf. Keiner der beiden Endpunkte speichert die Abfrage.
curl -s "iseeu.cc/api/rdap?q=AS64496" | jq .summary
curl -s "iseeu.cc/api/headers-check?url=https://example.com/" | jq '.grade | {grade, score}'
Limits und Fair Use
- 60 Anfragen pro Minute und IP-Adresse. Darüber bekommst du
429mitRetry-After: 60. Das Limit wird pro Cloudflare-Standort gezählt und ist daher nur ungefähr. - Antworten, auch die von MCP, werden nie gecacht (
Cache-Control: no-store). Die REST-Endpunkte sendenAccess-Control-Allow-Origin: *, sodass Browser-JavaScript auf jeder beliebigen Website sie aufrufen kann. - Kommerzielle Nutzung ist in Ordnung. Bitte bau
/jsonaber nicht in eine Seite ein, die jeder deiner Besucher lädt; in dieser Größenordnung melde dich vorher bei uns. - Wenn 60 Anfragen pro Minute für dein Vorhaben wirklich nicht reichen, erzähl uns über die Kontaktseite davon.
MCP-Server für KI-Agenten
https://iseeu.cc/mcp ist ein entfernter Model-Context-Protocol-Server über Streamable HTTP. Er ist zustandslos, braucht keine Authentifizierung und bietet fünf Tools, die alle nur lesen; dns_lookup und rdap_lookup teilen sich das Limit von 10 Aufrufen pro Minute für externe Abfragen.
| Tool | Eingabe | Funktion |
|---|---|---|
| whoami | include_headers? | Öffentliche IP, Standort, ASN und Organisation, Cloudflare-Rechenzentrum, TLS- und HTTP-Version sowie Client-Typ des Rechners, der den Server aufruft |
| check_headers | headers? | Zeigt Merkmale, die Bot-Erkennung häufig gewichtet: fehlender User-Agent oder Accept-Language, Chrome ohne Client Hints, unpassende Versionen oder Plattformen, Proxy-Header mit einer anderen IP, DNT und GPC. Das sind mögliche Hinweise, keine Beweise, denn jeder Client kann Header weglassen oder fälschen. Ohne Eingabe werden die Header des Aufrufs selbst geprüft. |
| parse_ua | user_agent? | Zerlegt einen User-Agent in Browser, Engine, Betriebssystem, Gerät und CPU und ordnet Crawler, KI-Agenten, Kommandozeilen-Tools und Bibliotheken ein |
| dns_lookup | name, type? | A-, AAAA-, MX-, TXT-, NS-, CNAME-, CAA- oder SOA-Einträge über Cloudflares Resolver per DNS-over-HTTPS, mit TTL, DNSSEC-Flag und einem Hinweis, der einen nicht existierenden Namen (NXDOMAIN) von einem fehlenden Eintragstyp unterscheidet |
| rdap_lookup | query, include_raw? | Zusammenfassung der Registrierung einer Domain, IP-Adresse oder AS-Nummer vom autoritativen RDAP-Server |
Browserbasierte MCP-Clients können ihn von jeder Herkunft (Origin) aus aufrufen. CORS erlaubt POST, GET und DELETE mit den Request-Headern Content-Type, Mcp-Session-Id, Mcp-Protocol-Version und Last-Event-ID und gibt Mcp-Session-Id für Skripte frei. Jede MCP-Antwort wird mit Cache-Control: no-store gesendet, und der Server behält zwischen den Aufrufen nichts. Ein Request-Body darf bis zu 64 KB groß sein und ein JSON-RPC-Batch bis zu 10 Nachrichten enthalten; Größeres wird mit dem Fehler -32600 abgewiesen, bevor überhaupt ein Tool läuft.
Verbinden
# Claude Code
claude mcp add --transport http iseeu https://iseeu.cc/mcp
# Cursor, Windsurf, VS Code and other JSON configs
{ "mcpServers": { "iseeu": { "url": "https://iseeu.cc/mcp" } } }
Ein ehrlicher Hinweis zu whoami: Das Tool meldet den Rechner, der die HTTP-Anfrage an /mcp sendet. Bei Desktop- und Kommandozeilen-Agenten ist das dein eigenes Netz – praktisch, um zu prüfen, ob ein Proxy oder VPN greift. Bei Assistenten, die in der Cloud laufen, ist es der Server des Anbieters.
Discovery-Dateien
- /llms.txt – eine kurze Klartext-Anleitung für Sprachmodelle
- /.well-known/mcp/server-card.json – die Server Card des MCP-Servers
- /openapi.json – OpenAPI-3.1-Beschreibung der HTTP-Endpunkte
Datenschutz
Die API protokolliert nie IP-Adressen, Header oder Abfragen und hat keine Datenbank. Antworten werden im Arbeitsspeicher aus der Anfrage gebaut und danach verworfen; wir zählen Aufrufe pro Endpunkt, ohne IP-Adressen. Einzelheiten stehen in der Datenschutzerklärung.
Die API wird so bereitgestellt, wie sie ist, ohne Garantie für ihre Verfügbarkeit. Standort- und Netzwerkdaten können falsch sein. Nutze sie nicht als einziges Signal für Sicherheits- oder Betrugsentscheidungen.