myip
互联网侧调试访问者信息的工具
背景
我们经常想知道:
- 我们的公网IP是什么
- 我们使用的代理是否是高匿(是否带有X-Forwarded-For或者X-Real-IP等,是否有X-Via等)
- 我们修改Header头的程序是否生效,比如User-Agent等
- 我们想要获取一些更多的IP属性,比如国家信息
这时候我们又不想自己取开发代码写脚本,成本高收益低,而现有的平台又很有可能不稳定(比如某一天需要登录才能使用)。我实在不觉得屁大一点事就要登录甚至收费,所以还不如自己做一个,放到互联网上给大家使用。
可以访问 http://ip.bmh.im 来验证
Feature
- / 首页只返回IP的字符串
- /h或者/header json格式,返回ip,continent,country,city,location,upstream,header
- /g或者/geo 行格式,ip,upstream,country,province,city
- /c或者/country json格式,ip,country
- /ip json格式,带有ip,country,upstream(上一来源如果有的话)
- 支持ipv6,需要dns配置ipv6对应的AAAA记录,
dig AAAA ip.bmh.im
,客户端是ipv6的话可以直接查询 - 所有接口支持pretty模式,默认为false,参数带有p或者pretty的情况下,会格式化输出json
- 支持let's encrypt自动启动https证书模式
-autotls
运行
go install github.com/LubyRuffy/myip@latest
`go env GOPATH`/bin/myip
绑定到80端口需要root权限
cd `go env GOPATH`/bin
sudo ./myip -addr :80
# 或者nohup运行
sudo nohup sh -c "`go env GOPATH`/bin/myip -addr :80" &
启动tls自动更新let's encrypt证书
sudo `go env GOPATH`/bin/myip -addr :80 -autotls -subdomains ip.bmh.im
测试
获取ip
直接连接
$ curl ip.bmh.im
61.148.1.1
使用代理
$ http_proxy=http://2.2.2.2 curl ip.bmh.im
2.2.2.2
获取country,json格式
$ curl ip.bmh.im/c?p
{
"ip": "155.138.1.1",
"country": "United States",
}
$ http_proxy=http://155.138.1.1 curl ip.bmh.im/c?p
{
"ip": "155.138.1.1",
"country": "United States",
"upstream": "61.148.1.1",
"upstream_country": "China"
}
获取geo,行的形式
$ curl ip.bmh.im/geo
61.148.1.1,China,Beijing,Xicheng District,Asia
$ http_proxy=http://155.138.1.1 curl ip.bmh.im/geo
155.138.1.1,United States,Georgia,Atlanta (Knight Park/Howell Station),North America
61.148.1.1,China,Beijing,Xicheng District,Asia
获取header,json格式
$ http_proxy=http://155.138.1.1 curl ip.bmh.im/h?p
{
"geo": {
"city": {
"names": {
"en": "Xicheng District"
}
},
"continent": {
"code": "AS",
"geoname_id": 6255147,
"names": {
"en": "Asia"
}
},
"country": {
"geoname_id": 1814991,
"is_in_european_union": false,
"iso_code": "CN",
"names": {
"en": "China"
}
},
"location": {
"latitude": 39.9175,
"longitude": 116.362
},
"subdivisions": [
{
"names": {
"en": "Beijing"
}
}
]
},
"header": "GET /h HTTP/1.1\nUser-Agent: curl/7.83.0\nAccept: */*\nVia: 1.1 proxAtlanta01 (squid/4.11)\nX-Forwarded-For: 61.148.74.134\nCache-Control: max-age=259200\nConnection: keep-alive\nIf-Modified-Since: Sat, 30 Jul 2022 13:23:07 GMT\n",
"ip": "155.138.1.1",
"upstream": "61.148.1.1",
"upstream_geo": {
"city": {
"names": {
"en": "Xicheng District"
}
},
"continent": {
"code": "AS",
"geoname_id": 6255147,
"names": {
"en": "Asia"
}
},
"country": {
"geoname_id": 1814991,
"is_in_european_union": false,
"iso_code": "CN",
"names": {
"en": "China"
}
},
"location": {
"latitude": 39.9175,
"longitude": 116.362
},
"subdivisions": [
{
"names": {
"en": "Beijing"
}
}
]
}
}
发布
./scripts/tag_release.sh
致谢
目前看起来,不用登陆,还能免费下载和使用的ip库,只剩下db-ip了。