Clicky

Puppeteer浏览器自动化

Updated 25/9/19 by Daniel

Puppeteer是一个Node.js库,它为基于Chromium的浏览器进行自动化操作提供了有效而强大的工具,它通过Chrome开发者工具提供高级别API。比如,您可以在指纹得到掩蔽和保护的Mimic浏览器内,创建一个网络爬虫来搜索和采集数据。

分配Multilogin端口

在Multilogin 3.x版本中,您需要提前定义软件端口,以使用Puppeteer自动化。以下是在3.x版本中定义端口的方法:

  1. 前往C:\Users\%username%\.multiloginapp.com路径并打开app.properies文件
  2. 添加此语句: multiloginapp.port=[PORT_NUMBER]
  3. 保存 app.properties 文件

定义好后,您就可以通过这个端口连到Multiogin应用了。

如何使用

步骤 1

请确保您已经安装Node.js和npm包管理器(node package manager)。您可以从Node.js的官网下载Node.js和npm包(最新版的Node.js已经自动包括了npm包)。另外,您也可以用yarn做为Node.js包新管理工具。

您可以在终端检查您的Node.js和npm版本,运行代码为:

nodejs -v || node -v && npm -v
步骤 2

在当前目录下创建一个新的npm项目。

npm init -y
这个指令会新建package.json文件,-y参数帮助您跳过新建文件过程中的问卷部分,并创新有默认设置的项目。
步骤 3

安装Puppeteer并在项目目录中安装npm。

npm install puppeteer@1.3.0 --save && npm install request --save
请注意,每个Chromium版本都有与之对应的Puppeteer。从Multilogin 3.0.1起,Mimic浏览器使用Chromium 67,与之对应的只有Puppeteer 1.3.0版本。您可以从我们的版本发行日志中追踪Mimic浏览器驱动的更新信息。您可以从Puppeteer的官方文档中查看与各版本Chromium相对应的Puppeteer版本。
步骤 4

Create .js file with your automation code. Please use the following code example for a reference:

创建您的自动化.js文件。您可以参考以下代码示范:

const puppeteer = require('puppeteer');
const http = require('http');


async function startProfile(){
let profileId = 'xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx';
let mlaPort = 35000;

/*Send GET request to start the browser profile by profileId.
Returns web socket as response which should be passed to puppeteer.connect*/

http.get(`http://127.0.0.1:${mlaPort}/api/v1/profile/start?automation=true&puppeteer=true&profileId=${profileId}`, (resp) => {
let data = '';
let ws = '';

//Receive response data by chunks
resp.on('data', (chunk) => {
data += chunk;
});

/*The whole response data has been received. Handling JSON Parse errors,
verifying if ws is an object and contains the 'value' parameter.*/

resp.on('end', () => {
let ws;
try {
ws = JSON.parse(data);
} catch(err) {
console.log(err);
}
if (typeof ws === 'object' && ws.hasOwnProperty('value')) {
console.log(`Browser websocket endpoint: ${ws.value}`);
run(ws.value);
}
});

}).on("error", (err) => {
console.log(err.message);
});
}

async function run(ws) {
try{
//Connecting Puppeteer with Mimic instance and performing simple automation.
const browser = await puppeteer.connect({browserWSEndpoint: ws});
const page = await browser.newPage();
await page.goto('https://multilogin.com');
await page.screenshot({ path: `/home/${process.env.USER}/Desktop/multiloginScreenshot.png` });
await browser.close();
} catch(err){
console.log(err.message);
}
}

startProfile();
步骤 5

在您的设备终端运行.js文件,以执行您的自动化操作脚本。

nodejs example.js


How did we do?