Temukan kode sumber dan petunjuk penyiapan untuk klien bahasa Anda.
Pustaka klien
Pilih bahasa Anda
Instal klien, lakukan satu pencarian, dan baca kolom respons.
TypeScript / JavaScript
enrichip
Diperiksa saat runtime
Persyaratan
Modul ES · diperiksa pada Node 26
Versi paket
1.0.1
Instal
Terminal
npm install enrichip@1.0.1
Cari satu IP
node lookup.mjs
lookup.mjs
import { queryIP } from "enrichip";const info = await queryIP("1.1.1.1");console.log(JSON.stringify(info, null, 2));
Perilaku klien
Contoh ini menggunakan paket npm yang dipublikasikan. Argumen IP-nya menerima string, termasuk IPv6 terkompresi; HEAD repositori memiliki validator yang lebih ketat.
Klien tidak menyediakan batas waktu per permintaan. Gunakan contoh HTTP ketika Anda memerlukan kendali langsung atas pengaturan permintaan.
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()
Perilaku klien
Jalankan lookup.py dari checkout sumber. Distribusi ipcore 0.1.2 yang dipublikasikan berisi metadata paket tetapi tidak memiliki modul ipapi yang dapat diimpor; penyiapan ini menggunakan repositori yang dipatok sebagai gantinya.
Klien menggunakan metode parse_raw Pydantic yang sudah usang. Tutup klien HTTP-nya setelah digunakan; pembungkusnya tidak memiliki pengelola konteks.
Go
github.com/ipqwery/ipapi-go
Diperiksa saat runtime
Persyaratan
Go 1.24.2 atau lebih baru
Revisi sumber
fc7efc4
Instal
Terminal
go get github.com/ipqwery/ipapi-go@fc7efc494870418b9f1143f642aba8f5802ebf9f
Jalankan perintah instalasi di dalam modul Go. QueryIP mengembalikan nilai IPInfo bersarang dan kesalahan untuk respons HTTP yang tidak berhasil.
Klien tidak memiliki batas waktu per pemanggilan. Tag omitempty menghilangkan nilai false dan nol jika Anda menserialisasi hasil lagi; nilai yang telah diurai tetap dipertahankan.
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(())}
Perilaku klien
Instal revisi sumber yang dipatok dalam proyek Cargo; versi crates.io yang didokumentasikan tidak tersedia. Contoh membatasi pencarian dengan batas waktu Tokio lima detik.
Kolom bersarang opsional menggunakan Option. Klien mendekode respons tanpa memeriksa status HTTP terlebih dahulu; gunakan referensi HTTP untuk penanganan respons kesalahan.
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()); } }}
Perilaku klien
Bangun dari sumber yang dipatok dengan JDK 21. Contoh ini digunakan dalam aplikasi konsumen dengan pustaka yang telah dibangun pada classpath-nya; contoh ini belum diperiksa saat runtime di sini.
Sumber menggunakan metode statis dalam ipapi.java, tanpa kunci API. Namespace io.ipapi dan konstruktor berkunci API dalam README tidak sesuai dengan revisi ini. Status HTTP tidak diperiksa sebelum pendekodean.
C++
ipapi-cpp
Pembaruan diperlukan
Persyaratan
C++20 · CMake · libcurl
Revisi sumber
a5ae87c
Instal
Revisi sumber ini memerlukan pembaruan sebelum digunakan.
Klien saat ini mengurai setiap potongan respons libcurl sebagai dokumen JSON lengkap. Respons yang terbagi menjadi beberapa potongan mungkin tidak didekode dengan benar.
Pemetaan risiko membiarkan is_datacenter dan risk_score tidak ditetapkan. Callback IP sendiri juga menggunakan jenis hasil yang berbeda dari pemanggilnya. Gunakan permintaan HTTP standar hingga jalur ini diperbaiki.
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));
Perilaku klien
Jalankan ini dalam proyek konsol .NET. Antarmuka yang didaftarkan adalah IIApiClient, dengan dua karakter I di awal; nama IIpApiClient dalam README berbeda.
Respons menggunakan objek Isp, Location, dan Risk bersarang. Berikan token pembatalan untuk membatasi permintaan. Metode multi-IP lama tidak didukung API.
Sebelum mengintegrasikan
Permintaan satu IP
Gunakan satu alamat per pencarian. Beberapa klien masih menyediakan metode massal; API menolak permintaan massal. Baca kebijakan pencarian massal
Respons IP sendiri
Endpoint root secara default mengembalikan IP publik proses yang terhubung sebagai teks. Untuk respons JSON IP sendiri yang lengkap, gunakan contoh HTTP
Cakupan verifikasi
Diperiksa saat runtime berarti paket atau revisi sumber yang ditampilkan telah dijalankan untuk pencarian satu IP. Contoh sumber telah ditinjau terhadap kode, tetapi belum dijalankan. Revisi sumber dapat berbeda dari paket yang dipublikasikan.