JS实现网页抢购功能(触发,终止脚本)

JS实现网页抢购功能可以基于浏览器的自动化工具,如selenium或者puppeteer,完成批量请求或模拟用户行为。在实现过程中,需要明确以下几个步骤:

  1. 登录并保持会话:在许多电商网站中,进行抢购之前首先需要登录账户。可以通过模拟登录的方式,实现自动输入账号密码并完成登录。在登录完成之后,需要保持会话以便于提交订单等后续的操作。

  2. 找到目标商品页面:一般情况下电商网站的商品详情页都包含了抢购按钮或者其他形式的购买入口。需要通过JavaScript或者其他技术,找到目标商品页面并定位到相应的购买入口。

  3. 触发抢购脚本:在找到购买入口之后,可以通过JavaScript模拟用户操作,比如点击购买按钮、填写收货地址等。同时,需要在特定的时间点触发脚本运行,比如抢购时间点,这可以通过定时器来实现。

  4. 终止脚本运行:在抢购完成或者抢购失败后,需要停止脚本的运行以免造成过多的请求,或者重复下单等问题。可以通过手动停止脚本、时间限制或者请求次数限制等方式来终止脚本运行。

下面是两个示例说明:

示例一:京东抢购

  1. 登录并保持会话:首先通过输入账号密码完成京东的登录,并且开启cookies模式,保持用户会话状态。
await page.goto('https://passport.jd.com/new/login.aspx');
await page.type('#loginname', 'username');
await page.type('#nloginpwd', 'password');
await Promise.all([
    waitUntilLoaded(page, '#JD_LOGIN'),
    page.click('#loginsubmit')
]);
  1. 找到目标商品页面:在京东商品详情页中,抢购按钮的id属性值为InitCartUrl。可以通过以下 JavaScript 代码定位到购买入口,获取 抢购 按钮对象,并模拟用户点击。
const btn = await page.$("#InitCartUrl");
await btn.click();
  1. 触发抢购脚本:在抢购时间点,可以通过定时器来触发脚本运行:
setTimeout(async () => {
    await page.waitForSelector('.checkout-submit', {timeout:30000});
    await page.click('.checkout-submit');
}, countdown(new Date('2021-11-11 00:00:00')));
  1. 终止脚本运行:在抢购完成或者抢购失败后,需要停止脚本的运行:
const timer = setTimeout(stop, 20000);

function stop() {
    console.log('停止任务');
    process.exit(0);
}

// 在完成购买后,手动停止脚本
if (success) {
    clearTimeout(timer);
}

示例二:淘宝抢购

  1. 登录并保持会话:首先通过输入账号密码完成淘宝的登录,并且开启cookies模式,保持用户会话状态。
await page.goto('https://login.taobao.com/');
await page.type('#fm-login-id', 'username');
await page.type('#fm-login-password', 'password');
await Promise.all([
    waitUntilLoaded(page, '#J_SubmitStatic'),
    page.click('#J_SubmitStatic'),
]);
  1. 找到目标商品页面:在淘宝商品详情页,抢购按钮的class属性值为tb-action。可以通过以下 JavaScript 代码定位到购买入口,获取 抢购 按钮对象,并模拟用户点击。
await page.goto('https://item.taobao.com/item.htm?id=xxxxxxxxxxx');
const btn = await page.$('.tb-action');
await btn.click();
  1. 触发抢购脚本:在抢购时间点,可以通过定时器来触发脚本运行:
setTimeout(async () => {
    await page.waitForSelector('.tb-btn-buy', {timeout: 30000});
    await page.click('.tb-btn-buy');
    await page.waitForSelector('.icon-btn.btn-go', {timeout: 20000});
    await page.click('.icon-btn.btn-go');
}, countdown(new Date('2021-11-11 00:00:00')));
  1. 终止脚本运行:在抢购完成或者抢购失败后,需要停止脚本的运行:
const timer = setTimeout(stop, 20000);

function stop() {
    console.log('停止任务');
    process.exit(0);
}

// 在完成购买后,手动停止脚本
if (success) {
    clearTimeout(timer);
}

以上是两个示例,但是需要注意的是,自动化抢购的方式可能不符合部分电商平台的使用条款,也有可能导致订单被取消或其他账户异常等问题。因此,建议谨慎使用此方式,并遵守相关平台条款。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:JS实现网页抢购功能(触发,终止脚本) - Python技术站

(0)
上一篇 2023年6月10日
下一篇 2023年6月10日

相关文章

  • VuePress使用Algolia实现全文搜索

    下面我将为你详细讲解“VuePress使用Algolia实现全文搜索”的完整攻略。 什么是VuePress? VuePress是一款基于Vue.js的静态网站生成器,它基于Markdown文件进行内容编写,具有文档编写、主题定制、SEO优化、全文搜索等功能,为个人博客或技术文档提供了一种快速搭建的方案。 什么是Algolia? Algolia是一款强大的全文…

    JavaScript 2023年6月11日
    00
  • d3.js入门教程之数据绑定详解

    d3.js入门教程之数据绑定详解 什么是d3.js? d3.js全称Data-Driven Documents,是一个非常强大的数据可视化库。使用d3.js可以将数据转化为各种图表、动画和交互式图形。 为什么需要数据绑定? 数据绑定是在d3.js中非常重要的概念,因为它是将数据和元素结合在一起的基础。在d3.js中,元素是表示数据的最终呈现形式。因此,了解如…

    JavaScript 2023年6月10日
    00
  • js数组去重的5种算法实现

    JS数组去重的5种算法实现 1. 利用Set数据结构 使用Set数据结构是JS中去重最简单的方法,它可以快速对数组进行去重,这种方式不需要对原数组进行操作,不会改变原数组。 let arr = [1, 1, 2, 3, 2, 4, 5, 5]; let uniqueArr = […new Set(arr)]; console.log(uniqueArr)…

    JavaScript 2023年5月27日
    00
  • js/jquery解析json和数组格式的方法详解

    JS/jQuery解析JSON和数组格式的方法详解 什么是JSON JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式,它是基于JavaScript的一个子集,可以被任何语言读取和使用。JSON格式有以下特点: 简洁易读:JSON格式中的数据是纯文本的键值对,可读性较高 结构清晰:数据以键值对(key-value)的…

    JavaScript 2023年5月27日
    00
  • 图片的左右移动,js动画效果实现代码

    图片左右移动是一种常见的动画特效,通常用于网站的广告展示或轮播图中。实现这种特效需要使用JavaScript的动画效果。 下面是通过步骤来讲解如何实现图片的左右移动。 步骤1:创建HTML文件和CSS样式 首先,我们需要创建一个HTML文件并在其中创建一个图片元素。然后,我们需要使用CSS样式表来定义图片的样式,包括宽度和高度,以及它的左右位置等属性。 下面…

    JavaScript 2023年6月11日
    00
  • Javascript & DHTML 实例编程(教程)(四)初级实例篇2—动画

    针对Javascript & DHTML 实例编程(教程)(四)初级实例篇2—动画,以下是完整的攻略。 1. 简介 动画是网页设计中常用的元素之一,能使页面变得更加生动有趣。在Javascript & DHTML 实例编程(教程)(四)初级实例篇2—动画中,让我们一起学习如何使用Javascript和DHTML来实现页面动画效果。 2. 代码…

    JavaScript 2023年6月10日
    00
  • 从原生JavaScript到React深入理解

    从原生JavaScript到React深入理解攻略 React是现在前端开发中非常流行的一种框架,很多前端工程师都想学习这个框架。但是,如果你没有掌握原生JavaScript的基础,就很难对React有深入理解。因此,我们需要先从原生JavaScript入手,然后逐渐深入学习React。 1. 学习原生JavaScript 1.1 理解DOM DOM是Doc…

    JavaScript 2023年6月10日
    00
  • MvcPager分页控件 适用于Bootstrap

    MvcPager分页控件 适用于Bootstrap MvcPager是一款流行的ASP.NET MVC分页控件,它可以帮助我们快速为我们的Web应用添加分页功能。除了基本的分页功能以外,MvcPager还支持很多高级功能,比如自定义样式、 AJAX异步分页、搜索等等。本篇文章将会讲解如何使用 MvcPager 分页控件,并且针对于 Bootstrap 框架进…

    JavaScript 2023年6月11日
    00
合作推广
合作推广
分享本页
返回顶部