随便记录一下:微信公众号后台管理系统,获取需要扫描的二维码

今天心血来潮,看了一下微信扫码登陆.这里记录一下,重申一下–做事需要耐心!!!

微信公众号官网:mp.weixin.qq.com

我们需要分析的是二维码图片如何拿到了,当然,强大的f12绝对可以,

拿到二维码后发现是一个可访问地址:https://mp.weixin.qq.com/cgi-bin/scanloginqrcode?action=getqrcode&random=1632554160456

在新的浏览器打开,噢居然没有展示? 那么继续分析有显示的是为什么呢? 在访问过程中可以在同浏览器可以打开,在不同浏览器打不开,这可以排除token等,说明是cookie,扒开请求头的外衣,cookie分别为:ua_id,uuid,那么是不是很简单呢,逐个寻找请求吧!

这里直接说在哪吧,不废话了,找东西的方法很简单,


步骤1访问首页:

从进入https://mp.weixin.qq.com/页面那一刻,请求这个地址时候可以获得ua_id;

步骤2开始登录:

从开始登录请求:https://mp.weixin.qq.com/cgi-bin/bizlogin?action=startlogin中获取uuid;


这里说一下微信的推测逻辑哈:

访问首页:获取ua_id,

拿着ua_id校验会话权限:https://mp.weixin.qq.com/webpoc/cgi/chat/checkChatPermission?type=15&grayType=random&token=&lang=zh_CN&f=json&ajax=1,如果返回false,请求头会带回来wxuin的cookie,再次校验,

bizlogin进行预登陆:https://mp.weixin.qq.com/cgi-bin/bizlogin,预登陆返回成功,进行接下来开始登录

startlogin 开始登陆:https://mp.weixin.qq.com/cgi-bin/bizlogin?action=startlogin,开始登陆后返回uuid,

这时,获取二维码:https://mp.weixin.qq.com/cgi-bin/scanloginqrcode?action=getqrcode&random=1632554160456

接下来,坚挺登陆状态:https://mp.weixin.qq.com/cgi-bin/scanloginqrcode?action=ask&token=&lang=zh_CN&f=json&ajax=1,从status判断状态(这里不罗列状态了,简单说一下,有6中),

最后,下次再说,提示一下bizlogin设置cookie,注意loginhook,从redirect_url中获取token,


贴代码给你示范一下,以下为nodejs代码

/**
 * 步骤1,看代码不多说
 */
async function getHtml() {
    const indexHtmlResp = await axios.get('https://mp.weixin.qq.com/', {
        headers: {
            'user-agent': 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.116 Safari/537.36'
        }
    });
    let cookieArr = indexHtmlResp.headers['set-cookie'];
    console.log(cookieArr[0].split(';')[0]);
    //主要获取 ua_id
    return cookieArr[0].split(';')[0];
    
}
//第二步:
async function startLogin(uaid) {


    let url = 'https://mp.weixin.qq.com/cgi-bin/bizlogin?action=startlogin';
    const resp = await axios.post(url, {
        userlang: 'zh_CN',
        redirect_url: '',
        login_type: 3,
        sessionid: +new Date + "" + Math.floor(100 * Math.random()),
        token: '',
        lang: 'zh_CN',
        f: 'json',
        ajax: 1
    }, {
        headers: {
            'content-length':99,
            'origin':'https://mp.weixin.qq.com',
            'content-type':'application/x-www-form-urlencoded; charset=UTF-8',
            'referer': 'https://mp.weixin.qq.com/',
            'user-agent': 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.116 Safari/537.36',
            'cookie': uaid
        },
        transformRequest: [
            function (data) {
                let ret = ''
                for (let it in data) {
                    ret += encodeURIComponent(it) + '=' + encodeURIComponent(data[it]) + '&'
                }
                ret = ret.substring(0, ret.lastIndexOf('&'));
                return ret
            }
        ],
    });
    //获取uuid

    console.log(resp.data);
    console.log(resp.headers['set-cookie'][0].split(';')[0]);

    return resp.headers['set-cookie'][0].split(';')[0];
}

function refreshQrcode() {
    // this.getQrcode();
    let qrcodeSrc =  'https://mp.weixin.qq.com' + "/cgi-bin/scanloginqrcode?action=getqrcode&random=".concat(+new Date);
    console.log('访问图片地址:',qrcodeSrc)
}

//汇总
async function test() {
    //get uaid
    let uaid = await getHtml();
    //get wxuin
   // let wxuin = await checkChatPermission(uaid);
    //preLogin
    //await bizLogin(uaid);
    //start login
    let uuid = await startLogin(uaid);
    //get qrcodeSrc
    refreshQrcode()
     console.log("cookie:==>",uaid+';'+uuid);
    //qrcodeSrc need cookie
   // console.log(uaid + ';' + wxuin + ';' + uuid);
}

//执行代码
test()


上一篇:springboot 公众号推文注解


下一篇:微信开发者工具下载和安装