JavaScript

如何:不借助第三方服务粗略检测访客是否来自中国大陆

| Development | #JavaScript | #前端 | #AI

作为一个平时基本不怎么碰前端代码的开发者,以前偶尔遇到需要折腾前端的需求时,我总有一种「摸着石头过河」的感觉。

最近我就碰到了这样一个棘手的场景:我的某个网站上需要调用的一些服务,在中国大陆的网络环境下访问时经常会出现加载失败或极度缓慢的问题。 为了保证用户的浏览体验,比较理想的做法是:检测到访客来自中国大陆时,默认将他们重定向到支持大陆访问的同类型备用服务上。

传统的死胡同:IP 地址检测

从我固有的后端思维出发,脑海中跳出的第一个、也是最直觉的方案就是:判断来源 IP。

但仔细一推敲,这个方案的落地成本其实挺高:

  1. 获取真实 IP 的麻烦:现代网站基本都套了一层或多层 CDN(比如 Cloudflare),这就导致直接拿到的请求 IP 往往是 CDN 节点的,而不是用户的。即使通过 X-Forwarded-For 去拿,也需要处理很多边界情况。并且,保存这些数据意味着更多合规问题。

  2. 需要依赖 IP 数据库或第三方接口:为了知道 IP 归属地,你要么在服务器端维护一个 GeoIP 数据库,要么每次请求都去调用第三方的 IP 识别 API。前者太重,后者不仅增加了延迟,可能还要额外付费。

对于一个轻量级的前端需求来说,为了这么点事去大动干戈,显然把事情复杂化了。

阅读全文…( 本文约 1222 字,阅读大致需要 3 分钟 )