Quellcode und Einrichtungsanleitung für den Client Ihrer Sprache.
Clientbibliotheken
Wählen Sie Ihre Sprache
Installieren Sie einen Client, führen Sie eine Abfrage aus und lesen Sie die Antwortfelder.
TypeScript / JavaScript
enrichip
Laufzeitgeprüft
Voraussetzungen
ES-Module · unter Node 26 geprüft
Paketversion
1.0.1
Installieren
Terminal
npm install enrichip@1.0.1
Eine IP abfragen
node lookup.mjs
lookup.mjs
import { queryIP } from "enrichip";const info = await queryIP("1.1.1.1");console.log(JSON.stringify(info, null, 2));
Clientverhalten
Dieses Beispiel verwendet das veröffentlichte npm-Paket. Sein IP-Argument akzeptiert Zeichenketten einschließlich komprimierter IPv6-Adressen; der HEAD-Stand des Repositorys validiert strenger.
Der Client bietet kein Zeitlimit pro Anfrage. Verwenden Sie die HTTP-Beispiele, wenn Sie die Anfrageeinstellungen direkt steuern müssen.
from ipapi.client import IPAPIClientclient = IPAPIClient()try: info = client.query_ip("1.1.1.1") print(info.model_dump_json(indent=2))finally: client.client.close()
Clientverhalten
Führen Sie lookup.py aus dem ausgecheckten Quellverzeichnis aus. Die veröffentlichte Distribution ipcore 0.1.2 enthält Paketmetadaten, aber kein importierbares ipapi-Modul; diese Anleitung verwendet stattdessen den festgelegten Repository-Stand.
Der Client verwendet Pydantics veraltete Methode parse_raw. Schließen Sie seinen HTTP-Client nach der Nutzung; der Wrapper bietet keinen Kontextmanager.
Go
github.com/ipqwery/ipapi-go
Laufzeitgeprüft
Voraussetzungen
Go 1.24.2 oder neuer
Quellstand
fc7efc4
Installieren
Terminal
go get github.com/ipqwery/ipapi-go@fc7efc494870418b9f1143f642aba8f5802ebf9f
Führen Sie den Installationsbefehl innerhalb eines Go-Moduls aus. QueryIP gibt einen verschachtelten IPInfo-Wert und bei nicht erfolgreichen HTTP-Antworten einen Fehler zurück.
Der Client hat kein Zeitlimit pro Aufruf. Seine omitempty-Tags lassen die Werte false und 0 bei erneuter Serialisierung weg; die eingelesenen Werte bleiben erhalten.
use std::time::Duration;#[tokio::main]async fn main() -> Result<(), Box<dyn std::error::Error>> { let info = tokio::time::timeout( Duration::from_secs(5), ipapi::query_ip("1.1.1.1"), ).await??; println!("{}", info.ip); if let Some(isp) = info.isp { println!("{:?}", isp.asn); } Ok(())}
Clientverhalten
Installieren Sie den festgelegten Quellstand in einem Cargo-Projekt; die dokumentierte crates.io-Version ist nicht verfügbar. Das Beispiel begrenzt die Abfrage mit einem Tokio-Timeout von fünf Sekunden.
Optionale verschachtelte Felder verwenden Option. Der Client dekodiert die Antwort ohne vorherige HTTP-Statusprüfung; verwenden Sie die HTTP-Referenz für die Behandlung von Fehlerantworten.
import ipapi.java.Ipapi;import ipapi.java.IPInfo;public class Lookup { public static void main(String[] args) throws Exception { IPInfo info = Ipapi.queryIp("1.1.1.1"); System.out.println(info.getIp()); if (info.getIsp() != null) { System.out.println(info.getIsp().getAsn()); } }}
Clientverhalten
Bauen Sie den festgelegten Quellstand mit JDK 21. Dieses Beispiel gehört in ein aufrufendes Projekt mit der gebauten Bibliothek im Klassenpfad; es wurde hier nicht zur Laufzeit geprüft.
Der Quellcode verwendet statische Methoden in ipapi.java ohne API-Schlüssel. Der Namensraum io.ipapi und der API-Schlüssel-Konstruktor im README passen nicht zu diesem Quellstand. Der HTTP-Status wird vor dem Dekodieren nicht geprüft.
C++
ipapi-cpp
Aktualisierung nötig
Voraussetzungen
C++20 · CMake · libcurl
Quellstand
a5ae87c
Installieren
Dieser Quellstand muss vor der Verwendung aktualisiert werden.
Der aktuelle Client verarbeitet jeden libcurl-Antwortblock als vollständiges JSON-Dokument. Eine auf mehrere Blöcke verteilte Antwort wird möglicherweise nicht korrekt dekodiert.
Die Risikozuordnung setzt is_datacenter und risk_score nicht. Der Callback für die eigene IP verwendet außerdem einen anderen Ergebnistyp als sein Aufrufer. Verwenden Sie bis zur Behebung dieser Codepfade eine Standard-HTTP-Anfrage.
using IpApi;using Microsoft.Extensions.DependencyInjection;using System.Text.Json;var services = new ServiceCollection();services.AddIpApiClient();using var provider = services.BuildServiceProvider();var client = provider.GetRequiredService<IIApiClient>();using var timeout = new CancellationTokenSource(TimeSpan.FromSeconds(5));var info = await client.QueryIpAsync("1.1.1.1", timeout.Token);if (info is null) throw new InvalidOperationException("Empty IP response");Console.WriteLine(JsonSerializer.Serialize(info));
Clientverhalten
Führen Sie dies in einem .NET-Konsolenprojekt aus. Die registrierte Schnittstelle heißt IIApiClient mit zwei anfänglichen I-Zeichen; der Name IIpApiClient im README weicht davon ab.
Die Antwort verwendet verschachtelte Isp-, Location- und Risk-Objekte. Übergeben Sie einen Abbruchtoken, um die Anfrage zu begrenzen. Die API unterstützt die alte Multi-IP-Methode nicht.
Vor der Integration
Einzel-IP-Anfragen
Verwenden Sie eine Adresse pro Abfrage. Manche Clients bieten noch Sammelmethoden an; die API lehnt Sammelanfragen ab. Richtlinie für Sammelabfragen lesen
Antworten zur eigenen IP
Der Wurzelendpunkt gibt die öffentliche IP des verbindenden Prozesses standardmäßig als Text zurück. Für eine vollständige JSON-Antwort zur eigenen IP verwenden Sie die HTTP-Beispiele
Prüfumfang
Laufzeitgeprüft bedeutet, dass das angezeigte Paket oder der Quellstand für Einzel-IP-Abfragen ausgeführt wurde. Quellcodebeispiele wurden mit dem Code abgeglichen, aber nicht ausgeführt. Ein Quellstand kann von einem veröffentlichten Paket abweichen.