Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Menganalisis kaedah pertanyaan IP yang berbeza di Golang

Menganalisis kaedah pertanyaan IP yang berbeza di Golang

PHPz
PHPzasal
2023-03-30 13:59:511855semak imbas

IP Lookup Golang (Golang IP Lookup)

Golang ialah bahasa pengaturcaraan sumber terbuka yang dilancarkan oleh Google pada tahun 2007 untuk meningkatkan kecekapan pengaturcaraan dan kebolehbacaan. Kemudian, Golang menjadi salah satu bahasa pengaturcaraan yang sangat popular untuk membina aplikasi web dan bahagian pelayan yang cekap.

Pertanyaan IP ialah salah satu tugas yang sangat biasa dalam aplikasi, ia boleh digunakan untuk menentukan lokasi geografi pelawat atau menghalang akses berniat jahat. Dalam siaran ini, kami akan meneroka cara melakukan pertanyaan IP menggunakan Golang. Kami mula-mula akan membincangkan asas IP dan kemudian membincangkan kaedah pertanyaan IP yang berbeza di Golang.

Asas Alamat IP

Alamat IP ialah alamat Protokol Internet, yang merupakan pengecam unik untuk peranti pada rangkaian. Alamat IP diwakili oleh nombor binari 32-bit, yang juga boleh ditulis sebagai empat nombor perpuluhan, setiap nombor antara 0 dan 255, dipisahkan oleh noktah.

Ruang alamat IPv4 adalah terhad dan hanya boleh mewakili 4294967296 alamat yang berbeza. Disebabkan oleh pertumbuhan pesat Internet, kami akan kehabisan ruang alamat ini tidak lama lagi. Oleh itu, alamat IPv6 telah dibangunkan untuk menyediakan lebih banyak alamat untuk ruang alamat yang lebih besar sebelum ruang alamat IPv4 kehabisan.

Kaedah pertanyaan IP

Di Golang, terdapat dua kaedah untuk pertanyaan IP. Yang pertama ialah menggunakan perpustakaan pihak ketiga untuk pertanyaan IP. Kaedah kedua ialah menggunakan pakej net daripada pustaka standard, yang termasuk beberapa fungsi terbina dalam untuk melaksanakan pertanyaan IP dengan mudah.

Gunakan perpustakaan pihak ketiga

Terdapat banyak perpustakaan pihak ketiga yang popular di pasaran yang boleh mencari maklumat lokasi geografi mengikut alamat IP. Berikut ialah beberapa yang paling banyak digunakan:

  1. GeoIP: https://github.com/oschwald/geoip2-golang

GeoIP ialah popular ketiga- perpustakaan parti , anda boleh mencari maklumat lokasi geografi melalui alamat IP. Ia menyediakan API mudah tetapi berkuasa yang membolehkan anda mencari alamat IP dengan cepat dan tepat. Berikut ialah contoh penggunaan mudah:

import (
    "fmt"
    "github.com/oschwald/geoip2-golang"
    "net"
)

func main() {
    db, err := geoip2.Open("GeoLite2-City.mmdb")
    if err != nil {
        log.Fatal(err)
    }
    defer db.Close()

    ip := net.ParseIP("81.2.69.160")

    record, err := db.City(ip)
    if err != nil {
        log.Fatal(err)
    }

    fmt.Printf("Country: %v\n", record.Country.Names["en"])
    fmt.Printf("City: %v\n", record.City.Names["en"])
    fmt.Printf("Latitude: %v\n", record.Location.Latitude)
    fmt.Printf("Longitude: %v\n", record.Location.Longitude)
}

Dalam contoh ini, kami mula-mula membuka pangkalan data bernama "GeoLite2-City" dan kemudian menggunakan fungsi net.ParseIP untuk menghuraikan alamat IP. Akhir sekali, kami menggunakan fungsi db.City(ip) untuk menanyakan maklumat bandar alamat IP ini.

  1. IP2Location: https://github.com/ip2location/ip2location-go

IP2Location ialah satu lagi perpustakaan carian alamat IP popular yang boleh mencari geografi mengikut maklumat lokasi alamat IP . Ia menyediakan maklumat alamat IP terperinci seperti alamat IP, ISP, negara, bandar, latitud, longitud, dll. Berikut ialah contoh penggunaan mudah:

import (
    "fmt"
    "github.com/ip2location/ip2location-go"
)

func main() {
    db, err := ip2location.OpenDB("IP2LOCATION-LITE-DB1.IPV6.BIN")
    if err != nil {
        log.Fatal(err)
    }
    defer db.Close()

    result, err := db.Get_all("81.2.69.160")
    if err != nil {
        log.Fatal(err)
    }

    fmt.Printf("Country: %v\n", result.Country_long)
    fmt.Printf("City: %v\n", result.City)
    fmt.Printf("Latitude: %v\n", result.Latitude)
    fmt.Printf("Longitude: %v\n", result.Longitude)
}

Dalam contoh ini, kami mula-mula membuka pangkalan data bernama "IP2LOCATION-LITE-DB1.IPV6.BIN" dan kemudian menggunakan db.Get_all(" 81.2.69.160" ) berfungsi untuk menanyakan maklumat terperinci alamat IP ini.

Gunakan pakej bersih dalam perpustakaan standard

Selain menggunakan perpustakaan pihak ketiga, pakej bersih dalam perpustakaan standard Golang juga menyediakan beberapa fungsi terbina dalam yang boleh melaksanakan pertanyaan IP dengan mudah . Berikut ialah beberapa fungsi popular:

  1. net.LookupIP:

Fungsi ini mencari alamat IP nama hos. Berikut ialah contoh mudah:

ips, err := net.LookupIP("www.google.com")
if err != nil {
    log.Fatal(err)
}

for _, ip := range ips {
    fmt.Println(ip)
}

Dalam contoh ini, kami menggunakan fungsi net.LookupIP("www.google.com") untuk menanyakan alamat IP www.google.com. Kami kemudiannya menggunakan gelung untuk mengulang melalui alamat IP ini.

  1. net.ParseIP:

Fungsi ini boleh menukar alamat IP dalam bentuk rentetan kepada nilai jenis net.IP. Berikut ialah contoh mudah:

ip := net.ParseIP("81.2.69.160")
if ip == nil {
    log.Fatal("Invalid IP address")
}

fmt.Println(ip)

Dalam contoh ini, kami menggunakan fungsi net.ParseIP("81.2.69.160") untuk menanyakan alamat IP dan menukarkannya kepada nilai jenis net.IP . Kemudian, kami menggunakan fungsi fmt.Println untuk mencetak alamat IP.

Ringkasan

Pertanyaan IP ialah salah satu tugas yang sangat biasa dalam aplikasi, ia boleh digunakan untuk menentukan lokasi geografi pelawat atau menghalang akses berniat jahat. Dalam artikel ini, kami memperkenalkan asas IP dan kemudian membincangkan kaedah pertanyaan IP yang berbeza di Golang. Kami boleh menggunakan perpustakaan pihak ketiga seperti GeoIP atau IP2Location, atau kami boleh menggunakan fungsi terbina dalam pakej bersih dalam perpustakaan standard Golang. Menggunakan kaedah ini, kami boleh melakukan pertanyaan IP dengan mudah, menghasilkan keselamatan dan pengalaman pengguna yang baik.

Atas ialah kandungan terperinci Menganalisis kaedah pertanyaan IP yang berbeza di Golang. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel sebelumnya:Cara memanjangkan golangArtikel seterusnya:Cara memanjangkan golang