开发者社区> 问答> 正文

如何判断是否是墙内用户?

在做一个视频网站,需要判断用户是否来自墙内,如果是的话就生成腾讯视频的链接,否则生成Youtube的链接。
大概查了一下,如果用PHP的话,貌似得用用户的IP和IP地址的数据库去对照看是否来自国内,挺麻烦的,在SO上看到有一个简单的方法用JS可以实现。

var image = new Image();
image.onload = function(){
// The user can access youtube
};
image.onerror = function(){
// The user can't access youtube
};
image.src = "http://youtube.com/favicon.ico";
原理很简单,就是尝试读取Youtube的网站图标,如果不成功就说明是在墙内。
我就用这个方法写了程序然后叫国内的朋友测试,结果发现Youtube不是一直打不开的,很多时候Youtube能够极其缓慢地打开,但是在这种情况下以上的代码却会很快返回成功的信息……

想请教下,
1)现在到底国内能不能打开Youtube? 还是说虽然能开但是非常慢?
2) 有没有什么更好的方法判断用户是否能使用Youtube?

展开
收起
a123456678 2016-03-12 14:59:33 2949 0
1 条回答
写回答
取消 提交回答
  • 如果 墙内==国内的话,那么你可以用apnic的国内IP列表来做,不过可能会有漏网之鱼。
    用在线验证的方法不可靠的,原因:
    1、远端不确定会返回给你什么信息,而且可能会给开发者和使用者带来人身安全问题。
    2、如果用户开了部分那啥功能(比如啥啥list或者omega根据部分域名做那啥啥啥),你的判定方法就会失效。

    2019-07-17 19:00:56
    赞同 展开评论 打赏
问答分类:
问答地址:
相关产品:
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载