点击解锁VIP可享全站免费下载 零基础搭建绿幕直播间卖货赚钱 闪豚AI训练★批量生成原创好文章 本广告位待租本广告位待租待租
点击解锁VIP可享全站免费下载 零基础搭建绿幕直播间卖货赚钱 高质量SEO原创文章生成☆过AI检测 本广告位待租本广告位待租待租
点击解锁VIP可享全站免费下载 零基础搭建绿幕直播间卖货赚钱 NLP原创SEO文章AI自动生成教学 本广告位待租本广告位待租待租

温馨提示:需广告位请联系广告商务经理

微信公众号登录,纯前端JS解决微信公众号自动登录问题

注意,本文实现功能不涉及任何后端,有后端搭伙的小伙伴可以不用看了哈。微信场景这两天解决公众号广告分发平台项目(基于Electron)的一些棘手问题,其中之一就是微信公众号自动登录问题。一个PC客户端,内嵌了一个webview,里面塞入的是微信公众号首页,即登录页:https://mp.weixin.qq.com/,拿Cookie,Token什么的不在本文内,较为敏感,这里只说一下实现自动登录功能。公众号首页核心功能就两块,webview的preload插入js文件,js文件里面动态嵌入不同的账密。preloadElectron的webview允许开发者设计预插入一个js文件,具体官网描述如下:preloadpreload<webviewsrc=&quo

注意,本文实现功能不涉及任何后端,有后端搭伙的小伙伴可以不用看了哈。

微信

场景

这两天解决公众号广告分发平台项目(基于Electron)的一些棘手问题,其中之一就是微信公众号自动登录问题。

一个PC客户端,内嵌了一个webview,里面塞入的是微信公众号首页,即登录页:https://mp.weixin.qq.com/,拿Cookie,Token什么的不在本文内,较为敏感,这里只说一下实现自动登录功能。

公众号首页

核心功能就两块,webview的preload插入js文件,js文件里面动态嵌入不同的账密。


preload

Electron的webview允许开发者设计预插入一个js文件,具体官网描述如下:

preload

pre百度翻译在线翻译load

<webview src="ht内容运营岗位职责tps://www.github.com/" preload="./test.js"></webview>

指定一个脚本在访客页中其他脚本执行之前先加载。 该脚本的URL的协议必须是 file: asar:二者之一,因为在访客页中,它是通过“内部”的 require 去加载的

当访客页没有 node integration ,这个脚本仍然有能力去访问所有的 Node APIs, 但是当这个脚本执行执行完成之后,通过Node 注入的全局对象(global objec公司破产辞退员工补偿标准ts)将会被删除。

注意: 在为 will-attach-webview 事件公众号排版指定 webPreferences 时,这个选项将作微信公众平台为 preloadURL公众号怎么做 出现,而不是 preload。视频转音频

所以,相对来微信转账和微信红包有什么区别说简单的想法就是在preload的js里面,我们做一下输入框内容的填充即可。

道理是这么个道理,但是实际操作起来会有一些问题,我们代码一步一步来,首先想到的是,input.value卖货郎歌曲原唱 = x这种操作。

下面是账号in卖货郎歌曲原唱put相关信息:

account

下面是密码input相关信内容运营息:

pwd

那么就可以通过query内容运营的主要工作内容Selector方式获取两个输入框了:

//inputs.length===2,刚好两个,不用担心其他的干扰了。
letinputs=document.querySelectorAll('.weui-desktop-form__input')

再观察登录按钮下:

login

嘛,我个卖货的经典句子人是不喜欢使用a标签当提交按钮……

获取方式:

leta=document.querySelector('.btn_login')

很简单吧注册公司

于是就有如下提交代码:

letinputs=document.querySelectorAll('.weui-desktop-form__input')
//随手放到数组里,不要较真,账密自己填写自己的
letinfos=['account','password']
for(leti=0;i<inputs.length;i++){
letinput=inputs[i]
input.value=infos[i]
setTimeout(()=>{
leta=document.querySelector('.btn_login')
a.click()
},0)
}

按说,逻辑没问题。但是,实际使用公众号平台会返回告诉你,没有输入账号(密码)。流量

只能抠下源码分析怎么回事了,源码所在位置(随机数你看到的与我未必一样):

源码

右侧复制下来微信拉黑了发信息对方能看到吗,然后本地编辑器新建js,并且格式化后就可以看到比较清晰的源码,虽然命名被压缩后比较奇葩,如下:

源码格式化后

检索相关关键词(比如“你还没有输入帐号!”),或者login(查多了就知道了),就可以找到相视频统计信息关的逻辑所在。

通过第一行的define,第一时间想到的是seajs,后来发现就是seajs,无他。

再看到里面的,computed,watch,mounted之类的,也可以联想到广告法是Vue,所以应当是seajs与Vue混合开发的公众号首页。

到这里,就相对清晰了,获取不到账密原因在于我们直接设置value的方式,并不能触发注册会计师Vue实例的data修改,如下:

核心data值

此时,就该想到Vue的事件机制(不需要懂源码,用过就差不多注册公司流程和费用),简单来说,就是事件函数驱动data变化,而不是外部手动修改DOM可以触发。视频剪辑教程自学

所以,增加一卖货软件句话就可以混淆Vue的data机制,从而解决data值不响应变化的问题:

input.dispatchEvent(newEvent('input'))

没错,神奇的Event函数,通过new对象的方式,让相应标签实例主动触发相关事件。

这里注意下,不是所有都注册会计师报名条件是input事件,这个根据视频统计信息标签不同而不同,我们这微信里要解决的是微信公众号登录的问题,所以拼多多商家是输入框input标签,那么自然就是input事件(o内容3分钟的泡面番ninput)了。

完整处理代码如下,请注意与上方的对比:

letinputs=document.querySelectorAll('.weui-desktop-form__input')
//随手放到数组里,不要较真,账密自己填写自己的
letinfos=['account','password']
for(leti=0;i<inputs.length;i++){
letinput=inputs[i]
input.value=infos[i]
//修改input的值后,记得主动触发一次input事件。
input.dispatchEvent(newEvent('input'))
setTimeout(()=>{
leta=document.querySelector('.btn_login')
a.click()
},0)
}

这样,a的click事平台规则件就生效了,至此,完成登录这个事情。


动态账密

上面解决了模拟登录百度百科问题,但是仅仅是模拟,因为账密是写卖货郎死的,别忘了,我们现在在Electron的一个webview组件里面。

现在要考百度百科虑的是,如何给webview组件带入不同的账密。

  1. fs写入新的js,里面插入账密,再读取

  2. 通过其他webview文件信息插入

先说第一种,这个是有点node基础的小视频解析伙伴都会首先想到公司法的,没错,我尝试卖货郎了,然后,挂了。

原因很简单,沙盒内的文件路径与你启动前配置的文件路径不同,导致代码上写的读取路径(readFileSync)内容最丰富的药学巨著是哪一部与写入路径(writeF微信下载ileSync)不同,能写不能读,WTF……这里使用Sync原因很简单,异步处理相对麻烦,调试用同步,高效快速。

于是我们pass第一种方案,如果你成功了,务必告诉我下。

然后是第二公众号登录种:

这里先说明下,个人觉得第二种有点侥幸,因为公众号后端验证没有严格到把ua(userAg微信发出的红包能撤回吗ent)也算进去,所以我找到这个方案。

首先查询了webview能够带入进去的所有属性,很幸运,有个ua,官网介绍如下:

官网ua

use注册电气工程师ragent

<webview src="https://www.github.com/" useragent=&qu拼多多商家登录网页版ot;Mozilla/5.0 (Windows NT 6.1; WO内容神器W64; Trident/7.0; AS; rv:11.0) like Gecko&公司quot;&g公众号创建t;</webview>

在访客页被导航(nav内容运营岗位职责igated)之前,为它设置 user agent,一旦这个页面加载之后,使用 setUserAgent 方法去改变这个页面的 user a百度gent。

事实上,还有别的(主要受webview限制,即Electron限制),但是懒得找了,差不多百度意思就行。

可能已经有小伙伴想到方案了,所以我就不墨迹了,直接上代码处理,先是写入:

//你也可以写成标签<webviewuseragent="['account','password']"></webview>,这里为了灵活而已
webview.setAttribute('useragent',"['account','password']")

然后读取并赋值:

letinfos=JSON.parse(navigator.userAgent)

由于ua我们写成了字符串的数组,所以这里自然可以解开成数组实例。

那么后面就简单了,不再赘述,直接看完整的核心代码即可,注意对比差异:

letinputs=document.querySelectorAll('.weui-desktop-form__input')
//从ua获取传入的值
letinfos=JSON.parse(navigator.userAgent)
for(leti=0;i<inputs.length;i++){
letinput=inputs[i]
input.value=infos[i]
//修改input的值后,记得主动触发一次input事件。
input.dispatchEvent(newEvent('input'))
setTimeout(()=>{
leta=document.querySelector('.btn_login')
a.click()
},0)
}

至此,我们就解决了纯前端模拟百度网盘微信页面登录,并动态不同账号登录的问题了。

效果如下:

autologin


感谢大家内容神器的阅读,欢迎交流。

免责说明

本站资源大多来自网络,如有侵犯你的权益请提交工单反馈(点击进入提交工单) 或给邮箱发送邮件laakan@126.com 我们会第一时间进行审核删除。站内资源为网友个人学习或测试研究使用,未经原版权作者许可,禁止用于任何商业途径!请在下载24小时内删除!

给TA打赏
共{{data.count}}人
人已打赏
!
也想出现在这里? 联系我们
广告信息
0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索