问,怎么才能打开微信客户端打开链接?

Javascript限制网页只能在微信内置浏览器中访问
投稿:hebedich
字体:[ ] 类型:转载 时间:
最近正在开发一个微信公众账号,其中有一项功能是用户发送文字消息给公众号,然后公众号返回图文消息给用户,用户再点击图文消息即可跳转到一个网页链接,在微信的内置浏览器中打开。
那么问题就来了,这个网页首先涉及到了移动web前端开发,我优先选择了用HTML5+bootstrap组合来实现页面的美观效果,前端其他的任务交给javascript解决(这里我是完全使用原生javascript代码,没有用到任何的框架,因为考虑到手机加载网页的速度本来就慢,而且框架中很多用不到的功能也会随网页一起加载,耗费用户流量)。
一切功能都就绪以后,客户试用也觉得很满意,之后我就把代码提交到了正式的服务器上。不过,对方又突然提到了一点:你做的页面确实挺漂亮的,兼容性也不错,但是这个页面用电脑上的浏览器也是可以访问的,那么其他人就可以很随便地查看页面的源代码,进而copy整个页面,能不能有什么方法防止这一点?那么问题就又来了,我是第一次做微信二次开发,还没遇到过这样的需求,怎么搞定呢?
一时间想不出来,后来我就把这个问题先放了放,去做后台的一些业务。在做后台的一个数据采集功能时,PHP代码当中用到了$_SERVER['HTTP_USER_AGENT']这个参数,我突然想到浏览器访问网页时都会发送一个UserAgent给服务器,它里面包含了一些浏览器及用户操作系统的基本信息,既然微信有内置浏览器,那么用微信浏览网页时这个UserAgent里面会不会带上和微信相关的独有的标识呢(毕竟腾讯这么大个公司,而微信又是他们的核心产品之一)?干脆用代码打印一下它的UserAgent来一探究竟,javascript代码如下:
&script type="text/javascript"&
&&& alert(navigator.userAgent);
在我的手机上得到了如图所示的结果:
这一下果然还真的看到了不一样的地方,相信聪明的朋友也已经发现了,没错,就是这个东西:MicroMessenger/6.0.0.50_r,斜杠后面的这一串就是我当前使用的微信的版本号,前面则应该是微信的一个独有标识了。其实我一开始看成了MicroMessage,想着中文翻译过来是“微消息”的意思,但仔细一看发现不是的,后面查了词典才知道Messenger这个词有“报信者,送信者”的意思,也就不觉得奇怪了。这个标识应该来说是其他浏览器不会有的,那么解决方案就来了,请看代码:
&script type="text/javascript"&
&&& // 对浏览器的UserAgent进行正则匹配,不含有微信独有标识的则为其他浏览器
&&& var useragent = navigator.userA
&&& if (useragent.match(/MicroMessenger/i) != 'MicroMessenger') {
&&&&&&& // 这里警告框会阻塞当前页面继续加载
&&&&&&& alert('已禁止本次访问:您必须使用微信内置浏览器访问本页面!');
&&&&&&& // 以下代码是用javascript强行关闭当前页面
&&&&&&& var opened = window.open('about:blank', '_self');
&&&&&&& opened.opener =
&&&&&&& opened.close();
这段代码在Android、iPhone、iPad、PC上都进行了测试,只要不是在微信内部打开网页的,首先就会弹出上面那个警告框,此时后面的页面是空白的,什么都还没加载,当点击警告框的确定按钮之后,最后三行代码将强行关闭当前页面。OK,到这里算是实现了用户原本的意思了,可以简单收工了。
等等,真的可以这样收工了么?你确定不会有其他问题?当然不是,其实这个方法并不会让你高枕无忧,因为对于伪造的UserAgent,还是可以绕过这条限制的,总的来说就是防君子不防小人了,大家懂得。当然,如果哪位朋友有解决这个问题的更好方法,还麻烦在下面评论告知,技术在于相互的分享和交流嘛,呵呵。
您可能感兴趣的文章:
大家感兴趣的内容
12345678910
最近更新的内容
常用在线小工具用电脑浏览器模拟手机的方法,解决“请在微信客户端打开链接”的问题
微信自带浏览器的HTTP_USER_AGENT为:
Android 4.1.1的为:
Mozilla/5.0 (L U; Android 4.1.1; zh- LA-Q1 Build/JRO03C) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30 MicroMessenger/4.5.1.261
iPhone OS 6_1_4的为:
Mozilla/5.0 (iP CPU iPhone OS 6_1_4 like Mac OS X) AppleWebKit/536.26 (KHTML, like Gecko) Mobile/10B350 MicroMessenger/4.5
微信电脑端浏览器的为:
Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.95 Safari/537.36 MicroMessenger/6.5.2.501 NetType/WIFI WindowsWechat QBCore/3.43.27.400 QQBrowser/9.0.
如果我们想在FireFox浏览器上浏览该页面,我们要怎么做呢?
FireFox修改User-agent
在地址栏输入“about:config”,按下回车进入设置菜单。
点右键“新建”-&“字符串”,输入“general.useragent.override”。
值设为“Mozilla/5.0 (L U; Android 4.1.1; zh- LA-Q1 Build/JRO03C) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30 MicroMessenger/4.5.1.261”。
安装插件:User Agent Switcher。
之后去到插件选项-&“New”-&“New User Agent”-&
Description输入“Wechat”,
User Agent输入“Mozilla/5.0 (L U; Android 4.1.1; zh- LA-Q1 Build/JRO03C) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30 MicroMessenger/4.5.1.261”
-&确定-&在菜单栏切换User Agent到Wechat。
之后用FireFox登陆网页版微信,然后访问某个微信公共账户提供的链接,访问试一下。
*文章为作者独立观点,不代表0470生活网立场
发表,并经0470生活网编辑。转载此文章须经作者同意,并请附上出处()及本页链接。原文链接/?p=283
我还没有学会写个人说明!微信客户端打开外部链接的问题【微信开发吧】_百度贴吧
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&签到排名:今日本吧第个签到,本吧因你更精彩,明天继续来努力!
本吧签到人数:0成为超级会员,使用一键签到本月漏签0次!成为超级会员,赠送8张补签卡连续签到:天&&累计签到:天超级会员单次开通12个月以上,赠送连续签到卡3张
关注:23,569贴子:
微信客户端打开外部链接的问题收藏
现在遇到这样一个情况,我自己开来一个网站服务器,把网站地址做成了一个二维码的形式,希望能用手机微信客户端扫码后跳转到我建的网页上来。扫码识别没有问题,微信客户端提示要打开外部链接,点击确认后也打开链接了,但是在自建的服务端发现这个链接被调用了多次。使用支付宝客户端或者QQ客户端扫码都能正确跳转,并且不会有多次调用服务端的情况发生,这微信客户端就这么妖怪啊?请问各位大侠这要怎样解决这个问题啊?
登录百度帐号推荐应用
为兴趣而生,贴吧更懂你。或

我要回帖

更多关于 用微信客户端打开链接 的文章

 

随机推荐