Особливості
Це розширення для Chrome надає наступні функції:
- Не потребує встановлення: Уникайте завантаження невідомих розширень або хвилювань щодо потенційних загроз безпеці чи вірусів. Це розширення просте, безпечне та налаштовується безпосередньо в Chrome.
- Природне прокручування: Симулює прокручування сторінки вгору та вниз на випадкові відстані, імітуючи поведінку людини. Швидкість прокручування, напрямок і час виконання випадкові, щоб виглядати природно.
- Випадкове оновлення сторінки: Автоматично оновлює веб-сторінки з випадковими інтервалами, налаштовуваними під ваші вимоги.
- Випадкові затримки: Вводить випадкові паузи між діями (1–10 секунд) для покращення природності поведінки.
Крок 1: Налаштування розширення
- Клонування або завантаження репозиторію:
Почніть з клонування або завантаження файлів розширення з джерела.
https://github.com/haidertoqeer/auto-refresh-chrome-extension - Встановлення розширення в Chrome:
- Відкрийте Chrome і перейдіть до
chrome://extensions/
. - Увімкніть Режим розробника за допомогою перемикача у правому верхньому кутку.
- Натисніть Завантажити розпаковане і виберіть папку, що містить код розширення.
- Після завантаження розширення буде встановлено та готове до використання!
Крок 2: Основні компоненти коду
1. Обробка таймерів для активних вкладок
Об’єкт activeTabTimers
використовується для керування таймерами оновлення сторінок для кожної вкладки.
const activeTabTimers = {}; // Об’єкт для зберігання таймерів оновлення для кожної вкладки
2.
Планування оновлень сторінок
Функція scheduleRefresh
планує оновлення сторінок через випадкові інтервали.
function scheduleRefresh(tabId, minInterval, maxInterval) {
if (!tabId) return;
// Очистити існуючий таймер оновлення
if (activeTabTimers[tabId]) {
clearTimeout(activeTabTimers[tabId]);
delete activeTabTimers[tabId];
}
const randomInterval = Math.floor(Math.random() * (maxInterval - minInterval + 1)) + minInterval;
let remainingTime = randomInterval;
function updateBadge() {
chrome.action.setBadgeText({ tabId, text: remainingTime.toString() });
chrome.action.setBadgeBackgroundColor({ tabId, color: "#4CAF50" });
if (remainingTime > 0) {
remainingTime -= 1;
setTimeout(updateBadge, 1000);
}
}
updateBadge();
activeTabTimers[tabId] = setTimeout(() => {
chrome.tabs.reload(tabId, () => {
delete activeTabTimers[tabId];
scheduleRefresh(tabId, minInterval, maxInterval); // Перезапланувати оновлення
});
}, randomInterval * 1000);
scheduleScroll(tabId); // Запустити функціонал прокручування після налаштування таймера оновлення
}
randomInterval
: Генерує випадковий інтервал між мінімальним та максимальним часом оновлення.updateBadge
: Відображає таймер зворотного відліку на значку розширення.chrome.tabs.reload
: Оновлює активну вкладку через розрахований інтервал.
3.
Планування прокручування, схожого на людське
Функція scheduleScroll
імітує природну поведінку прокручування з випадковими напрямками, відстанями та затримками.
function scheduleScroll(tabId) {
if (!tabId) return;
// Очистити існуючий таймер прокручування для вкладки
if (scrollTimers[tabId]) {
clearTimeout(scrollTimers[tabId]);
delete scrollTimers[tabId];
}
// Почати прокручування після затримки 10 секунд
scrollTimers[tabId] = setTimeout(() => {
console.log(`Початок прокручування на вкладці ${tabId}`);
// Функція для імітації прокручування
function scrollPage() {
const maxScroll = document.body.scrollHeight - window.innerHeight;
const currentScroll = window.scrollY;
if (maxScroll <= 0) {
console.log("Не знайдено контенту для прокручування.");
return;
}
const scrollDistance = Math.random() * 100 + 50; // Випадкова відстань прокручування
let direction = Math.random() > 0.5 ? 1 : -1; // Випадковий напрямок: вгору чи вниз
if (currentScroll === 0) {
direction = 1; // Примусове прокручування вниз на початку сторінки
}
const delay = Math.random() * 200 + 150; // Випадкова затримка між прокручуваннями
const targetScroll = currentScroll + direction * scrollDistance;
if (targetScroll < 0) {
window.scrollTo({ top: 0, behavior: "smooth" });
} else if (targetScroll > maxScroll) {
window.scrollTo({ top: maxScroll, behavior: "smooth" });
} else {
window.scrollBy({ top: direction * scrollDistance, behavior: "smooth" });
}
console.log(`Прокручено ${direction > 0 ? 'вниз' : 'вгору'} на ${scrollDistance}px.`);
scrollTimers[tabId] = setTimeout(scrollPage, delay);
}
scrollPage();
}, 10000); // Затримка старту на 10 секунд
}
scrollDistance
: Випадкова відстань (50–150px) для кожної дії прокручування.direction
: Випадкове прокручування вгору чи вниз для імітації реальної поведінки людини.delay
: Додає природну паузу між діями прокручування.
4.
Прослуховування команд старту/стопу
Ця частина коду обробляє повідомлення від спливаючого вікна або інтерфейсу розширення для запуску чи зупинки функціональності.
chrome.runtime.onMessage.addListener((message) => {
const tabId = message.tabId;
if (message.action === "start") {
chrome.storage.local.get(["activeTabs"], (data) => {
const { minInterval, maxInterval } = data.activeTabs[tabId] || {};
if (minInterval && maxInterval) {
scheduleRefresh(tabId, minInterval, maxInterval);
}
});
} else if (message.action === "stop") {
if (activeTabTimers[tabId]) {
clearTimeout(activeTabTimers[tabId]);
delete activeTabTimers[tabId];
}
if (scrollTimers[tabId]) {
clearTimeout(scrollTimers[tabId]);
delete scrollTimers[tabId];
}
chrome.action.setBadgeText({ tabId, text: "" });
}
});
5.
Очищення при закритті вкладок
Щоб уникнути витоків пам'яті, таймери очищаються при закритті вкладки.
chrome.tabs.onRemoved.addListener((tabId) => {
if (activeTabTimers[tabId]) {
clearTimeout(activeTabTimers[tabId]);
delete activeTabTimers[tabId];
}
if (scrollTimers[tabId]) {
clearTimeout(scrollTimers[tabId]);
delete scrollTimers[tabId];
}
});
Контакти для оновлень чи допомоги
Якщо вам потрібна додаткова допомога чи оновлення, не соромтеся звертатися:
https://www.upwork.com/freelancers/~01bbd0b4facc5ae5ba
https://www.fiverr.com/users/toqeerhaider597
Перекладено з: Human-Like Scrolling and Page Refresh Chrome Extension: A Step-by-Step Guide