Розширення для Chrome з імітацією прокручування та оновлення сторінки, що веде себе як людина: покроковий посібник

pic

Особливості

Це розширення для Chrome надає наступні функції:

  • Не потребує встановлення: Уникайте завантаження невідомих розширень або хвилювань щодо потенційних загроз безпеці чи вірусів. Це розширення просте, безпечне та налаштовується безпосередньо в Chrome.
  • Природне прокручування: Симулює прокручування сторінки вгору та вниз на випадкові відстані, імітуючи поведінку людини. Швидкість прокручування, напрямок і час виконання випадкові, щоб виглядати природно.
  • Випадкове оновлення сторінки: Автоматично оновлює веб-сторінки з випадковими інтервалами, налаштовуваними під ваші вимоги.
  • Випадкові затримки: Вводить випадкові паузи між діями (1–10 секунд) для покращення природності поведінки.

Крок 1: Налаштування розширення

  1. Клонування або завантаження репозиторію:
    Почніть з клонування або завантаження файлів розширення з джерела.
    https://github.com/haidertoqeer/auto-refresh-chrome-extension
  2. Встановлення розширення в 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

Leave a Reply

Your email address will not be published. Required fields are marked *