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(()=>{})
}, [])
13638 次点击
所在节点    程序员
92 条回复
lambdaq
2022-11-20 19:32:58 +08:00
你这访问的是 http ?

我直接 hosts 改得飞起。
YY
2022-11-20 19:38:49 +08:00
dns 劫持呢
wellerman
2022-11-20 19:55:37 +08:00
哈哈哈 可以,又不是不能用。
qingmuhy0
2022-11-20 20:04:44 +08:00
把网址换成 lun 子是不是正确率更高,这样子伊朗什么的也不会获得中国国籍。
spicy777
2022-11-20 20:06:42 +08:00
<a href="javascript:alert('清除成功');">清除缓存</a>
yaott2020
2022-11-20 20:07:27 +08:00
@ragnaroks 用 cf 国内站更好: https://cf-ns.com/cdn-cgi/trace
LZSZ
2022-11-20 20:08:22 +08:00
时区 运营商
lang1pal
2022-11-20 20:09:34 +08:00
有墙的好像不仅仅只有大陆
makelove
2022-11-20 20:19:11 +08:00
既然是这种方法,那 ping 政 x 府网站延迟低这个方法比这个快速一点
docx
2022-11-20 20:41:21 +08:00
@ragnaroks @yaott2020 这样本质上还是用了 cf 的 geoip 库
blankmiss
2022-11-20 20:47:23 +08:00
确实直接取时区 会不会更好一点
chinalawme
2022-11-20 20:49:45 +08:00
成功访问 http://google.com 会返回 301 ,跳转到 HTTPS 地址,怎么是 200 呢?
yusteven
2022-11-20 20:52:55 +08:00
经典,但是有效
fisherwei
2022-11-20 20:54:00 +08:00
@chinalawme 我也想说这个问题
wonderfulcxm
2022-11-20 20:54:20 +08:00
哈哈,这个思路可以
estk
2022-11-20 21:12:00 +08:00
@chinalawme #32
实践中真是 200 ,我估计 axios 自动跳转,直到最后一层不用跳才停
estk
2022-11-20 21:12:44 +08:00
@chinalawme #32
不过你提醒我了,这样跳效率更差
estk
2022-11-20 21:21:10 +08:00
@Pastsong #15
所以 mainLand 变量默认 true ,超时说明他就是打不开谷歌
yaott2020
2022-11-20 21:24:56 +08:00
@docx 这是站点直接返回的客户端地址,和 geoip 无关
yaott2020
2022-11-20 21:26:34 +08:00
@docx 如果说是 loc 的话,确实。你可以用 ip 字段自己请求其他的 geoip api

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

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

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

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

© 2021 V2EX