Javascript 折腾, Chrome 插件,实现自动登录失败,折腾了几个小时最终失败!

2017-09-16 00:17:41 +08:00
 me15000

https://mp.weixin.qq.com/ 想实现微信公众号管理后台不用输入账户密码的自动登录: 下面是页面注入的 Js

	let uinfos = [{
			"usn": "用户名",
			"pwd": "密码"
		}
	];

	let uinfo = uinfos[0];

	
	let usnobj = document.querySelector('[name="account"]');	
	usnobj.value = uinfo.usn;
	
	let pwdobj = document.querySelector('[name="password"]');
	pwdobj.value = uinfo.pwd;

	setTimeout(function () { //模拟点击登录按钮
		document.querySelector('.btn_login').click();
	}, 200);

最终提示我: 你还没有输入帐号!

原因可能是,我直接给 input 赋值,无法触发 input 的 一些事件,而 mp.weixin.qq.com 公众号这个后台,有可能自己定义了事件模型,导致我最终无法成功

2086 次点击
所在节点    问与答
7 条回复
ferrum
2017-09-16 00:36:06 +08:00
有那么难吗,直接用 LastPass 填充密码不行?
freed
2017-09-16 01:08:34 +08:00
只懂一丢丢 javascript

控制台里执行 document.getElementsByName('account')[0].value='123456',成功修改用户名框...

不知道是不是楼主想要的效果..

https://i.loli.net/2017/09/16/59bc0901c91fe.png
freed
2017-09-16 01:22:47 +08:00
好吧我错了.原来是提交的时候没用..
zbinlin
2017-09-16 01:30:19 +08:00
看下了,页面是使用 vue 框架的,像 vue、react 里通过数据驱动页面的,直接改 dom 是很难生效的。

这里在赋值之后可以触发下模拟 input 事件,比如

```
...
usnobj.dispatchEvent(new UIEvent('input'));
...
pwdobj.dispatchEvent(new UIEvent('input'));
```

来欺骗下 vue
aver4vex
2017-09-16 08:44:53 +08:00
既然直接赋值不行,那就模拟键盘输入呗,我记得用 python+selenium 是可以的,js 绝对也是可以实现的。
me15000
2017-09-16 10:01:55 +08:00
@zbinlin 昨天晚上模拟事件,尝试了半天,没达到目的
me15000
2017-09-16 10:30:34 +08:00
@zbinlin 尝试了下,确实可行,多谢多谢

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/391110

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX