V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Level5
V2EX  ›  编程

有没有办法模拟微信客户端,发出请求拿到 code?

  •  
  •   Level5 · 2018-01-04 12:30:22 +08:00 · 4240 次点击
    这是一个创建于 2511 天前的主题,其中的信息可能已经有所发展或是发生改变。

    RT

    pic1

    3 条回复    2020-12-08 14:29:53 +08:00
    albertofwb
        1
    albertofwb  
       2018-01-15 15:32:29 +08:00 via Android
    这两天正好在做这个功能。首先你可以看看微信的开发文档,搞清楚了流程,就可以模拟浏览器访问微信提供的 url, 拦截 url 跳转就可以抓取到这个 CODE 了。我用 C#的 webview 做的,就几行代码
    Level5
        2
    Level5  
    OP
       2018-01-15 16:11:45 +08:00
    @albertofwb 我知道的流程如图所示,如果理解没错的话,用户被引导到请求 code 的链接这个步骤中,是微信内置的浏览器

    和微信服务器经过多次 HTTPS 握手交换才返回带 code 的链接重定向到商家页面.

    曾经尝试模拟微信内置浏览器到请求链接,改不改 agent 都被识别出来了,都返回

    ```
    <!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>


    ```

    获取不了带 code 的重定向链接.
    weixingna
        3
    weixingna  
       2020-12-08 14:29:53 +08:00
    解决了吗兄弟
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1232 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 23:25 · PVG 07:25 · LAX 15:25 · JFK 18:25
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.