| Показатель | Что измеряется | Как влияет на рейтинг | Как им управлять |
|---|---|---|---|
| Время на странице (页面停留时间, yèmiàn tíngliú shíjiān) | Сколько секунд пользователь «залипает» | Длиннее → выше доверие | Делать скролл‑паузы, чтение текста |
| Глубина кликов (点击深度, diǎnjī shēndù) | Сколько внутренних ссылок открыто | Больше → естественнее | Переходы по внутренним ссылкам в случайном порядке |
| Отказы (跳出率, tiàochū lǜ) | Процент сразу уходящих | Ниже → лучше | Добавлять «заполняющие» элементы (видео, формы) |
| Переходы по внешним ссылкам (外部跳转, wàibù tiàozhuǎn) | Как часто пользователь кликает наружу | Слишком часто → подозрение | Разбрасывать ссылки по разным позициям, менять якорный текст |
Ключевая идея: поисковые системы (Google, Яндекс) «читают» не только наличие ссылки, но и то, как пользователь взаимодействует с ней. Если пользователь сразу же уходит, система считает, что ссылка «некачественная», и ваш траст падает.
| Тип скрипта | Что делает | Пример кода (JavaScript) | Когда использовать |
|---|---|---|---|
| Скролл‑пауза | Имитирует чтение, медленно прокручивая страницу | window.scrollTo(0, document.body.scrollHeight * Math.random()); setTimeout(()=>{}, Math.random()*3000+2000); |
На страницах с длинным текстом |
| Клик‑по‑таймеру | Автоматически кликает по внутренним ссылкам через случайный интервал | setInterval(()=>{ document.querySelectorAll('a.internal')[Math.floor(Math.random()*N)].click(); }, Math.random()*8000+4000); |
При наличии 5‑10 внутренних ссылок |
| Таймер «паузы» | Останавливает скрипт на несколько секунд, имитируя «раздумье» | await new Promise(r=>setTimeout(r, Math.random()*5000+2000)); |
Перед переходом к следующей странице |
| Случайный скрейпинг | Случайно выбирает часть контента для копирования (чтобы не копировать всё целиком) | let parts = document.querySelectorAll('p, h2'); let slice = [...parts].slice(0, Math.floor(Math.random()*parts.length)); |
На страницах‑контенте, где нужен «естественный» текст |
Важно: каждый скрипт должен работать в отдельном контексте (только на одной вкладке), иначе будет видно одинаковый паттерн.
| Действие | Минимальный интервал | Рекомендованный диапазон | Почему? |
|---|---|---|---|
| Появление новой сессии | 30 сек | 45 сек – 2 мин | Слишком частый запуск выглядит как бот |
| Скролл‑пауза | 2 сек | 3 сек – 7 сек | Пользователь обычно читает 200‑300 слов за 5‑7 сек |
| Клик по внутренней ссылке | 5 сек | 6 сек – 12 сек | Дать время «осмыслить» контент |
| Переход на внешнюю ссылку | 10 сек | 12 сек – 25 сек | Пользователь часто проверяет, что на странице, перед тем как кликнуть наружу |
| Тайм‑аут между страницами | 15 сек | 20 сек – 45 сек | Имитирует поиск следующего интересного ресурса |
Как реализовать:
async function safeNavigate(url){
// 1. Открываем страницу
window.location.href = url;
// 2. Ждём случайный интервал
await new Promise(r=>setTimeout(r, Math.random()*30000+20000));
// 3. Скроллим и кликаем
// … (вызовы скриптов из таблицы выше)
}
highlight). (async () => {
const donors = ['https://donor1.com','https://donor2.com','https://donor3.com'];
const start = donors[Math.floor(Math.random()*donors.length)];
await safeNavigate(start);
// Скролл
window.scrollTo(0, document.body.scrollHeight*0.7);
await new Promise(r=>setTimeout(r, Math.random()*2000+4000));
// Внутренний клик
const internal = document.querySelectorAll('a.internal');
internal[Math.floor(Math.random()*internal.length)].click();
await new Promise(r=>setTimeout(r, Math.random()*4000+6000));
// Внешний клик
const external = document.querySelectorAll('a.external');
external[Math.floor(Math.random()*external.length)].click();
await new Promise(r=>setTimeout(r, Math.random()*30000+20000));
window.close();
})();
| Метод | Описание | Пример |
|---|---|---|
| Обфускация | Преобразовать код в «мусорный» вид (uglify, base64) | eval(atob('...')) |
| Динамический импорт | Загружать функции только в момент необходимости | import('/mod.js').then(m=>m.run()); |
| Случайный порядок | Перемешивать функции в массиве и вызывать их по индексу | let f=[a,b,c]; f[Math.floor(Math.random()*3)](); |
| Отложенный запуск | Запускать только после события mousemove или scroll |
window.addEventListener('mousemove',()=>{…}, {once:true}); |
| Пользовательские события | Сгенерировать собственный CustomEvent и слушать его |
document.dispatchEvent(new CustomEvent('myStart')); |
Эти техники делают ваш трафик «человеческим» в глазах анти‑ботов.
| Ошибка | Почему опасно | Как исправить |
|---|---|---|
| Постоянный интервал (например, каждые 5 сек) | Система быстро замечает шаблон | Ввести шум: Math.random()*range + base |
| Однообразный якорный текст | Поисковики считают это спам | Использовать синонимы, менять порядок слов |
| Отсутствие внутренних ссылок | Показатель глубина кликов падает | Добавлять скрытые ссылки в «подвале» |
| Слишком быстрый переход на внешнюю ссылку | Пользователь «не успевает» увидеть контент | Увеличить тайм‑аут перед внешним переходом |
| Запуск скриптов в режиме «incognito» | Некоторые браузеры блокируют автоматизацию | Проводить тесты в обычном режиме и проверять console на ошибки |
Критерий успеха: рост CTR на 15‑30 % без резкого изменения Bounce Rate (не более +5 %).
Составьте таблицу из пяти донорских сайтов, укажите для каждого:
Напишите скрипт (на JavaScript), который будет:
Обфусцируйте ваш скрипт с помощью любого онлайн‑инструмента (например, uglify-js) и проверьте, что он всё равно работает.
Смоделируйте 10‑минутный сеанс в браузере (можно в режиме «Developer Tools → Console») и запишите:
Оцените полученные метрики: сравните их с базовыми значениями из пункта 1. Снизились ли Bounce Rate? Увеличился ли CTR?
Поздравляем! Вы теперь владеете полным набором инструментов для «маскировки» поведенческих факторов на донорских сайтах, умеете писать безопасные скрипты, подбирать интервалы и проверять результат. Применяйте полученные знания в своих проектах, и ваш траст будет расти стабильно и без риска «палева».