首頁 >後端開發 >php教程 >javascript - 如何判断是否是墙内用户?

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

WBOY
WBOY原創
2016-06-06 20:09:541494瀏覽

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

<code>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";
</code>

原理很简单,就是尝试读取Youtube的网站图标,如果不成功就说明是在墙内。
我就用这个方法写了程序然后叫国内的朋友测试,结果发现Youtube不是一直打不开的,很多时候Youtube能够极其缓慢地打开,但是在这种情况下以上的代码却会很快返回成功的信息……

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

回复内容:

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

<code>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";
</code>

原理很简单,就是尝试读取Youtube的网站图标,如果不成功就说明是在墙内。
我就用这个方法写了程序然后叫国内的朋友测试,结果发现Youtube不是一直打不开的,很多时候Youtube能够极其缓慢地打开,但是在这种情况下以上的代码却会很快返回成功的信息……

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

你可以换成轮子的网站。。那种都是稳定被墙的。。

直接访问不了,我修改过hosts能访问网页,但视频无法加载。我觉得你可以让用户选择。

会不会是运营商那里的cache搞的鬼, 加个"no-cache"或随机参数试试

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

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn