nodejs| 淘宝秒杀脚本

348 阅读1分钟

接Python版本淘宝秒杀脚本,用nodejs再次写了一个简单的脚本,思路都是一样的。

思路

  • 打开浏览器
  • 打开指定的网址
  • 扫码登录或者输入密码登录,这里是需要人工扫码
  • 跳转到购物车页面
  • 点击全选
  • 点击结算
  • 点击提交订单

代码

const dayjs = require("dayjs");
const { By } = require("selenium-webdriver");
const selenium = require("selenium-webdriver");

const driver = new selenium.Builder().forBrowser("chrome").build();

// 最大化浏览器
driver.manage().window().maximize();

driver.get("https://www.taobao.com");

// 类似于python中time的sleep函数
const sleep = (time) => {
  return new Promise((resolve) => {
    setTimeout(resolve, time * 1000);
  });
};

// 登录
const login = async () => {
  const loginText = driver.findElement(By.linkText("亲,请登录"));
  if (loginText) loginText.click();
  console.log("请在20秒内完成扫码");
  await sleep(20);
  driver.get("https://cart.taobao.com/cart.htm");
  await sleep(3);
  //   点击全选按钮
  if (driver.findElement(By.id("J_SelectAll1")))
    driver.findElement(By.id("J_SelectAll1")).click();
  console.log("登录成功:", dayjs(new Date()).format("YYYY-MM-DD HH:mm:ss"));
  await sleep(0.4);
  buy("2023-02-25 22:22:00");
};

// 秒杀
const buy = async (buyTime) => {
  while (true) {
    const now = dayjs(new Date()).format("YYYY-MM-DD HH:mm:ss");
    if (now === buyTime) {
      if (driver.findElement({ id: "J_Go" }))
        driver.findElement({ id: "J_Go" }).click();
      await sleep(0.4);
      submit();
      break;
    }
  }
};

// 提交订单
const submit = async () => {
  if (driver.findElement(By.linkText("提交订单")))
    driver.findElement(By.linkText("提交订单")).click();
  console.log("抢购时间:", dayjs(new Date()).format("YYYY-MM-DD HH:mm:ss"));
  await sleep(1000);
};

login();

结论

  • 嘿嘿,没想到node也有这个自动化包,完全实现了这个功能

传送门:Python版本的秒杀脚本

本文由mdnice多平台发布