如何用curl或API查询自己的IP?
在终端输入curl ipnow.kr,当前连接的公网IP会立即以一行文字输出;使用curl ipnow.kr/json则会以JSON格式返回位置、运营商、User-Agent等详细信息。在Windows PowerShell中也能用类似的方式快速查询。
最后更新
用curl一行查看IP
在终端输入curl ipnow.kr,会直接以一行文字输出当前的公网IP,而不是HTML页面。curl ipnow.kr/ip同样只返回一行IP。
这两个地址都便于在脚本中直接存入变量使用,常被用于服务器状态检查脚本或确认远程服务器的公网IP。
用JSON API获取详细信息
执行curl -s ipnow.kr/json可以获得JSON格式的响应。如果安装了jq,用curl -s ipnow.kr/json | jq可以整理成更易读的格式。
JSON中包含ip、ip_version、country_code、country、region、city、latitude、longitude、asn、isp、as_org、user_agent、browser、browser_version、os、device、is_bot、is_ai、bot_name、accept_language、protocol、time等字段。
如何分别强制查询IPv4和IPv6?
使用curl -4 ipnow.kr会强制通过IPv4连接,查看IPv4公网地址;使用curl -6 ipnow.kr则强制通过IPv6连接,查看IPv6地址。如果两者结果不同,说明该设备或服务器同时支持IPv4和IPv6的双栈环境。
在Windows PowerShell中查询
在PowerShell中,(Invoke-WebRequest ipnow.kr/ip).Content可以只获取IP字符串,而irm ipnow.kr/json(Invoke-RestMethod的别名)可以直接把JSON响应解析为对象,按字段分别处理。
如何在脚本中自动获取IP?
在bash脚本中,可以用MYIP=$(curl -s ipnow.kr/ip)这样的写法存入变量,直接用于部署脚本或防火墙规则。
在JavaScript中可以用fetch("https://ipnow.kr/json").then(r => r.json()).then(data => console.log(data.ip))这样的方式调用,由于CORS对所有来源都开放,在浏览器中直接调用也不会被阻止。
如何用curl或API查询自己的IP?:操作步骤
- 只查看IP在终端执行
curl ipnow.kr或curl ipnow.kr/ip,直接输出公网IP。 - 用JSON查看详细信息执行
curl -s ipnow.kr/json,如果需要可以用| jq整理成易读格式。 - 强制指定IPv4/IPv6用
curl -4 ipnow.kr或curl -6 ipnow.kr只查看想要的地址类型。 - 在PowerShell中查询执行
(Invoke-WebRequest ipnow.kr/ip).Content或irm ipnow.kr/json。 - 接入脚本在bash中用
$(curl -s ipnow.kr/ip)存入变量,在JavaScript中用fetch调用/json取出需要的字段。
常见问题
在浏览器中用fetch调用会出现CORS错误吗?
ipnow.kr的API对所有来源都开放了CORS(Access-Control-Allow-Origin: *),因此无需专门的服务器,可以直接在浏览器JavaScript中调用。
使用API需要认证密钥吗?
不需要。无需注册账号或申请API密钥,任何人都可以免费用curl或fetch直接调用。
curl ipnow.kr和curl ipnow.kr/json有什么区别?
curl ipnow.kr和curl ipnow.kr/ip只返回一行IP地址,而curl ipnow.kr/json会以JSON格式返回位置、运营商、User-Agent等详细信息。
为什么JSON里也包含User-Agent字段?
这是为了同时记录发起请求的客户端(curl、浏览器等)的User-Agent,方便知道是在什么环境下查询的。关于User-Agent本身的说明请参考什么是User-Agent。