[{"data":1,"prerenderedAt":4},["ShallowReactive",2],{"$f2tyl5qyhwp5za":3},"\u003Ch1 id=\"api-查询指定-ip-地址的位置信息\" tabindex=\"-1\">\u003Ca class=\"header-anchor\" href=\"#api-查询指定-ip-地址的位置信息\">\u003Cspan>[API] 查询指定 IP 地址的位置信息\u003C\u002Fspan>\u003C\u002Fa>\u003C\u002Fh1>\n\u003Ch2 id=\"1-接口描述\" tabindex=\"-1\">\u003Ca class=\"header-anchor\" href=\"#1-接口描述\">\u003Cspan>1. 接口描述\u003C\u002Fspan>\u003C\u002Fa>\u003C\u002Fh2>\n\u003Cblockquote>\n\u003Cp>IP 库来源于网络,本项目不对结果的准确性负责,请在中国法律许可范围内使用.\u003C\u002Fp>\n\u003C\u002Fblockquote>\n\u003Cp>接口地址： \u003Ccode>https:\u002F\u002Fcn-jiangsu.api-ipw.wsmdn.top\u002Fv1\u002Flocation\u002F&lt;ip&gt;\u003C\u002Fcode>（公开实例，见 1.1）\u003C\u002Fp>\n\u003Cp>请求方法：\u003Ccode>GET\u003C\u002Fcode>\u003C\u002Fp>\n\u003Cp>用途：查询\u003Cstrong>任意 IP\u003C\u002Fstrong>（IPv4 或 IPv6）的归属地，返回与本项目其他查询同一套多源聚合结果。\u003C\u002Fp>\n\u003Cul>\n\u003Cli>IP 写在\u003Cstrong>路径\u003C\u002Fstrong>里，不是查询串：\u003Ccode>\u002Fv1\u002Flocation\u002F106.224.145.147\u003C\u002Fcode>。IPv6 直接用标准写法（含 \u003Ccode>:\u003C\u002Fcode>）即可，无需 URL 编码以外的特殊处理。\u003C\u002Fli>\n\u003Cli>与「获取客户端公网 IP 及位置」共用同一个处理器与同一份 IP 库，\u003Cstrong>区别只是&quot;查谁&quot;\u003C\u002Fstrong>：不带路径参数 = 查请求方自己，带 = 查指定地址。\u003C\u002Fli>\n\u003Cli>出参结构与「获取客户端公网 IP 及位置」\u003Cstrong>完全一致\u003C\u002Fstrong>，见该页的字段表，此处不重复。\u003C\u002Fli>\n\u003Cli>免鉴权规则同所有 \u003Ccode>\u002Fv1\u002F*\u003C\u002Fcode> 端点：节点配了 \u003Ccode>access-token\u003C\u002Fcode> 才需要 \u003Ccode>Authorization: Bearer\u003C\u002Fcode>。\u003C\u002Fli>\n\u003Cli>查 IP 归属地\u003Cstrong>不需要\u003C\u002Fstrong>目标是本项目节点、也不做连通性探测，只查库；因此查任何公网 IP 都是同样耗时。\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch3 id=\"11-公开实例\" tabindex=\"-1\">\u003Ca class=\"header-anchor\" href=\"#11-公开实例\">\u003Cspan>1.1 公开实例\u003C\u002Fspan>\u003C\u002Fa>\u003C\u002Fh3>\n\u003Cp>本项目对外开放了一个江苏节点，可以直接用它把本接口调通，\u003Cstrong>无需令牌\u003C\u002Fstrong>：\u003C\u002Fp>\n\u003Ctable>\n\u003Cthead>\n\u003Ctr>\n\u003Cth>方式\u003C\u002Fth>\n\u003Cth>地址\u003C\u002Fth>\n\u003C\u002Ftr>\n\u003C\u002Fthead>\n\u003Ctbody>\n\u003Ctr>\n\u003Ctd>直连节点（推荐）\u003C\u002Ftd>\n\u003Ctd>\u003Ccode>https:\u002F\u002Fcn-jiangsu.api-ipw.wsmdn.top\u002Fv1\u002Flocation\u002F&lt;ip&gt;\u003C\u002Fcode>\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>经中间件转发\u003C\u002Ftd>\n\u003Ctd>\u003Ccode>https:\u002F\u002Fmiddleware-1.api-ipw.wsmdn.top\u002Fv1\u002Fcn-jiangsu\u002Flocation\u002F&lt;ip&gt;\u003C\u002Fcode>\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003C\u002Ftbody>\n\u003C\u002Ftable>\n\u003Cp>两种写法都是「节点 \u002F 接口 \u002F 目标」三段：直连时端点本身就是节点，经中间件时多一段节点标识。\n中间件入口的 \u003Ccode>\u002Fv1\u002F\u003C\u002Fcode> 前缀与 \u003Ccode>\u002Fmiddleware\u002F\u003C\u002Fcode> 前缀等价，用哪个都行。\u003C\u002Fp>\n\u003Cblockquote>\n\u003Cp>公共实例是\u003Cstrong>共享\u003C\u002Fstrong>的，调试与小流量接入没问题，请勿高频轮询、批量抓取，也不要拿它当线上服务的依赖。\u003C\u002Fp>\n\u003C\u002Fblockquote>\n\u003Ch3 id=\"12-还有别的节点--拨测控制台\" tabindex=\"-1\">\u003Ca class=\"header-anchor\" href=\"#12-还有别的节点--拨测控制台\">\u003Cspan>1.2 还有别的节点 —— 拨测控制台\u003C\u002Fspan>\u003C\u002Fa>\u003C\u002Fh3>\n\u003Cp>上面的江苏节点只是节点池里的一个。节点池的入口是拨测控制台 \u003Ca href=\"https:\u002F\u002Fboce.wsmdn.top\">https:\u002F\u002Fboce.wsmdn.top\u003C\u002Fa>：\n登录后进「可用节点」页，能看到\u003Cstrong>全部已启用节点\u003C\u002Fstrong>的节点标识、归属地、归属池（定位 \u002F 拨测）、\n协议栈与在线状态，每行都能一键复制调用前缀 —— 把上面那个中间件地址换成控制台给你的入口域名，\n再接上 \u003Ccode>\u002Fv1\u002F&lt;节点标识&gt;\u002F\u003C\u002Fcode> 就是完整前缀，\u003Cstrong>换节点只动中间那一段标识\u003C\u002Fstrong>。\u003C\u002Fp>\n\u003Cp>比自己搭一套省事的地方：\u003C\u002Fp>\n\u003Cul>\n\u003Cli>\u003Cstrong>节点现成\u003C\u002Fstrong> —— 名单里的节点都是已经部署好的，不用自己找机器、装程序、配隧道。\u003C\u002Fli>\n\u003Cli>\u003Cstrong>入口现成\u003C\u002Fstrong> —— 统一走 HTTPS 转发，证书与反向代理不用自己操心。\u003C\u002Fli>\n\u003Cli>\u003Cstrong>一套地址调所有节点\u003C\u002Fstrong> —— 换节点只改标识，接口路径、参数、返回结构都不变。\u003C\u002Fli>\n\u003Cli>\u003Cstrong>池与栈标得很清楚\u003C\u002Fstrong> —— 定位类请求走定位池，拨测类走拨测池，两个池都有的节点两种都能接。\u003C\u002Fli>\n\u003Cli>\u003Cstrong>名单会自己更新\u003C\u002Fstrong> —— 新接入的节点自动出现在列表里，不需要改代码。\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>用它调本接口（可直接粘贴执行）：\u003C\u002Fp>\n\u003Cpre class=\"shiki vitesse-dark\" style=\"background-color:#121212;color:#dbd7caee\" tabindex=\"0\">\u003Ccode class=\"language-bash\">\u003Cspan class=\"line\">\u003Cspan style=\"color:#758575DD\"># 用列表里的江苏节点查一个 IP\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#80A665\">curl\u003C\u002Fspan>\u003Cspan style=\"color:#C98A7D\"> https:\u002F\u002Fmiddleware-1.api-ipw.wsmdn.top\u002Fv1\u002Fcn-jiangsu\u002Flocation\u002F106.224.145.147\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#758575DD\"># 换成别的节点：只改中间那一段标识\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#80A665\">curl\u003C\u002Fspan>\u003Cspan style=\"color:#C98A7D\"> https:\u002F\u002Fmiddleware-1.api-ipw.wsmdn.top\u002Fv1\u002F\u003C\u002Fspan>\u003Cspan style=\"color:#CB7676\">&#x3C;\u003C\u002Fspan>\u003Cspan style=\"color:#C98A7D\">节点标\u003C\u002Fspan>\u003Cspan style=\"color:#DBD7CAEE\">识\u003C\u002Fspan>\u003Cspan style=\"color:#CB7676\">>\u003C\u002Fspan>\u003Cspan style=\"color:#C98A7D\">\u002Flocation\u002F106.224.145.147\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cblockquote>\n\u003Cp>节点有上下线，\u003Cstrong>离线的节点调用会失败\u003C\u002Fstrong>（返回 \u003Ccode>502\u003C\u002Fcode>）——名单上标了在线状态，挑在线的用。\u003C\u002Fp>\n\u003C\u002Fblockquote>\n\u003Ch2 id=\"2-输入参数\" tabindex=\"-1\">\u003Ca class=\"header-anchor\" href=\"#2-输入参数\">\u003Cspan>2. 输入参数\u003C\u002Fspan>\u003C\u002Fa>\u003C\u002Fh2>\n\u003Ctable>\n\u003Cthead>\n\u003Ctr>\n\u003Cth>参数名称\u003C\u002Fth>\n\u003Cth>类型\u003C\u002Fth>\n\u003Cth>描述\u003C\u002Fth>\n\u003C\u002Ftr>\n\u003C\u002Fthead>\n\u003Ctbody>\n\u003Ctr>\n\u003Ctd>\u003Ccode>ip\u003C\u002Fcode>(必选，路径)\u003C\u002Ftd>\n\u003Ctd>String\u003C\u002Ftd>\n\u003Ctd>要查询的 IP，IPv4 或 IPv6 均可，例如 \u003Ccode>\u002Fv1\u002Flocation\u002F106.224.145.147\u003C\u002Fcode>\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003C\u002Ftbody>\n\u003C\u002Ftable>\n\u003Cblockquote>\n\u003Cp>路径中的 IP 不要带方括号。IPv6 形如 \u003Ccode>\u002Fv1\u002Flocation\u002F2400:3200::1\u003C\u002Fcode>。\u003C\u002Fp>\n\u003C\u002Fblockquote>\n\u003Ch2 id=\"3-输出参数\" tabindex=\"-1\">\u003Ca class=\"header-anchor\" href=\"#3-输出参数\">\u003Cspan>3. 输出参数\u003C\u002Fspan>\u003C\u002Fa>\u003C\u002Fh2>\n\u003Cp>与「获取客户端公网 IP 及位置」相同：顶层为「源名 → 该源结果」的字典，\u003Ccode>ip\u003C\u002Fcode> 字段回显被查询的地址。取值约定（未加载、出错、空字段、经纬度类型）也一致。\u003C\u002Fp>\n\u003Cp>\u003Cstrong>非法 IP 是&quot;看起来成功&quot;的\u003C\u002Fstrong>：IP 传错时 HTTP 仍返回 \u003Ccode>200\u003C\u002Fcode>，但每个源会各自报错，形如：\u003C\u002Fp>\n\u003Cpre class=\"shiki vitesse-dark\" style=\"background-color:#121212;color:#dbd7caee\" tabindex=\"0\">\u003Ccode class=\"language-json\">\u003Cspan class=\"line\">\u003Cspan style=\"color:#666666\">{\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#B8A96577\">  \"\u003C\u002Fspan>\u003Cspan style=\"color:#B8A965\">ip\u003C\u002Fspan>\u003Cspan style=\"color:#B8A96577\">\"\u003C\u002Fspan>\u003Cspan style=\"color:#666666\">:\u003C\u002Fspan>\u003Cspan style=\"color:#C98A7D77\"> \"\u003C\u002Fspan>\u003Cspan style=\"color:#C98A7D\">not-an-ip\u003C\u002Fspan>\u003Cspan style=\"color:#C98A7D77\">\"\u003C\u002Fspan>\u003Cspan style=\"color:#666666\">,\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#B8A96577\">  \"\u003C\u002Fspan>\u003Cspan style=\"color:#B8A965\">ip2region\u003C\u002Fspan>\u003Cspan style=\"color:#B8A96577\">\"\u003C\u002Fspan>\u003Cspan style=\"color:#666666\">:\u003C\u002Fspan>\u003Cspan style=\"color:#C98A7D77\"> \"\u003C\u002Fspan>\u003Cspan style=\"color:#C98A7D\">error: parse ip not-an-ip: invalid ip address: not-an-ip\u003C\u002Fspan>\u003Cspan style=\"color:#C98A7D77\">\"\u003C\u002Fspan>\u003Cspan style=\"color:#666666\">,\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#B8A96577\">  \"\u003C\u002Fspan>\u003Cspan style=\"color:#B8A965\">maxmind_city\u003C\u002Fspan>\u003Cspan style=\"color:#B8A96577\">\"\u003C\u002Fspan>\u003Cspan style=\"color:#666666\">:\u003C\u002Fspan>\u003Cspan style=\"color:#C98A7D77\"> \"\u003C\u002Fspan>\u003Cspan style=\"color:#C98A7D\">error: ParseAddr(\u003C\u002Fspan>\u003Cspan style=\"color:#C99076\">\\\"\u003C\u002Fspan>\u003Cspan style=\"color:#C98A7D\">not-an-ip\u003C\u002Fspan>\u003Cspan style=\"color:#C99076\">\\\"\u003C\u002Fspan>\u003Cspan style=\"color:#C98A7D\">): unable to parse IP\u003C\u002Fspan>\u003Cspan style=\"color:#C98A7D77\">\"\u003C\u002Fspan>\u003Cspan style=\"color:#666666\">,\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#B8A96577\">  \"\u003C\u002Fspan>\u003Cspan style=\"color:#B8A965\">ip2location\u003C\u002Fspan>\u003Cspan style=\"color:#B8A96577\">\"\u003C\u002Fspan>\u003Cspan style=\"color:#666666\">:\u003C\u002Fspan>\u003Cspan style=\"color:#666666\"> {\u003C\u002Fspan>\u003Cspan style=\"color:#B8A96577\"> \"\u003C\u002Fspan>\u003Cspan style=\"color:#B8A965\">country\u003C\u002Fspan>\u003Cspan style=\"color:#B8A96577\">\"\u003C\u002Fspan>\u003Cspan style=\"color:#666666\">:\u003C\u002Fspan>\u003Cspan style=\"color:#C98A7D77\"> \"\u003C\u002Fspan>\u003Cspan style=\"color:#C98A7D\">Invalid IP address.\u003C\u002Fspan>\u003Cspan style=\"color:#C98A7D77\">\"\u003C\u002Fspan>\u003Cspan style=\"color:#666666\">,\u003C\u002Fspan>\u003Cspan style=\"color:#B8A96577\"> \"\u003C\u002Fspan>\u003Cspan style=\"color:#B8A965\">city\u003C\u002Fspan>\u003Cspan style=\"color:#B8A96577\">\"\u003C\u002Fspan>\u003Cspan style=\"color:#666666\">:\u003C\u002Fspan>\u003Cspan style=\"color:#C98A7D77\"> \"\u003C\u002Fspan>\u003Cspan style=\"color:#C98A7D\">Invalid IP address.\u003C\u002Fspan>\u003Cspan style=\"color:#C98A7D77\">\"\u003C\u002Fspan>\u003Cspan style=\"color:#666666\"> },\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#B8A96577\">  \"\u003C\u002Fspan>\u003Cspan style=\"color:#B8A965\">ip2location_asn\u003C\u002Fspan>\u003Cspan style=\"color:#B8A96577\">\"\u003C\u002Fspan>\u003Cspan style=\"color:#666666\">:\u003C\u002Fspan>\u003Cspan style=\"color:#666666\"> {\u003C\u002Fspan>\u003Cspan style=\"color:#B8A96577\"> \"\u003C\u002Fspan>\u003Cspan style=\"color:#B8A965\">asn\u003C\u002Fspan>\u003Cspan style=\"color:#B8A96577\">\"\u003C\u002Fspan>\u003Cspan style=\"color:#666666\">:\u003C\u002Fspan>\u003Cspan style=\"color:#C98A7D77\"> \"\u003C\u002Fspan>\u003Cspan style=\"color:#C98A7D\">Invalid IP address.\u003C\u002Fspan>\u003Cspan style=\"color:#C98A7D77\">\"\u003C\u002Fspan>\u003Cspan style=\"color:#666666\">,\u003C\u002Fspan>\u003Cspan style=\"color:#B8A96577\"> \"\u003C\u002Fspan>\u003Cspan style=\"color:#B8A965\">as\u003C\u002Fspan>\u003Cspan style=\"color:#B8A96577\">\"\u003C\u002Fspan>\u003Cspan style=\"color:#666666\">:\u003C\u002Fspan>\u003Cspan style=\"color:#C98A7D77\"> \"\u003C\u002Fspan>\u003Cspan style=\"color:#C98A7D\">Invalid IP address.\u003C\u002Fspan>\u003Cspan style=\"color:#C98A7D77\">\"\u003C\u002Fspan>\u003Cspan style=\"color:#666666\"> }\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#666666\">}\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>所以\u003Cstrong>判断成功与否要看字段内容，不能只看状态码\u003C\u002Fstrong>：字段是对象才有结论；是 \u003Ccode>&quot;error: ...&quot;\u003C\u002Fcode> 字符串或 \u003Ccode>&quot;Invalid IP address.&quot;\u003C\u002Fcode> 就是没查到。建议调用前先自行校验 IP 格式。\u003C\u002Fp>\n\u003Ch2 id=\"4-示例\" tabindex=\"-1\">\u003Ca class=\"header-anchor\" href=\"#4-示例\">\u003Cspan>4. 示例\u003C\u002Fspan>\u003C\u002Fa>\u003C\u002Fh2>\n\u003Ch3 id=\"41-curl-查询指定-ip-的位置\" tabindex=\"-1\">\u003Ca class=\"header-anchor\" href=\"#41-curl-查询指定-ip-的位置\">\u003Cspan>4.1 cURL 查询指定 IP 的位置\u003C\u002Fspan>\u003C\u002Fa>\u003C\u002Fh3>\n\u003Cpre class=\"shiki vitesse-dark\" style=\"background-color:#121212;color:#dbd7caee\" tabindex=\"0\">\u003Ccode class=\"language-bash\">\u003Cspan class=\"line\">\u003Cspan style=\"color:#80A665\">curl\u003C\u002Fspan>\u003Cspan style=\"color:#C98A7D\"> https:\u002F\u002Fcn-jiangsu.api-ipw.wsmdn.top\u002Fv1\u002Flocation\u002F106.224.145.147\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#758575DD\"># IPv6 同样直接拼：curl https:\u002F\u002Fcn-jiangsu.api-ipw.wsmdn.top\u002Fv1\u002Flocation\u002F2400:3200::1\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#758575DD\"># 经公共中间件转发（见 1.1）：\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#758575DD\"># curl https:\u002F\u002Fmiddleware-1.api-ipw.wsmdn.top\u002Fv1\u002Fcn-jiangsu\u002Flocation\u002F106.224.145.147\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>输出示例（节选，真实响应）：\u003C\u002Fp>\n\u003Cpre class=\"shiki vitesse-dark\" style=\"background-color:#121212;color:#dbd7caee\" tabindex=\"0\">\u003Ccode class=\"language-json\">\u003Cspan class=\"line\">\u003Cspan style=\"color:#666666\">{\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#B8A96577\">  \"\u003C\u002Fspan>\u003Cspan style=\"color:#B8A965\">ip\u003C\u002Fspan>\u003Cspan style=\"color:#B8A96577\">\"\u003C\u002Fspan>\u003Cspan style=\"color:#666666\">:\u003C\u002Fspan>\u003Cspan style=\"color:#C98A7D77\"> \"\u003C\u002Fspan>\u003Cspan style=\"color:#C98A7D\">106.224.145.147\u003C\u002Fspan>\u003Cspan style=\"color:#C98A7D77\">\"\u003C\u002Fspan>\u003Cspan style=\"color:#666666\">,\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#B8A96577\">  \"\u003C\u002Fspan>\u003Cspan style=\"color:#B8A965\">ip2region\u003C\u002Fspan>\u003Cspan style=\"color:#B8A96577\">\"\u003C\u002Fspan>\u003Cspan style=\"color:#666666\">:\u003C\u002Fspan>\u003Cspan style=\"color:#666666\"> {\u003C\u002Fspan>\u003Cspan style=\"color:#B8A96577\"> \"\u003C\u002Fspan>\u003Cspan style=\"color:#B8A965\">country\u003C\u002Fspan>\u003Cspan style=\"color:#B8A96577\">\"\u003C\u002Fspan>\u003Cspan style=\"color:#666666\">:\u003C\u002Fspan>\u003Cspan style=\"color:#C98A7D77\"> \"\u003C\u002Fspan>\u003Cspan style=\"color:#C98A7D\">中国\u003C\u002Fspan>\u003Cspan style=\"color:#C98A7D77\">\"\u003C\u002Fspan>\u003Cspan style=\"color:#666666\">,\u003C\u002Fspan>\u003Cspan style=\"color:#B8A96577\"> \"\u003C\u002Fspan>\u003Cspan style=\"color:#B8A965\">administrative_area\u003C\u002Fspan>\u003Cspan style=\"color:#B8A96577\">\"\u003C\u002Fspan>\u003Cspan style=\"color:#666666\">:\u003C\u002Fspan>\u003Cspan style=\"color:#C98A7D77\"> \"\u003C\u002Fspan>\u003Cspan style=\"color:#C98A7D\">江西省\u003C\u002Fspan>\u003Cspan style=\"color:#C98A7D77\">\"\u003C\u002Fspan>\u003Cspan style=\"color:#666666\">,\u003C\u002Fspan>\u003Cspan style=\"color:#B8A96577\"> \"\u003C\u002Fspan>\u003Cspan style=\"color:#B8A965\">city\u003C\u002Fspan>\u003Cspan style=\"color:#B8A96577\">\"\u003C\u002Fspan>\u003Cspan style=\"color:#666666\">:\u003C\u002Fspan>\u003Cspan style=\"color:#C98A7D77\"> \"\u003C\u002Fspan>\u003Cspan style=\"color:#C98A7D\">南昌市\u003C\u002Fspan>\u003Cspan style=\"color:#C98A7D77\">\"\u003C\u002Fspan>\u003Cspan style=\"color:#666666\">,\u003C\u002Fspan>\u003Cspan style=\"color:#B8A96577\"> \"\u003C\u002Fspan>\u003Cspan style=\"color:#B8A965\">isp\u003C\u002Fspan>\u003Cspan style=\"color:#B8A96577\">\"\u003C\u002Fspan>\u003Cspan style=\"color:#666666\">:\u003C\u002Fspan>\u003Cspan style=\"color:#C98A7D77\"> \"\u003C\u002Fspan>\u003Cspan style=\"color:#C98A7D\">电信\u003C\u002Fspan>\u003Cspan style=\"color:#C98A7D77\">\"\u003C\u002Fspan>\u003Cspan style=\"color:#666666\"> },\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#B8A96577\">  \"\u003C\u002Fspan>\u003Cspan style=\"color:#B8A965\">ip2location\u003C\u002Fspan>\u003Cspan style=\"color:#B8A96577\">\"\u003C\u002Fspan>\u003Cspan style=\"color:#666666\">:\u003C\u002Fspan>\u003Cspan style=\"color:#666666\"> {\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#B8A96577\">    \"\u003C\u002Fspan>\u003Cspan style=\"color:#B8A965\">country\u003C\u002Fspan>\u003Cspan style=\"color:#B8A96577\">\"\u003C\u002Fspan>\u003Cspan style=\"color:#666666\">:\u003C\u002Fspan>\u003Cspan style=\"color:#C98A7D77\"> \"\u003C\u002Fspan>\u003Cspan style=\"color:#C98A7D\">China\u003C\u002Fspan>\u003Cspan style=\"color:#C98A7D77\">\"\u003C\u002Fspan>\u003Cspan style=\"color:#666666\">,\u003C\u002Fspan>\u003Cspan style=\"color:#B8A96577\"> \"\u003C\u002Fspan>\u003Cspan style=\"color:#B8A965\">country_code\u003C\u002Fspan>\u003Cspan style=\"color:#B8A96577\">\"\u003C\u002Fspan>\u003Cspan style=\"color:#666666\">:\u003C\u002Fspan>\u003Cspan style=\"color:#C98A7D77\"> \"\u003C\u002Fspan>\u003Cspan style=\"color:#C98A7D\">CN\u003C\u002Fspan>\u003Cspan style=\"color:#C98A7D77\">\"\u003C\u002Fspan>\u003Cspan style=\"color:#666666\">,\u003C\u002Fspan>\u003Cspan style=\"color:#B8A96577\"> \"\u003C\u002Fspan>\u003Cspan style=\"color:#B8A965\">administrative_area\u003C\u002Fspan>\u003Cspan style=\"color:#B8A96577\">\"\u003C\u002Fspan>\u003Cspan style=\"color:#666666\">:\u003C\u002Fspan>\u003Cspan style=\"color:#C98A7D77\"> \"\u003C\u002Fspan>\u003Cspan style=\"color:#C98A7D\">Jiangxi\u003C\u002Fspan>\u003Cspan style=\"color:#C98A7D77\">\"\u003C\u002Fspan>\u003Cspan style=\"color:#666666\">,\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#B8A96577\">    \"\u003C\u002Fspan>\u003Cspan style=\"color:#B8A965\">city\u003C\u002Fspan>\u003Cspan style=\"color:#B8A96577\">\"\u003C\u002Fspan>\u003Cspan style=\"color:#666666\">:\u003C\u002Fspan>\u003Cspan style=\"color:#C98A7D77\"> \"\u003C\u002Fspan>\u003Cspan style=\"color:#C98A7D\">Ji'an\u003C\u002Fspan>\u003Cspan style=\"color:#C98A7D77\">\"\u003C\u002Fspan>\u003Cspan style=\"color:#666666\">,\u003C\u002Fspan>\u003Cspan style=\"color:#B8A96577\"> \"\u003C\u002Fspan>\u003Cspan style=\"color:#B8A965\">zipcode\u003C\u002Fspan>\u003Cspan style=\"color:#B8A96577\">\"\u003C\u002Fspan>\u003Cspan style=\"color:#666666\">:\u003C\u002Fspan>\u003Cspan style=\"color:#C98A7D77\"> \"\u003C\u002Fspan>\u003Cspan style=\"color:#C98A7D\">343000\u003C\u002Fspan>\u003Cspan style=\"color:#C98A7D77\">\"\u003C\u002Fspan>\u003Cspan style=\"color:#666666\">,\u003C\u002Fspan>\u003Cspan style=\"color:#B8A96577\"> \"\u003C\u002Fspan>\u003Cspan style=\"color:#B8A965\">timezone\u003C\u002Fspan>\u003Cspan style=\"color:#B8A96577\">\"\u003C\u002Fspan>\u003Cspan style=\"color:#666666\">:\u003C\u002Fspan>\u003Cspan style=\"color:#C98A7D77\"> \"\u003C\u002Fspan>\u003Cspan style=\"color:#C98A7D\">+08:00\u003C\u002Fspan>\u003Cspan style=\"color:#C98A7D77\">\"\u003C\u002Fspan>\u003Cspan style=\"color:#666666\">,\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#B8A96577\">    \"\u003C\u002Fspan>\u003Cspan style=\"color:#B8A965\">latitude\u003C\u002Fspan>\u003Cspan style=\"color:#B8A96577\">\"\u003C\u002Fspan>\u003Cspan style=\"color:#666666\">:\u003C\u002Fspan>\u003Cspan style=\"color:#C98A7D77\"> \"\u003C\u002Fspan>\u003Cspan style=\"color:#C98A7D\">27.11716\u003C\u002Fspan>\u003Cspan style=\"color:#C98A7D77\">\"\u003C\u002Fspan>\u003Cspan style=\"color:#666666\">,\u003C\u002Fspan>\u003Cspan style=\"color:#B8A96577\"> \"\u003C\u002Fspan>\u003Cspan style=\"color:#B8A965\">longitude\u003C\u002Fspan>\u003Cspan style=\"color:#B8A96577\">\"\u003C\u002Fspan>\u003Cspan style=\"color:#666666\">:\u003C\u002Fspan>\u003Cspan style=\"color:#C98A7D77\"> \"\u003C\u002Fspan>\u003Cspan style=\"color:#C98A7D\">114.97927\u003C\u002Fspan>\u003Cspan style=\"color:#C98A7D77\">\"\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#666666\">  },\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#B8A96577\">  \"\u003C\u002Fspan>\u003Cspan style=\"color:#B8A965\">qqwry\u003C\u002Fspan>\u003Cspan style=\"color:#B8A96577\">\"\u003C\u002Fspan>\u003Cspan style=\"color:#666666\">:\u003C\u002Fspan>\u003Cspan style=\"color:#666666\"> {\u003C\u002Fspan>\u003Cspan style=\"color:#B8A96577\"> \"\u003C\u002Fspan>\u003Cspan style=\"color:#B8A965\">country\u003C\u002Fspan>\u003Cspan style=\"color:#B8A96577\">\"\u003C\u002Fspan>\u003Cspan style=\"color:#666666\">:\u003C\u002Fspan>\u003Cspan style=\"color:#C98A7D77\"> \"\u003C\u002Fspan>\u003Cspan style=\"color:#C98A7D\">中国\u003C\u002Fspan>\u003Cspan style=\"color:#C98A7D77\">\"\u003C\u002Fspan>\u003Cspan style=\"color:#666666\">,\u003C\u002Fspan>\u003Cspan style=\"color:#B8A96577\"> \"\u003C\u002Fspan>\u003Cspan style=\"color:#B8A965\">country_code\u003C\u002Fspan>\u003Cspan style=\"color:#B8A96577\">\"\u003C\u002Fspan>\u003Cspan style=\"color:#666666\">:\u003C\u002Fspan>\u003Cspan style=\"color:#C98A7D77\"> \"\u003C\u002Fspan>\u003Cspan style=\"color:#C98A7D\">CN\u003C\u002Fspan>\u003Cspan style=\"color:#C98A7D77\">\"\u003C\u002Fspan>\u003Cspan style=\"color:#666666\">,\u003C\u002Fspan>\u003Cspan style=\"color:#B8A96577\"> \"\u003C\u002Fspan>\u003Cspan style=\"color:#B8A965\">administrative_area\u003C\u002Fspan>\u003Cspan style=\"color:#B8A96577\">\"\u003C\u002Fspan>\u003Cspan style=\"color:#666666\">:\u003C\u002Fspan>\u003Cspan style=\"color:#C98A7D77\"> \"\u003C\u002Fspan>\u003Cspan style=\"color:#C98A7D\">江西\u003C\u002Fspan>\u003Cspan style=\"color:#C98A7D77\">\"\u003C\u002Fspan>\u003Cspan style=\"color:#666666\">,\u003C\u002Fspan>\u003Cspan style=\"color:#B8A96577\"> \"\u003C\u002Fspan>\u003Cspan style=\"color:#B8A965\">city\u003C\u002Fspan>\u003Cspan style=\"color:#B8A96577\">\"\u003C\u002Fspan>\u003Cspan style=\"color:#666666\">:\u003C\u002Fspan>\u003Cspan style=\"color:#C98A7D77\"> \"\u003C\u002Fspan>\u003Cspan style=\"color:#C98A7D\">吉安\u003C\u002Fspan>\u003Cspan style=\"color:#C98A7D77\">\"\u003C\u002Fspan>\u003Cspan style=\"color:#666666\">,\u003C\u002Fspan>\u003Cspan style=\"color:#B8A96577\"> \"\u003C\u002Fspan>\u003Cspan style=\"color:#B8A965\">isp\u003C\u002Fspan>\u003Cspan style=\"color:#B8A96577\">\"\u003C\u002Fspan>\u003Cspan style=\"color:#666666\">:\u003C\u002Fspan>\u003Cspan style=\"color:#C98A7D77\"> \"\u003C\u002Fspan>\u003Cspan style=\"color:#C98A7D\">电信\u003C\u002Fspan>\u003Cspan style=\"color:#C98A7D77\">\"\u003C\u002Fspan>\u003Cspan style=\"color:#666666\"> },\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#B8A96577\">  \"\u003C\u002Fspan>\u003Cspan style=\"color:#B8A965\">geocn\u003C\u002Fspan>\u003Cspan style=\"color:#B8A96577\">\"\u003C\u002Fspan>\u003Cspan style=\"color:#666666\">:\u003C\u002Fspan>\u003Cspan style=\"color:#666666\"> {\u003C\u002Fspan>\u003Cspan style=\"color:#B8A96577\"> \"\u003C\u002Fspan>\u003Cspan style=\"color:#B8A965\">country\u003C\u002Fspan>\u003Cspan style=\"color:#B8A96577\">\"\u003C\u002Fspan>\u003Cspan style=\"color:#666666\">:\u003C\u002Fspan>\u003Cspan style=\"color:#C98A7D77\"> \"\u003C\u002Fspan>\u003Cspan style=\"color:#C98A7D\">中国\u003C\u002Fspan>\u003Cspan style=\"color:#C98A7D77\">\"\u003C\u002Fspan>\u003Cspan style=\"color:#666666\">,\u003C\u002Fspan>\u003Cspan style=\"color:#B8A96577\"> \"\u003C\u002Fspan>\u003Cspan style=\"color:#B8A965\">administrative_area\u003C\u002Fspan>\u003Cspan style=\"color:#B8A96577\">\"\u003C\u002Fspan>\u003Cspan style=\"color:#666666\">:\u003C\u002Fspan>\u003Cspan style=\"color:#C98A7D77\"> \"\u003C\u002Fspan>\u003Cspan style=\"color:#C98A7D\">江西省\u003C\u002Fspan>\u003Cspan style=\"color:#C98A7D77\">\"\u003C\u002Fspan>\u003Cspan style=\"color:#666666\">,\u003C\u002Fspan>\u003Cspan style=\"color:#B8A96577\"> \"\u003C\u002Fspan>\u003Cspan style=\"color:#B8A965\">city\u003C\u002Fspan>\u003Cspan style=\"color:#B8A96577\">\"\u003C\u002Fspan>\u003Cspan style=\"color:#666666\">:\u003C\u002Fspan>\u003Cspan style=\"color:#C98A7D77\"> \"\u003C\u002Fspan>\u003Cspan style=\"color:#C98A7D\">南昌市\u003C\u002Fspan>\u003Cspan style=\"color:#C98A7D77\">\"\u003C\u002Fspan>\u003Cspan style=\"color:#666666\">,\u003C\u002Fspan>\u003Cspan style=\"color:#B8A96577\"> \"\u003C\u002Fspan>\u003Cspan style=\"color:#B8A965\">division_code\u003C\u002Fspan>\u003Cspan style=\"color:#B8A96577\">\"\u003C\u002Fspan>\u003Cspan style=\"color:#666666\">:\u003C\u002Fspan>\u003Cspan style=\"color:#C98A7D77\"> \"\u003C\u002Fspan>\u003Cspan style=\"color:#C98A7D\">360100\u003C\u002Fspan>\u003Cspan style=\"color:#C98A7D77\">\"\u003C\u002Fspan>\u003Cspan style=\"color:#666666\">,\u003C\u002Fspan>\u003Cspan style=\"color:#B8A96577\"> \"\u003C\u002Fspan>\u003Cspan style=\"color:#B8A965\">isp\u003C\u002Fspan>\u003Cspan style=\"color:#B8A96577\">\"\u003C\u002Fspan>\u003Cspan style=\"color:#666666\">:\u003C\u002Fspan>\u003Cspan style=\"color:#C98A7D77\"> \"\u003C\u002Fspan>\u003Cspan style=\"color:#C98A7D\">电信\u003C\u002Fspan>\u003Cspan style=\"color:#C98A7D77\">\"\u003C\u002Fspan>\u003Cspan style=\"color:#666666\"> },\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#B8A96577\">  \"\u003C\u002Fspan>\u003Cspan style=\"color:#B8A965\">maxmind_asn\u003C\u002Fspan>\u003Cspan style=\"color:#B8A96577\">\"\u003C\u002Fspan>\u003Cspan style=\"color:#666666\">:\u003C\u002Fspan>\u003Cspan style=\"color:#666666\"> {\u003C\u002Fspan>\u003Cspan style=\"color:#B8A96577\"> \"\u003C\u002Fspan>\u003Cspan style=\"color:#B8A965\">asn\u003C\u002Fspan>\u003Cspan style=\"color:#B8A96577\">\"\u003C\u002Fspan>\u003Cspan style=\"color:#666666\">:\u003C\u002Fspan>\u003Cspan style=\"color:#C98A7D77\"> \"\u003C\u002Fspan>\u003Cspan style=\"color:#C98A7D\">AS4134\u003C\u002Fspan>\u003Cspan style=\"color:#C98A7D77\">\"\u003C\u002Fspan>\u003Cspan style=\"color:#666666\">,\u003C\u002Fspan>\u003Cspan style=\"color:#B8A96577\"> \"\u003C\u002Fspan>\u003Cspan style=\"color:#B8A965\">org\u003C\u002Fspan>\u003Cspan style=\"color:#B8A96577\">\"\u003C\u002Fspan>\u003Cspan style=\"color:#666666\">:\u003C\u002Fspan>\u003Cspan style=\"color:#C98A7D77\"> \"\u003C\u002Fspan>\u003Cspan style=\"color:#C98A7D\">Chinanet\u003C\u002Fspan>\u003Cspan style=\"color:#C98A7D77\">\"\u003C\u002Fspan>\u003Cspan style=\"color:#666666\"> }\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#666666\">}\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cblockquote>\n\u003Cp>上面同一 IP 出现了\u003Cstrong>南昌 \u002F 吉安\u003C\u002Fstrong>两种结论：这就是&quot;多源并列、不做合并&quot;的含义——\n各库口径与更新批次不同，写法也不统一（\u003Ccode>江西省\u003C\u002Fcode> \u002F \u003Ccode>Jiangxi\u003C\u002Fcode>、\u003Ccode>南昌市\u003C\u002Fcode> \u002F \u003Ccode>Nanchang\u003C\u002Fcode>）。\n想要单一结论请自行选源或做交叉投票。\u003C\u002Fp>\n\u003C\u002Fblockquote>\n\u003Ch3 id=\"42-python\" tabindex=\"-1\">\u003Ca class=\"header-anchor\" href=\"#42-python\">\u003Cspan>4.2 Python\u003C\u002Fspan>\u003C\u002Fa>\u003C\u002Fh3>\n\u003Cpre class=\"shiki vitesse-dark\" style=\"background-color:#121212;color:#dbd7caee\" tabindex=\"0\">\u003Ccode class=\"language-python\">\u003Cspan class=\"line\">\u003Cspan style=\"color:#758575DD\">#!\u002Fusr\u002Fbin\u002Fpython3\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#4D9375\">import\u003C\u002Fspan>\u003Cspan style=\"color:#DBD7CAEE\"> requests\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#DBD7CAEE\">queryIP \u003C\u002Fspan>\u003Cspan style=\"color:#666666\">=\u003C\u002Fspan>\u003Cspan style=\"color:#C98A7D77\"> '\u003C\u002Fspan>\u003Cspan style=\"color:#C98A7D\">106.224.145.147\u003C\u002Fspan>\u003Cspan style=\"color:#C98A7D77\">'\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#DBD7CAEE\">r \u003C\u002Fspan>\u003Cspan style=\"color:#666666\">=\u003C\u002Fspan>\u003Cspan style=\"color:#DBD7CAEE\"> requests\u003C\u002Fspan>\u003Cspan style=\"color:#666666\">.\u003C\u002Fspan>\u003Cspan style=\"color:#DBD7CAEE\">get\u003C\u002Fspan>\u003Cspan style=\"color:#666666\">(\u003C\u002Fspan>\u003Cspan style=\"color:#C98A7D77\">'\u003C\u002Fspan>\u003Cspan style=\"color:#C98A7D\">https:\u002F\u002Fcn-jiangsu.api-ipw.wsmdn.top\u002Fv1\u002Flocation\u002F\u003C\u002Fspan>\u003Cspan style=\"color:#C98A7D77\">'\u003C\u002Fspan>\u003Cspan style=\"color:#CB7676\"> +\u003C\u002Fspan>\u003Cspan style=\"color:#DBD7CAEE\"> queryIP\u003C\u002Fspan>\u003Cspan style=\"color:#666666\">)\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#DBD7CAEE\">data \u003C\u002Fspan>\u003Cspan style=\"color:#666666\">=\u003C\u002Fspan>\u003Cspan style=\"color:#DBD7CAEE\"> r\u003C\u002Fspan>\u003Cspan style=\"color:#666666\">.\u003C\u002Fspan>\u003Cspan style=\"color:#DBD7CAEE\">json\u003C\u002Fspan>\u003Cspan style=\"color:#666666\">()\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#DBD7CAEE\">qqwry \u003C\u002Fspan>\u003Cspan style=\"color:#666666\">=\u003C\u002Fspan>\u003Cspan style=\"color:#DBD7CAEE\"> data\u003C\u002Fspan>\u003Cspan style=\"color:#666666\">.\u003C\u002Fspan>\u003Cspan style=\"color:#DBD7CAEE\">get\u003C\u002Fspan>\u003Cspan style=\"color:#666666\">(\u003C\u002Fspan>\u003Cspan style=\"color:#C98A7D77\">'\u003C\u002Fspan>\u003Cspan style=\"color:#C98A7D\">qqwry\u003C\u002Fspan>\u003Cspan style=\"color:#C98A7D77\">'\u003C\u002Fspan>\u003Cspan style=\"color:#666666\">,\u003C\u002Fspan>\u003Cspan style=\"color:#666666\"> {})\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#4D9375\">if\u003C\u002Fspan>\u003Cspan style=\"color:#B8A965\"> isinstance\u003C\u002Fspan>\u003Cspan style=\"color:#666666\">(\u003C\u002Fspan>\u003Cspan style=\"color:#DBD7CAEE\">qqwry\u003C\u002Fspan>\u003Cspan style=\"color:#666666\">,\u003C\u002Fspan>\u003Cspan style=\"color:#B8A965\"> dict\u003C\u002Fspan>\u003Cspan style=\"color:#666666\">):\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#B8A965\">    print\u003C\u002Fspan>\u003Cspan style=\"color:#666666\">(\u003C\u002Fspan>\u003Cspan style=\"color:#DBD7CAEE\">qqwry\u003C\u002Fspan>\u003Cspan style=\"color:#666666\">.\u003C\u002Fspan>\u003Cspan style=\"color:#DBD7CAEE\">get\u003C\u002Fspan>\u003Cspan style=\"color:#666666\">(\u003C\u002Fspan>\u003Cspan style=\"color:#C98A7D77\">'\u003C\u002Fspan>\u003Cspan style=\"color:#C98A7D\">country\u003C\u002Fspan>\u003Cspan style=\"color:#C98A7D77\">'\u003C\u002Fspan>\u003Cspan style=\"color:#666666\">),\u003C\u002Fspan>\u003Cspan style=\"color:#DBD7CAEE\"> qqwry\u003C\u002Fspan>\u003Cspan style=\"color:#666666\">.\u003C\u002Fspan>\u003Cspan style=\"color:#DBD7CAEE\">get\u003C\u002Fspan>\u003Cspan style=\"color:#666666\">(\u003C\u002Fspan>\u003Cspan style=\"color:#C98A7D77\">'\u003C\u002Fspan>\u003Cspan style=\"color:#C98A7D\">administrative_area\u003C\u002Fspan>\u003Cspan style=\"color:#C98A7D77\">'\u003C\u002Fspan>\u003Cspan style=\"color:#666666\">),\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#DBD7CAEE\">          qqwry\u003C\u002Fspan>\u003Cspan style=\"color:#666666\">.\u003C\u002Fspan>\u003Cspan style=\"color:#DBD7CAEE\">get\u003C\u002Fspan>\u003Cspan style=\"color:#666666\">(\u003C\u002Fspan>\u003Cspan style=\"color:#C98A7D77\">'\u003C\u002Fspan>\u003Cspan style=\"color:#C98A7D\">city\u003C\u002Fspan>\u003Cspan style=\"color:#C98A7D77\">'\u003C\u002Fspan>\u003Cspan style=\"color:#666666\">),\u003C\u002Fspan>\u003Cspan style=\"color:#DBD7CAEE\"> qqwry\u003C\u002Fspan>\u003Cspan style=\"color:#666666\">.\u003C\u002Fspan>\u003Cspan style=\"color:#DBD7CAEE\">get\u003C\u002Fspan>\u003Cspan style=\"color:#666666\">(\u003C\u002Fspan>\u003Cspan style=\"color:#C98A7D77\">'\u003C\u002Fspan>\u003Cspan style=\"color:#C98A7D\">isp\u003C\u002Fspan>\u003Cspan style=\"color:#C98A7D77\">'\u003C\u002Fspan>\u003Cspan style=\"color:#666666\">))\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#4D9375\">else\u003C\u002Fspan>\u003Cspan style=\"color:#666666\">:\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#B8A965\">    print\u003C\u002Fspan>\u003Cspan style=\"color:#666666\">(\u003C\u002Fspan>\u003Cspan style=\"color:#C98A7D77\">'\u003C\u002Fspan>\u003Cspan style=\"color:#C98A7D\">该源不可用:\u003C\u002Fspan>\u003Cspan style=\"color:#C98A7D77\">'\u003C\u002Fspan>\u003Cspan style=\"color:#666666\">,\u003C\u002Fspan>\u003Cspan style=\"color:#DBD7CAEE\"> qqwry\u003C\u002Fspan>\u003Cspan style=\"color:#666666\">)\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Ch3 id=\"43-golang\" tabindex=\"-1\">\u003Ca class=\"header-anchor\" href=\"#43-golang\">\u003Cspan>4.3 Golang\u003C\u002Fspan>\u003C\u002Fa>\u003C\u002Fh3>\n\u003Cpre class=\"shiki vitesse-dark\" style=\"background-color:#121212;color:#dbd7caee\" tabindex=\"0\">\u003Ccode class=\"language-go\">\u003Cspan class=\"line\">\u003Cspan style=\"color:#4D9375\">package\u003C\u002Fspan>\u003Cspan style=\"color:#5DA994\"> main\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#4D9375\">import\u003C\u002Fspan>\u003Cspan style=\"color:#666666\"> (\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#C98A7D77\">\t\"\u003C\u002Fspan>\u003Cspan style=\"color:#80A665\">encoding\u002Fjson\u003C\u002Fspan>\u003Cspan style=\"color:#C98A7D77\">\"\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#C98A7D77\">\t\"\u003C\u002Fspan>\u003Cspan style=\"color:#80A665\">fmt\u003C\u002Fspan>\u003Cspan style=\"color:#C98A7D77\">\"\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#C98A7D77\">\t\"\u003C\u002Fspan>\u003Cspan style=\"color:#80A665\">io\u003C\u002Fspan>\u003Cspan style=\"color:#C98A7D77\">\"\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#C98A7D77\">\t\"\u003C\u002Fspan>\u003Cspan style=\"color:#80A665\">net\u002Fhttp\u003C\u002Fspan>\u003Cspan style=\"color:#C98A7D77\">\"\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#666666\">)\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#4D9375\">func\u003C\u002Fspan>\u003Cspan style=\"color:#80A665\"> main\u003C\u002Fspan>\u003Cspan style=\"color:#666666\">()\u003C\u002Fspan>\u003Cspan style=\"color:#666666\"> {\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#BD976A\">\tqueryIP\u003C\u002Fspan>\u003Cspan style=\"color:#666666\"> :=\u003C\u002Fspan>\u003Cspan style=\"color:#C98A7D77\"> \"\u003C\u002Fspan>\u003Cspan style=\"color:#C98A7D\">106.224.145.147\u003C\u002Fspan>\u003Cspan style=\"color:#C98A7D77\">\"\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#BD976A\">\tresp\u003C\u002Fspan>\u003Cspan style=\"color:#666666\">,\u003C\u002Fspan>\u003Cspan style=\"color:#BD976A\"> err\u003C\u002Fspan>\u003Cspan style=\"color:#666666\"> :=\u003C\u002Fspan>\u003Cspan style=\"color:#BD976A\"> http\u003C\u002Fspan>\u003Cspan style=\"color:#666666\">.\u003C\u002Fspan>\u003Cspan style=\"color:#80A665\">Get\u003C\u002Fspan>\u003Cspan style=\"color:#666666\">(\u003C\u002Fspan>\u003Cspan style=\"color:#C98A7D77\">\"\u003C\u002Fspan>\u003Cspan style=\"color:#C98A7D\">https:\u002F\u002Fcn-jiangsu.api-ipw.wsmdn.top\u002Fv1\u002Flocation\u002F\u003C\u002Fspan>\u003Cspan style=\"color:#C98A7D77\">\"\u003C\u002Fspan>\u003Cspan style=\"color:#CB7676\"> +\u003C\u002Fspan>\u003Cspan style=\"color:#BD976A\"> queryIP\u003C\u002Fspan>\u003Cspan style=\"color:#666666\">)\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#4D9375\">\tif\u003C\u002Fspan>\u003Cspan style=\"color:#BD976A\"> err\u003C\u002Fspan>\u003Cspan style=\"color:#CB7676\"> !=\u003C\u002Fspan>\u003Cspan style=\"color:#CB7676\"> nil\u003C\u002Fspan>\u003Cspan style=\"color:#666666\"> {\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#80A665\">\t\tpanic\u003C\u002Fspan>\u003Cspan style=\"color:#666666\">(\u003C\u002Fspan>\u003Cspan style=\"color:#BD976A\">err\u003C\u002Fspan>\u003Cspan style=\"color:#666666\">)\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#666666\">\t}\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#4D9375\">\tdefer\u003C\u002Fspan>\u003Cspan style=\"color:#BD976A\"> resp\u003C\u002Fspan>\u003Cspan style=\"color:#666666\">.\u003C\u002Fspan>\u003Cspan style=\"color:#BD976A\">Body\u003C\u002Fspan>\u003Cspan style=\"color:#666666\">.\u003C\u002Fspan>\u003Cspan style=\"color:#80A665\">Close\u003C\u002Fspan>\u003Cspan style=\"color:#666666\">()\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#BD976A\">\tbody\u003C\u002Fspan>\u003Cspan style=\"color:#666666\">,\u003C\u002Fspan>\u003Cspan style=\"color:#BD976A\"> _\u003C\u002Fspan>\u003Cspan style=\"color:#666666\"> :=\u003C\u002Fspan>\u003Cspan style=\"color:#BD976A\"> io\u003C\u002Fspan>\u003Cspan style=\"color:#666666\">.\u003C\u002Fspan>\u003Cspan style=\"color:#80A665\">ReadAll\u003C\u002Fspan>\u003Cspan style=\"color:#666666\">(\u003C\u002Fspan>\u003Cspan style=\"color:#BD976A\">resp\u003C\u002Fspan>\u003Cspan style=\"color:#666666\">.\u003C\u002Fspan>\u003Cspan style=\"color:#BD976A\">Body\u003C\u002Fspan>\u003Cspan style=\"color:#666666\">)\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#4D9375\">\tvar\u003C\u002Fspan>\u003Cspan style=\"color:#BD976A\"> result\u003C\u002Fspan>\u003Cspan style=\"color:#4D9375\"> map\u003C\u002Fspan>\u003Cspan style=\"color:#666666\">[\u003C\u002Fspan>\u003Cspan style=\"color:#CB7676\">string\u003C\u002Fspan>\u003Cspan style=\"color:#666666\">]\u003C\u002Fspan>\u003Cspan style=\"color:#5DA994\">json\u003C\u002Fspan>\u003Cspan style=\"color:#666666\">.\u003C\u002Fspan>\u003Cspan style=\"color:#5DA994\">RawMessage\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#4D9375\">\tif\u003C\u002Fspan>\u003Cspan style=\"color:#BD976A\"> err\u003C\u002Fspan>\u003Cspan style=\"color:#666666\"> :=\u003C\u002Fspan>\u003Cspan style=\"color:#BD976A\"> json\u003C\u002Fspan>\u003Cspan style=\"color:#666666\">.\u003C\u002Fspan>\u003Cspan style=\"color:#80A665\">Unmarshal\u003C\u002Fspan>\u003Cspan style=\"color:#666666\">(\u003C\u002Fspan>\u003Cspan style=\"color:#BD976A\">body\u003C\u002Fspan>\u003Cspan style=\"color:#666666\">,\u003C\u002Fspan>\u003Cspan style=\"color:#CB7676\"> &#x26;\u003C\u002Fspan>\u003Cspan style=\"color:#BD976A\">result\u003C\u002Fspan>\u003Cspan style=\"color:#666666\">);\u003C\u002Fspan>\u003Cspan style=\"color:#BD976A\"> err\u003C\u002Fspan>\u003Cspan style=\"color:#CB7676\"> !=\u003C\u002Fspan>\u003Cspan style=\"color:#CB7676\"> nil\u003C\u002Fspan>\u003Cspan style=\"color:#666666\"> {\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#80A665\">\t\tpanic\u003C\u002Fspan>\u003Cspan style=\"color:#666666\">(\u003C\u002Fspan>\u003Cspan style=\"color:#BD976A\">err\u003C\u002Fspan>\u003Cspan style=\"color:#666666\">)\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#666666\">\t}\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#4D9375\">\tvar\u003C\u002Fspan>\u003Cspan style=\"color:#BD976A\"> loc\u003C\u002Fspan>\u003Cspan style=\"color:#4D9375\"> struct\u003C\u002Fspan>\u003Cspan style=\"color:#666666\"> {\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#BD976A\">\t\tCountry\u003C\u002Fspan>\u003Cspan style=\"color:#CB7676\"> string\u003C\u002Fspan>\u003Cspan style=\"color:#C98A7D77\"> `\u003C\u002Fspan>\u003Cspan style=\"color:#C98A7D\">json:\"country\"\u003C\u002Fspan>\u003Cspan style=\"color:#C98A7D77\">`\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#BD976A\">\t\tCity\u003C\u002Fspan>\u003Cspan style=\"color:#CB7676\">    string\u003C\u002Fspan>\u003Cspan style=\"color:#C98A7D77\"> `\u003C\u002Fspan>\u003Cspan style=\"color:#C98A7D\">json:\"city\"\u003C\u002Fspan>\u003Cspan style=\"color:#C98A7D77\">`\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#BD976A\">\t\tIsp\u003C\u002Fspan>\u003Cspan style=\"color:#CB7676\">     string\u003C\u002Fspan>\u003Cspan style=\"color:#C98A7D77\"> `\u003C\u002Fspan>\u003Cspan style=\"color:#C98A7D\">json:\"isp\"\u003C\u002Fspan>\u003Cspan style=\"color:#C98A7D77\">`\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#666666\">\t}\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#4D9375\">\tif\u003C\u002Fspan>\u003Cspan style=\"color:#BD976A\"> err\u003C\u002Fspan>\u003Cspan style=\"color:#666666\"> :=\u003C\u002Fspan>\u003Cspan style=\"color:#BD976A\"> json\u003C\u002Fspan>\u003Cspan style=\"color:#666666\">.\u003C\u002Fspan>\u003Cspan style=\"color:#80A665\">Unmarshal\u003C\u002Fspan>\u003Cspan style=\"color:#666666\">(\u003C\u002Fspan>\u003Cspan style=\"color:#BD976A\">result\u003C\u002Fspan>\u003Cspan style=\"color:#666666\">[\u003C\u002Fspan>\u003Cspan style=\"color:#C98A7D77\">\"\u003C\u002Fspan>\u003Cspan style=\"color:#C98A7D\">qqwry\u003C\u002Fspan>\u003Cspan style=\"color:#C98A7D77\">\"\u003C\u002Fspan>\u003Cspan style=\"color:#666666\">],\u003C\u002Fspan>\u003Cspan style=\"color:#CB7676\"> &#x26;\u003C\u002Fspan>\u003Cspan style=\"color:#BD976A\">loc\u003C\u002Fspan>\u003Cspan style=\"color:#666666\">);\u003C\u002Fspan>\u003Cspan style=\"color:#BD976A\"> err\u003C\u002Fspan>\u003Cspan style=\"color:#CB7676\"> !=\u003C\u002Fspan>\u003Cspan style=\"color:#CB7676\"> nil\u003C\u002Fspan>\u003Cspan style=\"color:#666666\"> {\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#BD976A\">\t\tfmt\u003C\u002Fspan>\u003Cspan style=\"color:#666666\">.\u003C\u002Fspan>\u003Cspan style=\"color:#80A665\">Println\u003C\u002Fspan>\u003Cspan style=\"color:#666666\">(\u003C\u002Fspan>\u003Cspan style=\"color:#C98A7D77\">\"\u003C\u002Fspan>\u003Cspan style=\"color:#C98A7D\">该源不可用，原始值：\u003C\u002Fspan>\u003Cspan style=\"color:#C98A7D77\">\"\u003C\u002Fspan>\u003Cspan style=\"color:#666666\">,\u003C\u002Fspan>\u003Cspan style=\"color:#CB7676\"> string\u003C\u002Fspan>\u003Cspan style=\"color:#666666\">(\u003C\u002Fspan>\u003Cspan style=\"color:#BD976A\">result\u003C\u002Fspan>\u003Cspan style=\"color:#666666\">[\u003C\u002Fspan>\u003Cspan style=\"color:#C98A7D77\">\"\u003C\u002Fspan>\u003Cspan style=\"color:#C98A7D\">qqwry\u003C\u002Fspan>\u003Cspan style=\"color:#C98A7D77\">\"\u003C\u002Fspan>\u003Cspan style=\"color:#666666\">]))\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#4D9375\">\t\treturn\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#666666\">\t}\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#BD976A\">\tfmt\u003C\u002Fspan>\u003Cspan style=\"color:#666666\">.\u003C\u002Fspan>\u003Cspan style=\"color:#80A665\">Printf\u003C\u002Fspan>\u003Cspan style=\"color:#666666\">(\u003C\u002Fspan>\u003Cspan style=\"color:#C98A7D77\">\"\u003C\u002Fspan>\u003Cspan style=\"color:#C99076\">%s\u003C\u002Fspan>\u003Cspan style=\"color:#C99076\"> %s\u003C\u002Fspan>\u003Cspan style=\"color:#C99076\"> %s\\n\u003C\u002Fspan>\u003Cspan style=\"color:#C98A7D77\">\"\u003C\u002Fspan>\u003Cspan style=\"color:#666666\">,\u003C\u002Fspan>\u003Cspan style=\"color:#BD976A\"> loc\u003C\u002Fspan>\u003Cspan style=\"color:#666666\">.\u003C\u002Fspan>\u003Cspan style=\"color:#BD976A\">Country\u003C\u002Fspan>\u003Cspan style=\"color:#666666\">,\u003C\u002Fspan>\u003Cspan style=\"color:#BD976A\"> loc\u003C\u002Fspan>\u003Cspan style=\"color:#666666\">.\u003C\u002Fspan>\u003Cspan style=\"color:#BD976A\">City\u003C\u002Fspan>\u003Cspan style=\"color:#666666\">,\u003C\u002Fspan>\u003Cspan style=\"color:#BD976A\"> loc\u003C\u002Fspan>\u003Cspan style=\"color:#666666\">.\u003C\u002Fspan>\u003Cspan style=\"color:#BD976A\">Isp\u003C\u002Fspan>\u003Cspan style=\"color:#666666\">)\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#666666\">}\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Ch2 id=\"5-错误码\" tabindex=\"-1\">\u003Ca class=\"header-anchor\" href=\"#5-错误码\">\u003Cspan>5. 错误码\u003C\u002Fspan>\u003C\u002Fa>\u003C\u002Fh2>\n\u003Ctable>\n\u003Cthead>\n\u003Ctr>\n\u003Cth>现象\u003C\u002Fth>\n\u003Cth>说明\u003C\u002Fth>\n\u003C\u002Ftr>\n\u003C\u002Fthead>\n\u003Ctbody>\n\u003Ctr>\n\u003Ctd>字段是 \u003Ccode>&quot;Invalid IP address.&quot;\u003C\u002Fcode>（\u003Ccode>ip2location\u003C\u002Fcode> 系列）\u003C\u002Ftd>\n\u003Ctd>路径里的 IP 不合法。该库对非法输入仍返回对象，值里写明原因\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>字段是 \u003Ccode>&quot;error: ... unable to parse IP&quot;\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>同上，其它源对非法输入直接返回错误字符串\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>404 page not found\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>该节点 \u003Ccode>ipdb\u003C\u002Fcode> 已关闭，\u003Ccode>\u002Fv1\u002Flocation\u002F:ip\u003C\u002Fcode> 未注册\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>401\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>节点配了 \u003Ccode>access-token\u003C\u002Fcode> 但未携带正确的 \u003Ccode>Authorization: Bearer &lt;access-token&gt;\u003C\u002Fcode>\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>结果与常识不符\u003C\u002Ftd>\n\u003Ctd>免费 IP 库本身有偏差；本项目是\u003Cstrong>多源并列\u003C\u002Fstrong>，可交叉比对，不保证单一源正确\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003C\u002Ftbody>\n\u003C\u002Ftable>\n",1790424748182]