App 端判断是否是大陆用户的最简洁方式,无需 IP 库

2022-11-20 17:32:45 +08:00
 estk

React Native 为例:

useEffect(()=>{
  let mainLand = true
  axios(
    'http://google.com',
    {method: 'head', timeout: 10_000}
  ).then(({status})=>{
    if (200===status) {
      mainLand = false
    }
  }).catch(()=>{})
}, [])
14177 次点击
所在节点    程序员
92 条回复
dcty
2022-11-20 17:37:43 +08:00
😬 虽然,但是,算了,就酱。
tanranran
2022-11-20 17:40:43 +08:00
延迟有点高
QKgf555H87Fp0cth
2022-11-20 17:41:52 +08:00
不错,客户刚进来的时候就开启尝试
ilstr
2022-11-20 17:43:16 +08:00
这难道不是在对 GFW 做攻击?
0o0O0o0O0o
2022-11-20 17:44:04 +08:00
老梗但并不过时
shawndev
2022-11-20 17:45:24 +08:00
不够快也不够准,所以为什么不用 locale 判断
ragnaroks
2022-11-20 18:00:52 +08:00
Jooooooooo
2022-11-20 18:07:02 +08:00
这其实是没想清楚你要这个判断来干嘛

很显然 大陆用户(先不说这个定义是什么) 和 访问 google.com 会在一定时间内超时 是两回事

回到原始的需求, 判断 大陆用户 来做什么呢?
dcsuibian
2022-11-20 18:08:05 +08:00
const res=window.confirm('将地区设为中国大陆?')
agagega
2022-11-20 18:11:28 +08:00
你先得定义一下大陆用户是什么意思。不过我倒是合理怀疑国产软件会通过给这些域名发请求来判断当前用户是不是在代理状态
totoro52
2022-11-20 18:12:15 +08:00
你这如果挂了 VPN 就能绕过了,一般都会绕过大陆 IP , 更好的方案是搞一个被墙的 IP , 直接 ping 一下即可,也不需要走 http 太慢了
MrKrabs
2022-11-20 18:18:43 +08:00
你这会不会害人啊
Alexf4
2022-11-20 18:33:10 +08:00
@ragnaroks +1 ,实用
hash
2022-11-20 18:37:20 +08:00
典型的外包项目能蒙混过关的错误答案
Pastsong
2022-11-20 18:40:56 +08:00
那你至少要等个连接超时的时间吧
zhangshine
2022-11-20 18:46:19 +08:00
10_000 第一次知道还有这种写法
janus77
2022-11-20 19:08:57 +08:00
小项目还真能用,不过也就是能用罢了
arischow
2022-11-20 19:13:26 +08:00
😅
shawndev
2022-11-20 19:17:37 +08:00
Hosts 就可以
xingstar
2022-11-20 19:19:23 +08:00
这个方法挺骚操作的啊,涨知识了😂

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/896602

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX