Skip to content

在线客服怎么显示访客IP归属地?客户来自哪个城市一眼看到

做客服系统的都知道一个痛点:客户在对话里说"网好卡""页面打不开",客服第一反应是想知道他在哪个城市、用的什么宽带——这直接决定排查方向。让客服工作台自动显示访客的 IP 归属地,这个需求用免费接口就能实现,今天分享完整做法。

一、整体思路

流程很简单:客服系统后端在用户进入会话时拿到他的 IP → 调 IP 归属地接口 → 把结果缓存起来 → 推给前端工作台展示。

  • 查当前请求方 IP:https://ip9.com.cn/get(不传参)
  • 查指定 IP:https://ip9.com.cn/get?ip=<用户IP>

免费版 60 次/分钟,一个客服会话也就查 1 次,加个缓存完全够用。

二、后端实现(FastAPI 示例)

python
from fastapi import FastAPI, Request
import requests, time

app = FastAPI()
cache = {}  # 简单内存缓存:ip -> (归属地, 过期时间)

def query_ip(ip: str):
    now = time.time()
    hit = cache.get(ip)
    if hit and hit[1] > now:
        return hit[0]
    r = requests.get(f"https://ip9.com.cn/get?ip={ip}", timeout=3)
    data = r.json().get("data", {})  # ret=200 表示成功,结果在 data 里
    addr = f"{data.get('country','')}{data.get('prov','')}{data.get('city','')}"
    result = {"ip": data.get("ip", ip), "addr": addr, "isp": data.get("isp","")}
    cache[ip] = (result, now + 3600)  # 缓存 1 小时
    return result

@app.get("/api/visitor-location")
async def visitor_location(request: Request):
    # 生产环境从 X-Forwarded-For 取真实 IP,注意防伪造
    ip = request.headers.get("x-real-ip") or request.client.host
    return query_ip(ip)

缓存 1 小时,意味着同一 IP 重复进线不会重复消耗免费额度;真到了 60 次/分钟都不够的量,再考虑升级 VIP。

三、前端工作台展示

客服工作台在会话卡片上显示归属地,用几行 JS 就能实现:

javascript
// 会话建立后拉取访客归属地
async function loadVisitorLocation(sessionId) {
  const res = await fetch(`/api/visitor-location?session=${sessionId}`);
  const { ip, addr, isp } = await res.json();
  document.querySelector(`#session-${sessionId} .location`).textContent =
    `${addr} · ${isp} · ${ip}`;
}

效果就是每个会话旁边显示"中国广东深圳 · 电信 · 119.12.xx.xx",客服一眼就知道客户在哪。别小看这一行字,客户说"我打不开页面"时,客服能直接判断"深圳电信访问我们华东机房,可能是跨地域链路问题",处理效率完全不一样。

四、进阶玩法

  • 按地区分配客服:查询结果里 prov/city 是现成的,根据客户省份把会话路由给对应区域的客服组,减少沟通成本。
  • 区域统计:把每天的查询结果落库,就能统计出客户地域分布,市场部做投放参考。
  • VIP 精细化:需要显示到区县、或者想判断对方是企业宽带(BUS)还是机房(IDC)——比如识别批量注册的机器人账号——可以升级 VIP 版,接口会额外返回 area(区县)、ip_typeip_asn 字段,这些都是免费版没有的。

总结

客服系统显示访客 IP 归属地,本质就是"拿 IP → 查接口 → 展示",难点只在真实 IP 的获取和缓存设计。IP9 免费版免注册免鉴权,返回国家/省市/运营商,精准度中国城市 99.2%,客服场景绰绰有余。接口文档在 https://ip9.com.cn/get ,官网 https://www.ip9.com.cn 上也有字段说明,照着上面的代码改改就能上线。