H5W3
当前位置:H5W3 > 其他技术问题 > 正文

【Web前端问题】如何判断是否是墙内用户?

在做一个视频网站,需要判断用户是否来自墙内,如果是的话就生成腾讯视频的链接,否则生成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根据部分域名做那啥啥啥),你的判定方法就会失效。

本文地址:H5W3 » 【Web前端问题】如何判断是否是墙内用户?

评论 0

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址