const puppeteer = require('puppeteer');
function sleep(ms) {
return new Promise(resolve => setTimeout(resolve, ms));
}
(async () => {
//const browser = await puppeteer.launch();
const browser = await puppeteer.launch({
headless: true //设置成false 会触发浏览器打开,完整的看到机器人工作的过程。
});
global.page = await browser.newPage();
global.page.setDefaultNavigationTimeout(9980000);
await global.page.goto('https://ads.tiktok.com/i18n/contact');
await global.page.setViewport({
width: 1280,
height: 2200
});
await sleep(1000);
await global.page.screenshot({ path: '1.png', fullpage: true });
// await browser.close();
console.log("打开首页");
let searchInput = await global.page.$(".vi-input__inner");
let selects = await global.page.$$("ul.vi-scrollbar__view > li:last-child");
let searchInputs = await global.page.$$(".vi-input__inner");
for (const i in searchInputs) {
//console.log("2", item);
console.log("开始输入");
console.log(typeof i);
await searchInputs[i].focus(); //定位到搜索框
switch (parseInt(i)) {
case 0:
case 1:
case 3:
case 7: {
console.log(i);
await global.page.keyboard.type(i);
} break;
case 2: {
console.log(i);
await global.page.keyboard.type('405659098@qq.com');
} break;
case 4: {
console.log(i);
// await global.page.keyboard.type('Antarctica');
// await global.page.waitFor('.vi-icon-arrow-up');//等待下拉框出现
// await global.page.click('.vi-icon-arrow-up');//展开下拉框
await searchInputs[i].click();
await global.page.waitFor(2000);
// await global.page.waitFor('ul.vi-scrollbar__view > li:nth-child(2)');//等待选项出现
// await global.page.waitFor(2000);
// await global.page.click('ul.vi-scrollbar__view > li:nth-child(2)');//点击选项桃子
await selects[0].click()
} break;
case 5: {
console.log(i);
// await global.page.keyboard.type('Antarctica');
// await global.page.waitFor('.vi-icon-arrow-up');//等待下拉框出现
// await global.page.click('.vi-icon-arrow-up');//展开下拉框
await searchInputs[i].click();
await global.page.waitFor(2000);
// await global.page.waitFor('ul.vi-scrollbar__view > li:nth-child(2)');//等待选项出现
// await global.page.waitFor(2000);
// await global.page.click('ul.vi-scrollbar__view > li:nth-child(2)');//点击选项桃子
await selects[1].click()
} break;
case 6: {
console.log(i);
// await global.page.keyboard.type('Antarctica');
// await global.page.waitFor('.vi-icon-arrow-up');//等待下拉框出现
// await global.page.click('.vi-icon-arrow-up');//展开下拉框
await searchInputs[i].click();
await global.page.waitFor(2000);
// await global.page.waitFor('ul.vi-scrollbar__view > li:nth-child(2)');//等待选项出现
// await global.page.waitFor(2000);
// await global.page.click('ul.vi-scrollbar__view > li:nth-child(2)');//点击选项桃子
await selects[2].click()
} break;
}
await global.page.screenshot({ path: i + '.png' });
}
//引入
var fs = require('fs');
var readline = require('readline');
const { exit } = require('process');
//调用方法
global.path = './mail.txt';
global.mail = []
// read_file(path, function (data) {
// global.mail = data;
// const searchBtn = await global.page.$(".home-collection-button");
// await searchBtn.click();
// await global.page.screenshot({ path: 'submit1.png' });
// await global.page.waitFor(2000);
// await global.page.screenshot({ path: 'submit2.png' });
// await browser.close();
// console.log(global.mail)
// });
// console.log(global.mail)
let demo = async function (code) {
let data = await readfileAsync(path);
console.log(data);
console.log(code);
global.mail = data;
const searchBtn = await global.page.$(".home-collection-button");
await searchBtn.click();
await global.page.screenshot({ path: 'submit1.png' });
await global.page.waitFor(2000);
await global.page.screenshot({ path: 'submit2.png' });
await browser.close();
console.log(data);
}
function readfileAsync(path) {
return new Promise((resolve, reject) => {
//定义读取方法
read_file(path, function (data) {
resolve(data)
});
})
}
function read_file(path, callback) {
var fRead = fs.createReadStream(path);
var objReadline = readline.createInterface({
input: fRead
});
var arr = new Array();
objReadline.on('line', function (line) {
console.log(line)
arr.push(line);
});
objReadline.on('close', function () {
callback(arr);
});
}
var Imap = require('imap')
var MailParser = require("mailparser").MailParser
var fs = require("fs")
// 引入cheerio模块
const cheerio = require('cheerio')
global.code = ''
global.user = '405659098@qq.com'
var imap = new Imap({
user: global.user, //你的邮箱账号
password: 'shjiketfxrsocabh', //你的邮箱密码
host: 'imap.qq.com', //邮箱服务器的主机地址
port: 993, //邮箱服务器的端口地址
tls: true, //使用安全传输协议
connTimeout: 60000,
tlsOptions: { rejectUnauthorized: false } //禁用对证书有效性的检查
});
function openInbox(cb) {
imap.openBox('INBOX', true, cb);
}
imap.once('ready', function () {
openInbox(function (err, box) {
console.log("打开邮箱")
if (err) throw err;
imap.search(['UNSEEN', ['SINCE', 'May 20, 2018']], function (err, results) { //搜寻2017-05-20以后未读的邮件
if (err) throw err;
var f = imap.fetch(results, { bodies: '' }); //抓取邮件(默认情况下邮件服务器的邮件是未读状态)
f.on('message', function (msg, seqno) {
var mailparser = new MailParser();
msg.on('body', function (stream, info) {
stream.pipe(mailparser); //将为解析的数据流pipe到mailparser
//邮件头内容
// mailparser.on("headers", function(headers) {
// if (headers.get('subject') === 'TikTok for Business Verification Code') {
// console.log("邮件头信息>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>");
// console.log("邮件主题: " + headers.get('subject'));
// console.log("发件人: " + headers.get('from').text);
// // console.log("收件人: " + headers.get('to').text);
// }
// });
// console.log(mailparserSubject)
// 邮件内容
mailparser.on("data", function (data) {
if (data.type === 'text') { //邮件正文
console.log("邮件内容信息>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>");
//console.log("邮件内容: " + data.html);
// 加载HTML字符串
const $ = cheerio.load(data.html)
if ($('title') && $('title').text() && $('title').text() === 'TikTok Ads') {
// console.log($.html())
// console.log($('table.templateContainer').html())
// console.log($('table.templateContainer tbody').html())
let code = $('table.templateContainer tbody').find('tr').eq(6).text()
code = code.replace(/\ +/g, "");
code = code.replace(/[\r\n]/g, "");
global.code = code
console.log(code);
// $('table.templateContainer tbody').find('tr').each(function(i, elem) {
// console.log(i)
// //console.log(elem)
// })
}
}
// if (data.type === 'attachment') { //附件
// console.log("邮件附件信息>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>");
// console.log("附件名称:" + data.filename); //打印附件的名称
// data.content.pipe(fs.createWriteStream(data.filename)); //保存附件到当前目录下
// data.release();
// }
});
});
msg.once('end', function () {
console.log(seqno + '完成');
});
});
f.once('error', function (err) {
console.log('抓取出现错误: ' + err);
});
f.once('end', function () {
console.log('所有邮件抓取完成!');
imap.end();
});
});
});
});
imap.once('error', function (err) {
console.log('连接邮箱', err);
demo('123123');
});
imap.once('end', function () {
var fs = require("fs");
// fs.writeFile('./mail.txt', global.user + ':' + global.code + "\r\n", { flag: 'a', encoding: 'utf-8', mode: '0666' }, function (err) {
// if (err) {
// console.log("文件写入失败")
// } else {
// console.log("文件写入成功");
// }
// })
console.log('关闭邮箱', global.user, global.code);
demo('123123');
});
imap.connect();
})();
临时测试
最新推荐文章于 2022-03-01 17:24:44 发布