如何解决“请在微信客户端打开链接”

如题,这个问题确实很苦恼,写下这篇博客记录下自己的问题。


<!DOCTYPE html>
<html>
    <head>
        <meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=0">
    </head>
    <body>
        <script type="text/javascript">
            var ua = navigator.userAgent.toLowerCase();
            var isWeixin = ua.indexOf('micromessenger') != -1;
            var isAndroid = ua.indexOf('android') != -1;
            var isIos = (ua.indexOf('iphone') != -1) || (ua.indexOf('ipad') != -1);
            if (!isWeixin) {
                document.head.innerHTML = '<title>抱歉,出错了</title><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=0"><link rel="stylesheet" type="text/css" href="https://res.wx.qq.com/open/libs/weui/0.4.1/weui.css">';
                document.body.innerHTML = '<div class="weui_msg"><div class="weui_icon_area"><i class="weui_icon_info weui_icon_msg"></i></div><div class="weui_text_area"><h4 class="weui_msg_title">请在微信客户端打开链接</h4></div></div>';
            }
        </script>
    </body>
</html>

这是用其他网页访问微信链接的错误代码,关于

var isWeixin = ua.indexOf('micromessenger') != -1;

这句代码,应该是只要在请求头的user-agent字段中找到了’micromessenger’即可认为是微信的内置浏览器,但在抓包之后的更改后发现无效,返回的响应头状态码为302,应该是失败了.根据

var isAndroid = ua.indexOf('android') != -1;
var isIos = (ua.indexOf('iphone') != -1) || (ua.indexOf('ipad') != -1);

这两句代码估计,应该还要在请求头里加上其他的一些字段,但由于个人能力的原因,就不知道该怎么加,该问题暂时搁置.
附:模拟UA这条路估计已经无效了,尝试过模拟多次UA均已经失效.不过还是学到了一点东西.chrome浏览器f12点右上角的三个小点图标下拉more tools里的NetWork conditions 即可修改请求头

评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值