网络技术知识
红米手机抢购的js代码
针对红米手机抢购的 JS 代码攻略,我们需要先了解一下抢购的基本原理。
在红米手机抢购页面中,通过 JavaScript 设置定时器定时获取服务器时间,当服务器时间和系统时间一致时,弹出抢购按钮,此时用户点击按钮进行下一步操作。因此,我们需要找到获取服务器时间的 JS 代码,并通过模拟调用该代码来提前获取到服务器时间从而成功抢购。
以下是详细步骤:
步骤一:获取JS代码
在浏览器中打开红米手机的商品页面,按下 F12 键打开开发者工具,将鼠标悬浮在网络监视器上,然后刷新页面,选择“JS”选项卡,找到相应的 JS 文件,将文件内容复制到本地编辑器中,以备后续模拟调用使用。
步骤二:获取服务器时间
在抢购页面中,我们需要获取到服务器时间,以便确定何时触发抢购按钮的 JS 代码。具体获取服务器时间的 JS 代码如下:
function $Get(url) {
var xmlhttp;
if (window.XMLHttpRequest) {
xmlhttp = new XMLHttpRequest();
} else {
xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.open("GET", url, false);
xmlhttp.send();
return xmlhttp.responseText;
}
function getTime() {
var url = "https://api.m.jd.com/client.action?functionId=systemConfig&clientVersion=7.0.0&build=54338&client=android&d_brand=Xiaomi&d_model=hongmi%20note%204x&osVersion=5.1.1&screen=1280*720&partner=xiaomi001&deviceId=9e85bb208277acb1&sdkVersion=22&lang=zh_CN&area=2_2820_2821_0&st=1627945342584&sign=14d0c2af913662f9f87da96789ffeed7&sv=111&body=%7B%7D";
var json = JSON.parse($Get(url));
return json.time;
}
我们可以再新建一个 HTML 文件,将上述代码嵌入到 head 标签中。这里面的 getTime 函数返回的就是服务器时间,我们可以在 Console 中调用该函数并打印值。
示例:
console.log(getTime());
步骤三:模拟调用JS代码
完成第一步和第二步后,我们已经拿到了获取服务器时间的代码和服务器时间,接下来我们将模拟调用 JS 代码,以控制抢购按钮的显示时间。
示例1:
var start = function() {
var end = "2021-08-20 18:00:00";//设定抢购结束时间
var left = (new Date(end)) - (new Date(getTime())); //计算剩余时间
if (left <= 0) { //如果剩余时间小于等于0,就点击下一步操作按钮
document.querySelector(".next-btn").click(); // 下一步操作按钮的class属性视情况而定,此处仅做示例
} else {
console.log(left / 1000);
setTimeout(start, 1000);
}
}
start();
示例2:
function timeFunc() {
var end = "2021-08-20 18:00:00";//设定抢购结束时间
var left = (new Date(end)) - (new Date(getTime()));//计算剩余时间
if (left <= 0) {// 如果剩余时间小于等于0,就点击下一步操作按钮
document.querySelector('.btn-integral').click(); // 抢购按钮的class属性视情况而定,此处仅做示例
} else {
console.log(left / 1000);
setTimeout(timeFunc, 1000);
}
}
timeFunc();
以上两个示例都是通过模拟调用获取服务器时间的 JS 代码,计算剩余时间,当剩余时间为0时触发按钮点击事件来实现抢购的过程。当然其中很多常量和变量都需要根据具体页面来进行调整和修改。
希望这篇攻略能够帮助您学会如何使用 JS 技术攻克红米手机抢购,祝好运!