Puppeteer实现自动登录
Puppeteer是用JS对Chrome Dev Tools的实现,可以用来操作Chrome浏览器,适用于爬虫、自动化等领域。
以下是自己实现自动化登录的代码(基于ES6)
const puppeteer = require('puppeteer');
const axios = require('axios');
const config = require('./config');
const loginurl = config.loginurl;
const user = config.user;
const headless = false;
const rize = require('rize');
var token;
console.log(config);
const browser = puppeteer.launch(
{
headless, executablePath: config.chromePath, args: ['--start-maximized', '--disable-infobars']
}
);
async function login() {
// 预先定义,在下面接受内层返回的brower对象
// 待内部变量传出后,再给其赋值
var _token;
await browser.then(
async browser => {
const loginPage = await browser.newPage();
var vfcode;
// 闭包,内部可访问外部的变量,之后将其传出
var __token;
await loginPage.setViewport({width:0, height:0})
await loginPage.on('requestfinished', request => {
if (request.url().endsWith('Get_VerifyCode')){
request.response().json().then(
(result) => {
vfcode = JSON.parse(result).data.verifyCode;
})}});
await loginPage.goto(loginurl);
await loginPage.type('input[name="username"]', user[0]);
await loginPage.type('input[name="password"]', user[1]);
await loginPage.type('input[name="verificationCode"]', vfcode);
await loginPage.click('span.mcenter.submitinner');
await loginPage.on('requestfinished', request => {
if(request.url().endsWith('Post_Authenticate')){
request.response().json().then((result) => {
__token = 'BasicAuth ' + JSON.parse(result).data.tokenID;
});
}
// 在这里卡了很久,因为异步,内部赋值总是要晚于外面的代码,不得不加上等待,等待一会儿再返回token
}).waitFor(500);
// browser在其内部定义,须返回给上层
// console.log('____, ' ,_token);
return __token;
}
).then( (t) => {_token = t;});
return _token
}
login().then(
result => {
token = result;
registerProj();
}
);
Puppeteer实现自动登录的更多相关文章
- Linux开机自动登录(文本模式)
• Linux系统启动登录过程 以RedHat/CentOS为例,Linux系统Level3模式下从启动到登录的整个过程大致如下: 1> 加载BIOS信息:包含了CPU/显卡/内存/硬盘/网卡等 ...
- expect实现自动登录
自动登录主机(ssh) 建脚本item2login.sh,包含如下内容 #!/usr/bin/expect set timeout 30 spawn ssh -p [lindex $argv 0] [ ...
- cookie自动登录的实现
cookie自动登录是指把用户登录的信息按期限(自定)保存在客户端,当用户请求登录时判断客户端用没有cookie对象,有的话填充值,否则登录界面的输入框为空,不进行填充. 登录界面 ...
- windows 2003自动登录的具体步骤
在win2003系统中,使用最多的可能就是远程操作了,关于远程操作的那些事很多用户还是有些迷茫的.如果win2003系统远程重启后,要重新登录系统十分的麻烦,如何才能实现重启后的自动登录呢?让高手告诉 ...
- 如何设置phpMyAdmin自动登录和取消自动登录
如何设置phpMyAdmin自动登录? 首先在根目录找到config.sample.inc.php复制一份文件名改为config.inc.php(如果已经存在 config.inc.php 文件,则直 ...
- 利用activeX控件在网页里自动登录WIN2003远程桌面并实时控制
首先要自己配置并打开受控端的WEB远程桌面服务,这个在“添加/删除windows组件”里有,我只在windows 2003 server里试过,没试过XP.下面我们在客户端安装微软提供的远程桌面客户端 ...
- 简单的行为控制管理方法,自动登录,session定时验证码过期
代码很简单 实现的方式很多,用cookies 用static 变量 file文件缓存 等等 比如 //简单行为管理,如果请求此方法次数多于5次,就显示验证码 吧当前方法的name传进来,有效时间是5分 ...
- QQ模拟自动登录实现
QQ模拟自动登录实现 本篇文章主要介绍"QQ模拟自动登录实现(带验证码)",主要涉及到java 实现QQ自动登录(带验证码)方面的内容,对于java 实现QQ自动登录(带验证码)感 ...
- java 自动登录代码
javaBean的代码 package bean; import java.io.Serializable; public class Admin implements Serial ...
随机推荐
- Java——对象转型
[对象转型]
- Java——类
[类]
- matplotlib中中文字体配置
解决方式1:利用matplotlib的字体管理工具font_manager---->缺点:每次必须要进行设置 import matplotlib.pyplot as plt from matpl ...
- RedisTemplate访问Redis数据结构(三)——Hash
HashOperations提供一系列方法操作hash.首先初始化spring工厂获得redisTemplate和opsForHash private RedisTemplate<String, ...
- C. Anna, Svyatoslav and Maps
C. Anna, Svyatoslav and Maps 给定一个有向图,给定一条有向路径,求一条顶点最少的路径,使得给定的路径是它的最短路 folyd预处理出任意两点间的最短路,然后判断是否可以缩点 ...
- CSS设置透明背景
filter: alpha(opacity=40); background-color: rgb(0, 0, 0); background-color: rgba(0, 0, 0, 0.4); 通过改 ...
- [ethereum源码分析](4) ethereum运行开启console
前言 在上一章我们介绍了 ethereum初始化指令 ,包括了系统是如何调用指令和指令的执行.在本章节我们将会介绍 geth --datadir dev/data/ --networkid cons ...
- [CSP-S模拟测试]:ants(回滚莫队)
题目描述 然而贪玩的$dirty$又开始了他的第三个游戏. $dirty$抓来了$n$只蚂蚁,并且赋予每只蚂蚁不同的编号,编号从$1$到$n$.最开始,它们按某个顺序排成一列.现在$dirty$想要进 ...
- 快速构建Spring Cloud工程
spring cloud简介 spring cloud为开发人员提供了快速构建分布式系统的一些工具,包括配置管理.服务发现.断路器.路由.微代理.事件总线.全局锁.决策竞选.分布式会话等等.它运行环境 ...
- mysql-c++连接
1.mysql-c++连接MySQL :: Download Connector/C++ https://dev.mysql.com/downloads/connector/cpp/ 1-1VS201 ...