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

yizhihongxing

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日

相关文章

  • 使用bootstrap validator的remote验证代码经验分享(推荐)

    这里是使用Bootstrap Validator的Remote验证代码经验分享攻略。 什么是Remote验证 Bootstrap Validator提供了Remote验证来检查输入是否已经存在于数据库中,而不是使用静态的规则来验证。 在其最基本的形式中,Remote验证使用AJAX请求来检查输入是否已经存在于数据库中,并根据结果来反馈验证的状态。 开始使用R…

    JavaScript 2023年6月10日
    00
  • jQuery中JSONP的两种实现方式详解

    jQuery中JSONP的两种实现方式详解 什么是JSONP JSONP是一种跨域请求的方法。跨域请求是指浏览器不能直接访问其他源的数据,而在使用 JSONP 进行跨域请求时,浏览器会将请求发送到同源的一个脚本文件中,脚本文件返回一个回调函数的调用和数据,浏览器在执行回调函数时获取数据。 JSONP的工作原理如下: 请求方动态生成一个标签,其中src属性指向…

    JavaScript 2023年5月27日
    00
  • 寒冬求职之你必须要懂的Web安全

    寒冬求职之你必须要懂的Web安全 在进行Web开发工作时,我们必须要重视Web安全问题,因为没有安全保障的系统极易受到黑客攻击,泄露用户信息和系统的机密数据。在寒冬求职过程中,Web安全知识的掌握也是很重要的,今天我将为大家分享一下Web安全的攻略。 了解常见的攻击方式 SQL注入攻击 SQL注入攻击是指攻击者在Web应用程序使用的SQL语句中注入恶意的SQ…

    JavaScript 2023年6月11日
    00
  • js 立即调用的函数表达式如何写

    JS 立即调用的函数表达式(Immediately Invoked Function Expression,IIFE)是一种常见的编程模式,用于在定义时立即执行一个函数,并将其作用域保持在该函数内部,以避免变量污染全局作用域。下面是如何编写JS立即调用的函数表达式的完整攻略: 基本语法 (function() { // 函数体 })(); 该语法使用了最基本…

    JavaScript 2023年5月27日
    00
  • JS 做一个简单的 Parser

    前言 前些天偶然看到以前写的一份代码,注意有一段尘封的代码,被我遗忘了。这段代码是一个简单的解析器,当时是为了解析日志而做的。最初解析日志时,我只是简单的正则加上分割,写着写着,我想,能不能用一个简单的方案做个解析器,这样可以解析多种日志。于是就有了这段代码,后来日志解析完了,没有解析其它日志就给忘了。再次看到这段代码,用非常简单易读的代码就实现了一个解析器…

    JavaScript 2023年4月18日
    00
  • javascript中的delete使用详解

    当我们在JavaScript中使用delete关键字时,它有两种用途: 删除对象的属性 删除对象本身 下面,我们将逐一介绍这两种情况。 删除属性 在JavaScript中,我们可以删除一个对象的属性。我们可以使用delete关键字来删除属性。如下: let obj = { foo: true, bar: false }; delete obj.bar; co…

    JavaScript 2023年5月28日
    00
  • JS前端加密算法示例

    下面是JS前端加密算法示例的完整攻略。 什么是前端加密算法? 前端加密算法指的是在客户端对数据进行加密,使得数据在传输过程中更加安全,保障数据的完整性和机密性。前端加密算法通常被应用于用户登录验证和数据传输等方面。 常用的前端加密算法 1. Base64加密 Base64是一种可逆的加密算法,可以将任意类型的数据转换成可读的字符串。常被用于在网页上传输图片、…

    JavaScript 2023年5月19日
    00
  • 项目中使用TypeScript的TodoList实例详解

    针对“项目中使用TypeScript的TodoList实例详解”的完整攻略,我提供以下内容: 1. 什么是TypeScript? TypeScript 是一种由微软开发的开源编程语言。它是 JavaScript 的一个超集,包含了所有 JavaScript 代码的语法,但并不完全使用 JavaScript 来实现,相比 JavaScript 更加严格和类型化…

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