最近公众号和个人网站进行了对接,用户回复关键词,公众号返回图文消息给用户,用户再点击图文消息即可跳转到一个网页链接,在微信的内置浏览器中打开。问题是这个页面在电脑上的浏览器也是可以访问的,那么其他人就可以很随便地查看页面的源代码,或者模拟请求了。有什么方法可以防止这一点呢?

浏览器访问网页时都会发送一个UserAgent给服务器,它里面包含了一些浏览器及用户操作系统的基本信息,既然微信有内置浏览器,那么用微信浏览网页时这个UserAgent里面应该会带上和微信相关的独有的标识。测试后证实了这一说法,UserAgent为:

Mozilla/5.0 (Linux; U; Android 2.3.6; zh-cn; GT-S5660 Build/GINGERBREAD) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1 MicroMessenger/4.5.255

解决方案就是用js判断请求的UserAgent,代码如下:

// 对浏览器的UserAgent进行正则匹配,不含有微信独有标识的则为其他浏览器

var useragent = navigator.userAgent;

if (useragent.match(/MicroMessenger/i) != ‘MicroMessenger’) {

// 这里警告框会阻塞当前页面继续加载

alert(‘已禁止本次访问:您必须使用微信内置浏览器访问本页面!’);

// 以下代码是用javascript强行关闭当前页面

var opened = window.open(‘about:blank’, ‘_self’);

opened.opener = null;

opened.close();

}

代码在Android、iPhone、iPad、PC上都进行了测试,只要不是在微信内部打开网页的,首先就会弹出上面那个警告框,此时后面的页面是空白的,什么都还没加载,当点击警告框的确定按钮之后,最后三行代码将强行关闭当前页面。

注:对于伪造的UserAgent,还是可以绕过这条限制的,总的来说就是防君子不防小人。

网上找到的方式汇总:

可以按照以下方式设置:

1、js或程序判断,userAgent,是否包含micromessenger。

2、js判断微信相关特有函数。

3、调用oauth接口,如果不想用户感知的,可以调用scope=snsapi_base的方式,这个最后只能获得用户openid。scope=snsapi_userinfo方式,用户会看到一个授权页面,点击授权后,可以获得用户所有信息。

4、还可以通过判断是否为WeixinJSBridge进行限制,如(其他程序语言按照对应语法进行修改):

if( typeof WeixinJSBridge !== “undefined” )

{

return true;

}

可行性有待进一步测试,有时间的可以试一下。

CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明如何限制网页只能在微信内置浏览器中打开访问!

html页面如何访问控制限制,如何限制网页只能在微信内置浏览器中打开访问相关推荐

  1. 如何限制网页只能在微信内置浏览器中打开?

    微信网页授权 关于网页授权的两种scope的区别说明 列表内容 2. <script type="text/javascript">// 对浏览器的UserAgent进 ...

  2. python打开火狐浏览器打不开网页_PHP让指定网页只能在微信内置浏览器打开 附代码...

    有时候,有些网页不方便在电脑或者手机QQ打开,比如:想创建一个微信活动页面,在电脑或者QQ打开会导致某些功能失效,页面错版等情况,为了避免出现这种情况,其实我们只需让它只能在微信打开就可以了. 电脑和 ...

  3. 判断当前页面是否在微信内置浏览器中打开

    转: 任何浏览器的判断都是获取user-agent参数进行判断的,判断当前页面是否在微信浏览器中打开同样也不例外. 1.首先需要获取微信内置浏览器的User Agent,经过对微信的浏览器的检测,它的 ...

  4. 判断网页是否为微信内置浏览器打开?

    文章目录 (两种方法)教你:"如何判断网页是不是在微信端内置浏览器打开?" 本文根据项目开发实际情况,着重探讨在微信内置浏览器中调用支付功能,遇到的几个坑! 目的: (方法一)全部 ...

  5. 微信公众号 - 实现 H5 网页在微信内置浏览器中下载文件,可预览和下载 office 文件(doc / xls / ppt / pdf 等)适用于任何前端技术栈网站,兼容安卓和苹果系统!

    前言 网上的教程都是让你写页面 "引导" 右上角三个点里,让用户自己去浏览器打开,其实这样用户体验并不好. 本文实现了 最新微信公众号 H5 网页(微信内置浏览器中),预览下载 o ...

  6. 微信内置浏览器能打开的网页复制网址出来用浏览器却打不开

    前不久遇到一个问题:微信内置浏览器能打开的网页复制网址出来用浏览器却打不开 之前该网址是被防火墙阻塞了的,后来放开了该网址,然后微信内置浏览器能打开没问题,包括家里面的网络和个人热点打开也没有问题,手 ...

  7. 安卓非微信内置浏览器中的网页调起微信支付的方案研究

    问题来源 之前在app中集成过微信支付,此种微信支付方式为app支付,即在我们自己的应用中嵌入微信支付SDK,由Native代码调起微信支付. 后来由于业务需要在我们app的WebView中打开第三方 ...

  8. 网页链接无法使用微信内置浏览器打开的解决方案,实现微信跳转外部浏览器打开网页

    最近很多做微信推广的朋友经常会问我为什么网页链接在微信内转发很容易被拦截,问我有没有办法解决.其实这并不难,只要我们实现微信跳转功能即可,下面给大家说说如何实现微信跳转外部浏览器的功能. 功能目的 生 ...

  9. 非微信内置浏览器中的网页调起微信支付的方案研究

    问题来源 之前在app中集成过微信支付,当时还写了一篇扫坑贴,此种微信支付方式为app支付,即在我们自己的应用中嵌入微信支付SDK,由Native代码调起微信支付. 后来由于业务需要在我们app的We ...

最新文章

  1. 运行时常量池在哪里_Java虚拟机详解(二)------运行时内存结构
  2. Docker容器私有仓库——Harbor私有仓库的搭建
  3. 硬件模拟大师_科普丨硬件检测软件3D Mark究竟多“硬核”?
  4. SHA1 - Java加密与安全
  5. 干支纪年法简便算法_民间玄学:那些年我理解的何谓“天干”,“地支”,“干支”...
  6. 云存储精华问答 | 云存储是如何工作的?
  7. 加密算法使用(三):用用BASE64
  8. HDU1976 Software Version【水题】
  9. laravel Ajax请求 X-CSRF验证问题
  10. 月入30K 的电子工程师很常见吗,需要具备啥素质才配得上这个薪资
  11. 【软件工程】——详细设计说明书
  12. 毁灭者DC W650DC装黑苹果心得
  13. Win10 触摸屏 快捷键操作
  14. 资本家的收割阴谋---空气币FIL“挖矿”庞氏骗局还能坚持多久?
  15. 2019到2022年上海车牌成交价+上牌流程
  16. Python科研绘图——介绍
  17. POJ 2248【加法链】
  18. Java后端集成发送短信功能(用的是阿里云的短信服务)
  19. 联想笔记本电脑键盘按键映射替换
  20. 店盈通:拼多多商品怎么上架?

热门文章

  1. 源码该如何加密:个人方案分享
  2. 文献RNA-seq复现第2期——sra数据转换、参考基因组及注释信息的准备
  3. 日语学习第一课日本文字
  4. ACM 在线平台(OJ)评判结果 错误类型 及解决办法
  5. lisp 代码计算月供
  6. 3-5 linux 网络文件系统
  7. 洗地机什么牌子最好?洗地机测评排行榜
  8. 分享一些免费调用的API网站,快来看看
  9. PCA9685寄存器用法和通信(一)
  10. rabbitMQ 3.7.25安装部署