抖音视频播放量刷取-按键模式定制
// ==UserScript==
// @name 抖音视频播放量刷取-按键模式定制
// @namespace http://tampermonkey.net/
// @version 1.1
// @description 抖音视频播放量刷取,支持按键模式自定义,并显示执行次数-有封号风险,请谨慎使用,该脚本只用于学习用途,请勿用于违法行为。
// @author Sweek
// @license GPLv3
// @match *://www.douyin.com/*
// @grant none
// ==/UserScript==
// 模拟按下键盘的函数
function pressKey(keyCode) {
const event = new KeyboardEvent('keydown', { keyCode });
document.dispatchEvent(event);
}
// 定义“上”和“下”键的 keyCode
const KEY_UP = 38; // 上箭头键的 keyCode
const KEY_DOWN = 40; // 下箭头键的 keyCode
// 生成一个 1 到 5 秒之间的随机间隔(单位:毫秒)
function getRandomInterval() {
return Math.floor(Math.random() * 4000) + 1000; // 返回一个 1000 到 5000 毫秒之间的随机数
}
// 按键交替执行的函数,按模式执行(例如:4次下键、4次上键等)
function pressKeysByPattern(pattern, timesPerAction, repeatCount, updateProgress) {
return new Promise((resolve) => {
let count = 0;
let patternIndex = 0;
let repeatIndex = 0; // 控制模式循环次数
// 循环执行按键操作
function pressNextKey() {
if (repeatIndex < repeatCount) { // 如果还需要重复
if (count < pattern.length * timesPerAction) {
// 根据模式按键
const currentKey = pattern[patternIndex];
const keyToPress = (currentKey === 'down') ? KEY_DOWN : KEY_UP;
pressKey(keyToPress);
count++;
// 每按一次键后等待随机间隔时间,然后继续执行
const interval = getRandomInterval();
// 每按完一轮后检查是否切换到下一个模式
if (count % timesPerAction === 0) {
patternIndex++;
if (patternIndex >= pattern.length) {
patternIndex = 0; // 重置模式索引,循环执行
}
}
setTimeout(pressNextKey, interval);
} else {
// 完成一次模式后,重置计数器,准备开始下一轮
count = 0;
repeatIndex++; // 增加重复次数
updateProgress(repeatIndex, repeatCount); // 更新显示的循环进度
setTimeout(pressNextKey, getRandomInterval()); // 等待一段时间后开始下一轮
}
} else {
resolve(); // 完成所有任务
}
}
pressNextKey(); // 开始按键操作
});
}
// 在页面右上角添加一个显示进度的框
function createProgressBox() {
const box = document.createElement('div');
box.style.position = 'fixed';
box.style.top = '10px';
box.style.right = '10px';
box.style.backgroundColor = 'rgba(0, 0, 0, 0.7)';
box.style.color = '#fff';
box.style.padding = '10px';
box.style.borderRadius = '5px';
box.style.fontSize = '16px';
box.style.zIndex = '9999';
const title = document.createElement('div');
title.textContent = '执行进度:';
box.appendChild(title);
const countDisplay = document.createElement('div');
countDisplay.id = 'executionCount';
countDisplay.textContent = '已执行: 0 / 0'; // 默认初始值为 0 / 0
box.appendChild(countDisplay);
document.body.appendChild(box);
}
// 更新显示的执行进度
function updateProgressDisplay(repeatIndex, repeatCount) {
const countDisplay = document.getElementById('executionCount');
if (countDisplay) {
countDisplay.textContent = `已执行: ${repeatIndex} / ${repeatCount}`;
}
}
// 执行脚本,传入需要的按键模式和每个动作的次数
(async function () {
const repeatCount = 10; // 设置总的循环次数
createProgressBox(); // 创建进度显示框
// 在开始之前,初始化进度框的显示
updateProgressDisplay(0, repeatCount); // 初始化为 0 / repeatCount
const pattern = ['down', 'up']; // 按下‘下’键4次,再按上‘上’键4次
const timesPerAction = 4; // 每个动作的次数:4次下键或上键
// 执行多次按键循环
await pressKeysByPattern(pattern, timesPerAction, repeatCount, updateProgressDisplay);
})();