最近有个需求,就是想在前端或 App 端快速判断用户是否能有效访问到外网,从而给用户推荐不同内容。
目前的想法一:
自己买个国外服务器 IP
想办法让 GFW 墙了 IP 后,再给个 api 回调,通了就代表能正常访问.
想法二:
利用一些三方 IP 检测服务(包含在 gfwlist 里的)
获取用户的国外 IP ,从而达到粗略判断的效果
但是考虑到这些有一定的局限性
而且如果是被墙的 IP ,可能接口只能以超时为判断,并不会那么「快速」
前来请教各位大佬,有什么更「成熟」更「快速」的方案么?
感谢各位,大家提供的方案更多是在app端,我需要考虑的方案是兼并前端和app,前端要用google等服务的话还需要找能跨域或者jsonp的接口,所以才会有第一种方案
onload|onerror 可以解决大部分问题了,感谢各位~
|  |      1flyn      2022-05-11 04:27:53 +08:00  1 curl "http://www.v2ex.com/generate_204" curl "http://youtube.com/generate_204" curl "http://googlevideo.com/generate_204" 通过是否请求超时来判断? | 
|      2acehowxx      2022-05-11 07:22:26 +08:00 via Android 为啥要自己买国外服务器,直接去连谷歌连不上判断就完事了啊。 | 
|  |      3yohole      2022-05-11 08:51:41 +08:00  1 确实没想通 OP 为啥会有想法一????? | 
|      4ochatokori      2022-05-11 08:55:31 +08:00 via Android  8 有没有一种可能,楼主是开发反诈 app 的王晶🐶 | 
|  |      5cmdOptionKana      2022-05-11 09:04:12 +08:00  2 可以先给用户推荐墙内内容,然后在后台检查能否连接墙外,如果能,下次刷新就推荐墙外内容。反之,推荐墙外内容时也同时检查,一旦超时就改成墙内内容。 这样,墙内用户永远感觉不到(因访问墙外 IP 引起的)超时。而翻墙用户也只是偶尔遇到“抽风”,这点翻墙用户早已习惯。 | 
|  |      6Kinnice      2022-05-11 09:23:22 +08:00 你是否真实需要准确判断? 一般做法 想法二即可,而且也并不需要包含在 gfwlist ,一般的国外 ip 查询即可 | 
|  |      8litchinn      2022-05-11 09:26:58 +08:00  2 我觉得会访问外网的用户,你给他的外网版选择,他会自己去的,例如 taptap ? | 
|  |      9InDom      2022-05-11 09:29:46 +08:00  1 img.onerror || img.onload | 
|  |      10kujio      2022-05-11 09:32:23 +08:00 ping google.com 不行吗? | 
|      11c1273082756      2022-05-11 09:50:15 +08:00 @kujio 即便是开梯子也是 ping 不通 google.com 的吧 | 
|  |      13yohole      2022-05-11 09:59:23 +08:00 @sxeuosme 即使是这样,也有很多方法,但是 OP 的想法一不仅提高成本,而且还提高了复杂性和不稳定性,除非是有其他没说明的场景或者目的,不然正常来说不应该有这种想法 | 
|      14spicecch      2022-05-11 10:23:30 +08:00 不应该是判断用户已经用了外网访问然后再推内容吗 | 
|      155966      2022-05-11 10:49:52 +08:00 via iPhone  1 我在想,一些 App 有没有这样的试探动作? | 
|  |      16nmap      2022-05-11 11:05:58 +08:00 curl google | 
|  |      17unco020511      2022-05-11 11:49:25 +08:00 你直接在 app 内发起 google 的访问,然后 callback 一下结果判断成功与失败不就行了吗,为啥想这么复杂 | 
|  |      18yaott2020      2022-05-11 12:05:53 +08:00 via Android 找个被墙的站,且用了 CloudFlare CDN 服务的,直接用 http://域名 /cdn-cgi/trace 就可以获取客户端网络信息 | 
|  |      197gugu      2022-05-11 13:42:34 +08:00 via iPhone ping 一下 google 就好了吧😂 | 
|  |      20guanzhangzhang      2022-05-11 14:32:51 +08:00 @7gugu 如果被运营商劫持 dns 解析到省内一个所有 tcp reset 的 ip 地址,那也是能 ping 通的 | 
|  |      21jerryjhou      2022-05-11 14:50:43 +08:00 via iPhone @litchinn Tap 国际版已经进化到锁 SIM 卡归属地了,卡一是国内卡一律白屏 而且用小米华为访问 Tap 国际会提示色情诈骗。。。 | 
|      22leefor2020      2022-05-11 15:23:35 +08:00 via iPhone  1 @5966 ,要是某些安装量大的 App 已经在这么做并且上报了,那可有点吓人 | 
|  |      23onice      2022-05-11 17:19:56 +08:00 curl 一下 google ,如果连接超时,就说明 failed ,如果返回内容,就说明 success. | 
|  |      24kyro00000      2022-05-11 18:41:15 +08:00 via iPhone 我怀疑是反诈? |