Open Collective
Open Collective
Loading
重磅:使用UOS微信桌面版协议登录,wechaty免费版web协议重放荣光
Published on April 18, 2021 by Huan

很高兴能够写这篇文章通知大家Wechaty的web协议又能大放光彩了,如果之前你的微信提示不能登录web端,那么这个更新将会是你的福音。因为现在的wechaty-puppet-wechat已经支持使用UOS微信桌面版协议登录,赶快来尝试一下吧。


如何使用

关键依赖:npm install wechaty-puppet-wechat –save

对现有代码无任何侵入性,只是更新一下依赖即可

一、首先安装最新的wechaty-puppet-wechat依赖和配置环境

npm install qrcode-terminal --save
npm install wechaty 
npm install wechaty-puppet-wechat --save // 这个依赖是关键

二、请保证你的puppet配置的是wechaty-puppet-wechat

如果你使用的是ipadlocal,又想体验一下web协议,那么也需要按照一下配置进行

案例:

index.js

const { Wechaty } = require('wechaty');

const name = 'wechat-puppet-wechat';
let bot = '';
bot = new Wechaty({
  name, // generate xxxx.memory-card.json and save login data for the next login
});

//  二维码生成
function onScan(qrcode, status) {
  require('qrcode-terminal').generate(qrcode); // 在console端显示二维码
  const qrcodeImageUrl = [
    'https://wechaty.js.org/qrcode/',
    encodeURIComponent(qrcode),
  ].join('');
  console.log(qrcodeImageUrl);
}

// 登录
async function onLogin(user) {
  console.log(`贴心小助理${user}登录了`);
  if (config.AUTOREPLY) {
    console.log(`已开启机器人自动聊天模式`);
  }
  // 登陆后创建定时任务
  await initDay();
}

//登出
function onLogout(user) {
  console.log(`小助手${user} 已经登出`);
}

bot.on('scan', onScan);
bot.on('login', onLogin);
bot.on('logout', onLogout);
bot
  .start()
  .then(() => console.log('开始登陆微信'))
  .catch((e) => console.error(e));


按照以上配置,拿起你的手机扫码即可,你会发现以前不能登录的微信也可以登录了,惊喜不,意外不。


常见问题

1、为什么我更新了最新依赖还是提示无法登录web端微信?

请查看你项目的根目录,是否存在wechaty-puppet-wechat.memory-card.json这样的文件,如果有请把它删除后重新执行即可,这个存储的cookies 有可能已经过期(最新版本已经修复此问题)

2、这个puppet可以保证一直能绕过web登录么?

目前看来是可以绕过web端的限制,但是不保证以后会变化

3、绕过这个限制会被微信发现封禁么?

目前采用的绕过方式其实是使用了UOS的桌面版微信请求头,所以如果你不做违反微信协议的事情,大概率是没问题的。如果你违反了微信规定,那就不知道了

更多问题后续会根据反馈继续补充


原理

具体的实现原理可以参考这个issues ,代码修改参见 https://github.com/wechaty/wechaty-puppet-wechat/pull/129

大概的意思就是UOS下的微信只是网页版套了个electron,所以呢有大神就对比了一下请求头,发现了只要在请求的地址上首先加一个?target=t就是这样https://wx.qq.com/?target=t

然后在扫码登陆后拦截 https://wx.qq.com/cgi-bin/mmwebwx-bin/webwxnewloginpage 这个请求,并在请求头上添加两个固定的参数

extspam ='Gp8ICJkIEpkICggwMDAwMDAwMRAGGoAI1GiJSIpeO1RZTq9QBKsRbPJdi84ropi16EYI10WB6g74sGmRwSNXjPQnYUKYotKkvLGpshucCaeWZMOylnc6o2AgDX9grhQQx7fm2DJRTyuNhUlwmEoWhjoG3F0ySAWUsEbH3bJMsEBwoB//0qmFJob74ffdaslqL+IrSy7LJ76/G5TkvNC+J0VQkpH1u3iJJs0uUYyLDzdBIQ6Ogd8LDQ3VKnJLm4g/uDLe+G7zzzkOPzCjXL+70naaQ9medzqmh+/SmaQ6uFWLDQLcRln++wBwoEibNpG4uOJvqXy+ql50DjlNchSuqLmeadFoo9/mDT0q3G7o/80P15ostktjb7h9bfNc+nZVSnUEJXbCjTeqS5UYuxn+HTS5nZsPVxJA2O5GdKCYK4x8lTTKShRstqPfbQpplfllx2fwXcSljuYi3YipPyS3GCAqf5A7aYYwJ7AvGqUiR2SsVQ9Nbp8MGHET1GxhifC692APj6SJxZD3i1drSYZPMMsS9rKAJTGz2FEupohtpf2tgXm6c16nDk/cw+C7K7me5j5PLHv55DFCS84b06AytZPdkFZLj7FHOkcFGJXitHkX5cgww7vuf6F3p0yM/W73SoXTx6GX4G6Hg2rYx3O/9VU2Uq8lvURB4qIbD9XQpzmyiFMaytMnqxcZJcoXCtfkTJ6pI7a92JpRUvdSitg967VUDUAQnCXCM/m0snRkR9LtoXAO1FUGpwlp1EfIdCZFPKNnXMeqev0j9W9ZrkEs9ZWcUEexSj5z+dKYQBhIICviYUQHVqBTZSNy22PlUIeDeIs11j7q4t8rD8LPvzAKWVqXE+5lS1JPZkjg4y5hfX1Dod3t96clFfwsvDP6xBSe1NBcoKbkyGxYK0UvPGtKQEE0Se2zAymYDv41klYE9s+rxp8e94/H8XhrL9oGm8KWb2RmYnAE7ry9gd6e8ZuBRIsISlJAE/e8y8xFmP031S6Lnaet6YXPsFpuFsdQs535IjcFd75hh6DNMBYhSfjv456cvhsb99+fRw/KVZLC3yzNSCbLSyo9d9BI45Plma6V8akURQA/qsaAzU0VyTIqZJkPDTzhuCl92vD2AD/QOhx6iwRSVPAxcRFZcWjgc2wCKh+uCYkTVbNQpB9B90YlNmI3fWTuUOUjwOzQRxJZj11NsimjOJ50qQwTTFj6qQvQ1a/I+MkTx5UO+yNHl718JWcR3AXGmv/aa9rD1eNP8ioTGlOZwPgmr2sor2iBpKTOrB83QgZXP+xRYkb4zVC+LoAXEoIa1+zArywlgREer7DLePukkU6wHTkuSaF+ge5Of1bXuU4i938WJHj0t3D8uQxkJvoFi/EYN/7u2P1zGRLV4dHVUsZMGCCtnO6BBigFMAA='
client-version' = '2.0.0', 

这样就可以完美使用桌面版协议了,真的是非常感谢 @Luv Letter 的解释和 @artxia 的chrome插件代码让我有机会为wechaty-puppet-wechat添砖加瓦


快速体验

如果想快速体验Wechay的完整功能,以及可视化配置功能,可以关注我的 《微信每日说》《智能微秘书》 项目,以上项目均已更新最新版web协议,全部支持web登录。

历史文章

作者: Leo_chen,高级前端工程师,喜欢使用node做各种项目
Source: https://wechaty.js.org/2021/04/13/wechaty-uos-web/