gohangout
gohangout copied to clipboard
IPIP插件返回结果中的isp字段中英文差异
我在mac上执行,返回结果是ok的,isp字段返回移动,但是我部署到容器环境中,执行结果就有差异,isp字段返回chinamobile.com,除了运营商字段,其他字段结果都是相同的,都是中文,造成这种差异的原因可能有哪些
看一下你的 IPIP 的配置 @yeyuqiu
找到原因了,我前后2次用的是IPDB不同版本,如果是企业定制版,isp字段就会返回chinamobile.com,新增的line字段才表示运营商中文
代码示例:
package main
import (
"fmt"
"github.com/ipipdotnet/ipdb-go"
)
func main() {
var s []string
var m map[string]string
db, _ := ipdb.NewCity("allOld.ipdb")
fmt.Println(db.Fields()) // database support fields
s, _ = db.Find("223.104.150.83", "CN")
fmt.Println(s)
m, _ = db.FindMap("223.104.150.83", "CN")
fmt.Println(m) // return map[string]string
fmt.Println()
db, _ = ipdb.NewCity("allNew.ipdb")
fmt.Println(db.Fields()) // database support fields
s, _ = db.Find("223.104.150.83", "CN")
fmt.Println(s)
m, _ = db.FindMap("223.104.150.83", "CN")
fmt.Println(m) // return map[string]string
}
输出结果:
[country_name region_name city_name owner_domain isp_domain latitude longitude timezone utc_offset china_admin_code idd_code country_code continent_code]
[中国 江苏 南京 移动 32.060255 118.796877 Asia/Shanghai UTC+8 320100 86 CN AP]
map[china_admin_code:320100 city_name:南京 continent_code:AP country_code:CN country_name:中国 idd_code:86 isp_domain:移动 latitude:32.060255 longitude:118.796877 owner_domain: region_name:江苏 timezone:Asia/Shanghai utc_offset:UTC+8]
[country_name region_name city_name owner_domain isp_domain latitude longitude timezone utc_offset china_admin_code idd_code country_code continent_code line]
[中国 江苏 南京 chinamobile.com 32.060255 118.796877 Asia/Shanghai UTC+8 320100 86 CN AP 移动]
map[china_admin_code:320100 city_name:南京 continent_code:AP country_code:CN country_name:中国 idd_code:86 isp_domain:chinamobile.com latitude:32.060255 line:移动 longitude:118.796877 owner_domain: region_name:江苏 timezone:Asia/Shanghai utc_offset:UTC+8]
我修复了下:https://github.com/childe/gohangout/pull/152
谢谢。 PR 里面我提了一些 Review,我们一起看下吧。
另外,我有些怀疑,这里的 Line 就是 ISP 的中文信息吗?是不是可能会是别的东西,或者额外的更多信息?
@heneyin