geoip.go 477 B

12345678910111213141516171819202122232425262728
  1. package third
  2. import (
  3. _ "embed"
  4. "github.com/oschwald/geoip2-golang"
  5. "net"
  6. )
  7. //go:embed GeoLite2-Country.mmdb
  8. var geoDb []byte
  9. func GetCountryByIP(ip string) (string, error) {
  10. // 打开GeoIP数据库
  11. db, err := geoip2.FromBytes(geoDb)
  12. if err != nil {
  13. return "default", err
  14. }
  15. defer db.Close()
  16. // 查询IP地址
  17. country, err := db.Country(net.ParseIP(ip))
  18. if err != nil {
  19. return "default", err
  20. }
  21. // 返回国家名称
  22. return country.Country.IsoCode, nil
  23. }