「思考」如何快速有效地判断用户可以访问外网?

2022-05-11 03:45:38 +08:00
 dusu

最近有个需求,就是想在前端或 App 端快速判断用户是否能有效访问到外网,从而给用户推荐不同内容。

目前的想法一:

  1. 自己买个国外服务器 IP

  2. 想办法让 GFW 墙了 IP 后,再给个 api 回调,通了就代表能正常访问.

想法二:

利用一些三方 IP 检测服务(包含在 gfwlist 里的)

获取用户的国外 IP ,从而达到粗略判断的效果


但是考虑到这些有一定的局限性

而且如果是被墙的 IP ,可能接口只能以超时为判断,并不会那么「快速」

前来请教各位大佬,有什么更「成熟」更「快速」的方案么?

3043 次点击
所在节点    程序员
24 条回复
flyn
2022-05-11 04:27:53 +08:00
acehowxx
2022-05-11 07:22:26 +08:00
为啥要自己买国外服务器,直接去连谷歌连不上判断就完事了啊。
yohole
2022-05-11 08:51:41 +08:00
确实没想通 OP 为啥会有想法一?????
ochatokori
2022-05-11 08:55:31 +08:00
有没有一种可能,楼主是开发反诈 app 的王晶🐶
cmdOptionKana
2022-05-11 09:04:12 +08:00
可以先给用户推荐墙内内容,然后在后台检查能否连接墙外,如果能,下次刷新就推荐墙外内容。反之,推荐墙外内容时也同时检查,一旦超时就改成墙内内容。

这样,墙内用户永远感觉不到(因访问墙外 IP 引起的)超时。而翻墙用户也只是偶尔遇到“抽风”,这点翻墙用户早已习惯。
Kinnice
2022-05-11 09:23:22 +08:00
你是否真实需要准确判断?
一般做法 想法二即可,而且也并不需要包含在 gfwlist ,一般的国外 ip 查询即可
Kinnice
2022-05-11 09:25:53 +08:00
@Kinnice 四五个 ip 查询的接口,并发请求,回来任意一个就可以判断
litchinn
2022-05-11 09:26:58 +08:00
我觉得会访问外网的用户,你给他的外网版选择,他会自己去的,例如 taptap ?
InDom
2022-05-11 09:29:46 +08:00
img.onerror || img.onload
kujio
2022-05-11 09:32:23 +08:00
ping google.com 不行吗?
c1273082756
2022-05-11 09:50:15 +08:00
@kujio 即便是开梯子也是 ping 不通 google.com 的吧
sxeuosme
2022-05-11 09:51:02 +08:00
@yohole 估计不想让用户发现 app 在主动探测把
yohole
2022-05-11 09:59:23 +08:00
@sxeuosme 即使是这样,也有很多方法,但是 OP 的想法一不仅提高成本,而且还提高了复杂性和不稳定性,除非是有其他没说明的场景或者目的,不然正常来说不应该有这种想法
spicecch
2022-05-11 10:23:30 +08:00
不应该是判断用户已经用了外网访问然后再推内容吗
5966
2022-05-11 10:49:52 +08:00
我在想,一些 App 有没有这样的试探动作?
nmap
2022-05-11 11:05:58 +08:00
curl google
unco020511
2022-05-11 11:49:25 +08:00
你直接在 app 内发起 google 的访问,然后 callback 一下结果判断成功与失败不就行了吗,为啥想这么复杂
yaott2020
2022-05-11 12:05:53 +08:00
找个被墙的站,且用了 CloudFlare CDN 服务的,直接用 http://域名 /cdn-cgi/trace 就可以获取客户端网络信息
7gugu
2022-05-11 13:42:34 +08:00
ping 一下 google 就好了吧😂
guanzhangzhang
2022-05-11 14:32:51 +08:00
@7gugu 如果被运营商劫持 dns 解析到省内一个所有 tcp reset 的 ip 地址,那也是能 ping 通的

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

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

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

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

© 2021 V2EX