Maison >développement back-end >Golang >Analyser différentes méthodes de requête IP dans Golang

Analyser différentes méthodes de requête IP dans Golang

PHPz
PHPzoriginal
2023-03-30 13:59:511869parcourir

IP Lookup Golang (Golang IP Lookup)

Golang est un langage de programmation open source lancé par Google en 2007 pour améliorer l'efficacité et la lisibilité de la programmation. Plus tard, Golang est devenu l'un des langages de programmation les plus populaires pour créer des applications Web efficaces et côté serveur.

La recherche IP est l'une des tâches les plus courantes de l'application, elle peut être utilisée pour déterminer la localisation géographique du visiteur ou empêcher un accès malveillant. Dans cet article, nous explorerons comment effectuer une requête IP à l'aide de Golang. Nous aborderons d’abord les bases de l’IP, puis discuterons des différentes méthodes d’interrogation IP dans Golang.

Bases de l'adresse IP

Une adresse IP est une adresse de protocole Internet (protocole IP), qui est un identifiant unique pour un appareil sur un réseau. Une adresse IP est représentée par un nombre binaire de 32 bits, qui peut également être écrit sous forme de quatre nombres décimaux, chaque nombre étant compris entre 0 et 255, séparés par des points.

L'espace d'adressage IPv4 est limité et ne peut représenter que 4294967296 adresses différentes. En raison de la croissance explosive d’Internet, nous manquerons bientôt de cet espace d’adressage. Par conséquent, les adresses IPv6 ont été développées pour fournir davantage d’adresses pour un espace d’adressage plus grand avant que l’espace d’adressage IPv4 ne soit épuisé.

Méthode de requête IP

Dans Golang, il existe deux méthodes pour effectuer une requête IP. La première consiste à utiliser une bibliothèque tierce pour les requêtes IP. La deuxième méthode consiste à utiliser le package net de la bibliothèque standard, qui comprend certaines fonctions intégrées pour effectuer facilement des recherches IP.

Utilisez des bibliothèques tierces

Il existe de nombreuses bibliothèques tierces populaires sur le marché qui peuvent trouver des informations de géolocalisation par adresse IP. Voici quelques-uns des plus utilisés :

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

GeoIP est une bibliothèque tierce populaire qui peut trouver des informations de géolocalisation par adresse IP. Il fournit une API simple mais puissante qui vous permet de trouver des adresses IP rapidement et avec précision. Voici un exemple d'utilisation simple :

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)
}

Dans cet exemple, nous ouvrons d'abord une base de données nommée "GeoLite2-City", puis utilisons la fonction net.ParseIP pour analyser une adresse IP. Enfin, nous utilisons la fonction db.City(ip) pour interroger les informations de ville de cette adresse IP.

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

IP2Location est une autre bibliothèque de recherche d'adresses IP populaire qui peut trouver des informations de localisation géographique via des adresses IP. Il fournit des informations détaillées sur l'adresse IP telles que l'adresse IP, le FAI, le pays, la ville, la latitude, la longitude, etc. Voici un exemple d'utilisation simple :

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)
}

Dans cet exemple, nous ouvrons d'abord une base de données nommée "IP2LOCATION-LITE-DB1.IPV6.BIN", puis utilisons la fonction db.Get_all("81.2.69.160") interrogeons les détails de cette adresse IP.

Utilisez le package net dans la bibliothèque standard

En plus d'utiliser des bibliothèques tierces, le package net de la bibliothèque standard Golang fournit également certaines fonctions intégrées pour effectuer facilement des requêtes IP. Voici quelques fonctions populaires :

  1. net.LookupIP :

Cette fonction recherche l'adresse IP d'un nom d'hôte. Voici un exemple simple :

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

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

Dans cet exemple, nous utilisons la fonction net.LookupIP("www.google.com") pour interroger l'adresse IP de www.google.com. Nous utilisons ensuite une boucle pour parcourir ces adresses IP.

  1. net.ParseIP :

Cette fonction peut convertir une adresse IP sous forme de chaîne en une valeur de type net.IP. Voici un exemple simple :

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

fmt.Println(ip)

Dans cet exemple, nous utilisons la fonction net.ParseIP("81.2.69.160") pour interroger une adresse IP et la convertir en une valeur de type net.IP. Ensuite, nous utilisons la fonction fmt.Println pour imprimer l'adresse IP.

Résumé

La requête IP est l'une des tâches les plus courantes dans les applications, elle peut être utilisée pour déterminer la localisation géographique du visiteur ou empêcher un accès malveillant. Dans cet article, nous avons présenté les bases de l'IP, puis discuté des différentes méthodes de requête IP dans Golang. Nous pouvons utiliser des bibliothèques tierces telles que GeoIP ou IP2Location, ou nous pouvons utiliser les fonctions intégrées du package net dans la bibliothèque standard Golang. Grâce à ces méthodes, nous pouvons facilement effectuer des requêtes IP, ce qui garantit la sécurité et une bonne expérience utilisateur.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Article précédent:Comment étendre GolangArticle suivant:Comment étendre Golang