小呆呆喵喵喵 发表于 2023-4-26 20:40

nodjs某宝登录

本帖最后由 小呆呆喵喵喵 于 2023-4-27 09:35 编辑

记录一下
const puppeteer = require('puppeteer-core');
const fs = require('fs');

function log_in(zh, pwd) {

    (async function () {
      const browser = await puppeteer.launch({
            executablePath: 'C:/Program Files/Google/Chrome/Application/chrome.exe',// 设置浏览器路径
            headless: false,// 是否启用无头
            devtools: false, //调试启动
            ignoreDefaultArgs: ["--enable-automation"], //去掉webDriver标识

            args: ['--disable-features=site-per-process'], //抓取 iframe
            defaultViewport: {width: 0, height: 0}, // 页面大小

      });
      const page = await browser.newPage()
      await page.evaluateOnNewDocument('const newProto = navigator.__proto__;delete newProto.webdriver;navigator.__proto__ = newProto;');
      await page.goto('')
      const text = await page.waitForXPath('//*[@id="fm-login-id"]')
      console.log(text)
      await text.type(zh); // 输入数据

      await (await page.waitForXPath('//*[@id="fm-login-password"]')).type(pwd
      );
      await new Promise(function (r) {
            setTimeout(r, 5000)
      });
      const iframeHandle = await page.$('#baxia-dialog-content')
      if (iframeHandle) {
            console.log('出现滑块');

            const frame = await iframeHandle.contentFrame(); // 切换iframe
            const handles = await frame.waitForSelector('#nc_1_n1z');

            const kd = await (await frame.waitForSelector('#nc_1__scale_text > span')).boundingBox();// 获取坐标

            const handle = await handles.boundingBox();
            console.log(handle);
            console.log(kd);

            await page.mouse.move(
                handle.x + handle.width / 2,
                handle.y + handle.height / 2
            );
            await page.mouse.down();
            await page.mouse.move(handle.x + handle.width / 2 + kd.width - handle.width,
                handle.y + handle.height / 2, {steps: 50});
            await page.mouse.up();
      } else {
            console.log('没有滑块');
      }
      await new Promise(function (r) {
            setTimeout(r, 3000)
      });

      await (await page.waitForXPath('//*[@id="login-form"]/div/button')).click();

      await new Promise(function (r) {
            setTimeout(r, 3000)
      });
      if (await page.$('#login-form > div.fm-btn > button')) {
            const error = await page.$('#login-error > div')
            if (error) {
                const prop = await error.getProperty('innerText');
                const text_ = await prop.jsonValue(); // 获取组键文字
                console.log(text_)
            } else {
                console.log('登录异常')
            }
      } else {
            console.log('登录成功')
            fs.writeFile('cookies.json', JSON.stringify(await page.cookies()), function () {
                console.log('cookie写入本地完成')
            })
      }

      await page.close();
      await browser.close();

    })();
}

log_in('11111', '22222')

aa2023 发表于 2023-4-26 23:43

请问这个是这么使用的

d199212 发表于 2023-4-27 08:06

除了使用puppeteer还有其他方法吗

皮卡丘2000 发表于 2023-4-27 08:47

不会用,能触电教程嘛{:301_998:}

小呆呆喵喵喵 发表于 2023-4-27 09:33

aa2023 发表于 2023-4-26 23:43
请问这个是这么使用的

下载nodejs npm i一下账号密码换自己的 cookie会保存到本地

小呆呆喵喵喵 发表于 2023-4-27 09:36

19行 填登录链接

aa2023 发表于 2023-5-2 22:04

小呆呆喵喵喵 发表于 2023-4-27 09:36
19行 填登录链接

谢谢大侠{:1_921:}

Puhong 发表于 2023-5-4 11:53

有啥用吗这个

910638894 发表于 2023-5-6 06:43

小呆呆喵喵喵 发表于 2023-4-27 09:36
19行 填登录链接

哥 请问下 我想做一个淘宝抢卷的软件 该往哪方面学习呢

eric1218 发表于 2023-5-6 09:05

学习下, 感谢
页: [1] 2
查看完整版本: nodjs某宝登录