javascript - 如何判断是否是墙内用户?
大概查了一下,如果用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?
回复内容:
在做一个视频网站,需要判断用户是否来自墙内,如果是的话就生成腾讯视频的链接,否则生成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?
你可以换成*的网站。。那种都是稳定被墙的。。
直接访问不了,我修改过hosts能访问网页,但视频无法加载。我觉得你可以让用户选择。
会不会是运营商那里的cache搞的鬼, 加个"no-cache"或随机参数试试
如果 墙内==国内的话,那么你可以用apnic的国内IP列表来做,不过可能会有漏网之鱼。
用在线验证的方法不可靠的,原因:
1、远端不确定会返回给你什么信息,而且可能会给开发者和使用者带来人身安全问题。
2、如果用户开了部分那啥功能(比如啥啥list或者omega根据部分域名做那啥啥啥),你的判定方法就会失效。
上一篇: html中规定元素的类名的属性class
下一篇: ps把朋友照片制作搞笑表情
推荐阅读
-
javascript - PHP如何判断一个请求是否来源于本域并且是ajax请求?
-
javascript - 如何判断是否是墙内用户?
-
javascript - 如何判断是否是墙内用户?
-
javascript - webapp社交开发如何判断对方是否已读消息?或者判断用户什么时候离开页面
-
javascript - 在移动端浏览器内判断用户是否安装了某个app
-
如何判断鼠标是否在DIV的区域内_javascript技巧
-
javascript - 在移动端浏览器内判断用户是否安装了某个app
-
javascript - webapp社交开发如何判断对方是否已读消息?或者判断用户什么时候离开页面
-
js如何判断用户是在PC端和还是移动端访问_javascript技巧
-
如何判断鼠标是否在DIV的区域内_javascript技巧