Created
January 15, 2022 13:15
-
-
Save melianmiko/4a487eb3506336cde98f8aec563db728 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// ==UserScript== | |
// @name Наебатор для webinar.ru | |
// @namespace http://melianmiko.ru/ | |
// @version 0.1 | |
// @description С этим скриптом можно ливнуть с лекции и никто это не спалит | |
// @author melianmiko | |
// @match https://events.webinar.ru/ | |
// @icon https://melianmiko.ru/favicon.ico | |
// @grant none | |
// ==/UserScript== | |
(function() { | |
// -------------------- НАСТРОЙКИ -------------------- | |
// Кло-во лайков, начиная с которого мы тоже начнём | |
// их ставить. Лучше не ставить значение меньше 10-ти | |
const AUTO_LIKE_COUNT = 20; | |
// --------------------------------------------------- | |
// Константы, не менять | |
const INVOKEMENT_BODY = "isFocused=true&isSoundEnabled=true&isVideoEnabled=true"; | |
// Переменные для всякого говна | |
let reactionCountBlock = null, | |
reactionButton = null, | |
infoViewBlock = null, | |
uiScanIntervalId = null; | |
// Обновляет экран и гадит в консоль | |
function notice(message) { | |
if(infoViewBlock) { | |
infoViewBlock.innerHTML = message; | |
} | |
console.info(...arguments); | |
} | |
// Создаём ссылку на оригинальную функцию fetch | |
// так как мы будем её подменять | |
window.__fetch = window.fetch; | |
// ...и собственно подменяем | |
window.fetch = function() { | |
if(arguments.length < 2) | |
return window.__fetch(...arguments); | |
if(arguments[1].method && arguments[1].method.toLowerCase() !== "post") | |
return window.__fetch(...arguments); | |
// Ковыряем запрос на обновление статуса вовлечённости | |
if(arguments[0].indexOf("setUserInvolvementStatus") > 0) { | |
// Не важно что было в теле запроса, теперь там будет | |
// написано что всё заебись | |
notice("Статус активности поменён", "было:", | |
arguments[1].body, "стало: ", INVOKEMENT_BODY); | |
arguments[1].body = INVOKEMENT_BODY; | |
} | |
// Все остальные запросы оставляем без нашего внимания | |
return window.__fetch(...arguments); | |
}; | |
// Функция для сканирования страницы. | |
// Она найдёт кнопку и счётчик лайков | |
const uiScan = function() { | |
const divs = document.querySelectorAll("div"); | |
for(let i in divs) { | |
if(!divs[i]) continue; | |
if(!divs[i].className) continue; | |
if(divs[i].className.indexOf("Reaction__reactionCount") > -1) { | |
reactionCountBlock = divs[i]; | |
console.info("нашли счётчик лайков (реакций)", divs[i]); | |
} else if(divs[i].className.indexOf("Reaction__rippleContainer") > -1) { | |
reactionButton = divs[i]; | |
console.info("нашли кнопку для отправки лайка", divs[i]); | |
} | |
} | |
if(document.getElementById("logoContainer")) { | |
const logoRoot = document.getElementById("logoContainer"); | |
infoViewBlock = logoRoot.querySelector("span"); | |
console.info("нашли экран", infoViewBlock); | |
} | |
// Если всё нашли, удаляем таймер. | |
if(reactionButton && reactionCountBlock && infoViewBlock) | |
clearInterval(uiScanIntervalId); | |
}; | |
// Функция для авто-отправки лайков | |
function likeHandler() { | |
if(!reactionButton || !reactionCountBlock) return; | |
count = parseInt(reactionCountBlock.innerHTML); | |
if(count >= AUTO_LIKE_COUNT) { | |
// Кто-то ебошит лайк, го и мы за компанию | |
// Делаем случайную задержку менее 1с, шоб не спалили | |
const offset = Math.round(Math.random() * 1000); | |
setTimeout(() => { | |
notice("Лайк отправлен (задержка " + offset + ")"); | |
reactionButton.click(); | |
}, offset); | |
} | |
} | |
// Очищает блок с инфой | |
function wipeDisplay() { | |
if(!infoViewBlock) return; | |
infoViewBlock.innerHTML = "Сайт наёбан | melianmiko.ru"; | |
} | |
// Активировать все таймеры | |
uiScanIntervalId = setInterval(uiScan, 5000); | |
setInterval(likeHandler, 1000); | |
setInterval(wipeDisplay, 10000); | |
})(); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment