@MaxBat

Как поставить лайк на все комментарии видео в тикток?

Открываю видео тикток в хроме, в консоли браузера запускаю код

document.querySelectorAll('.css-1tvtgfz-DivLikeIcon').forEach((el, i) => {
    console.log(`Element №${i}, `, el);
    el.click();
});


Где css-1tvtgfz-DivLikeIcon - класс блока кнопки лайка.

По итогу лайк ставиться только на первый комментарий.
  • Вопрос задан
  • 155 просмотров
Решения вопроса 2
Mike_Ro
@Mike_Ro Куратор тега JavaScript
Python, JS, WordPress, SEO, Bots, Adversting
Ладно, упарываться, так упарываться. Клики + получение новых элементов для кликов + прокрутка + все повторить, но не смешивать. Кликнуть на ролик, вставить и выполнить код в консоль браузера:
async function clickByElement() {
    let element = document.querySelector('.css-1swe2yf-DivActionContainer.esns4rh0 [aria-pressed="false"]');
    if (!element) return null;

    console.log('Клик!')
    element.click();
    while (element.getAttribute('aria-pressed') !== 'true') {
        await new Promise(resolve => setTimeout(resolve, 100));
    }
    
    return true;
}

async function clickAllElements() {
    let foundClickable = false;
    while (await clickByElement() !== null) {
        foundClickable = true;
    }
    
    return foundClickable;
}

async function scrollToBottomAndClickAgain() {
    const scrollContainer = document.querySelector('.css-1qp5gj2-DivCommentListContainer.ekjxngi3');
    if (scrollContainer) {
        console.log('Крутим страницу и ждем 10 сек.')
        let lastScrollTop = scrollContainer.scrollTop;
        scrollContainer.scrollTop = scrollContainer.scrollHeight;
        await new Promise(resolve => setTimeout(resolve, 10000));

        if (scrollContainer.scrollTop !== lastScrollTop) {
            if (await clickAllElements()) {
                await scrollToBottomAndClickAgain();
            } else {
                console.log('Прокрутка выполнена, новые элементы для клика не найдены.');
            }
        } else {
            console.log('Достигли конца прокрутки, больше нечего прокручивать.');
            if (await clickAllElements()) {
                await scrollToBottomAndClickAgain();
            } else {
                console.log('Задача окончательно завершена, кликов больше не осталось');
            }
        }
    } else {
        console.error('Контейнер для прокрутки не найден');
    }
}

async function initiateClicksAndScroll() {
    if (await clickAllElements()) {
        await scrollToBottomAndClickAgain();
    } else {
        console.log('Нет элементов для начальных кликов, проверяем прокрутку');
        await scrollToBottomAndClickAgain();
    }
}

initiateClicksAndScroll().then(() => console.log('Задача выполнена май генерал!'));
Ответ написан
ilyabond
@ilyabond
В яме даннинга крюгера
Блин, пришлось зарегистрироваться в этом ужасе)

Задержка помогла:
document.querySelectorAll("[data-e2e='comment-like-icon']").forEach((el, i) => {
    setTimeout(() => el.click(),  3000)) // По замечанию @Mike_Ro - достаточно трех секунд
}


P.s ещё нужно решить вопрос с скроллом (так как комменты добавляются динамически) и с капчей
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы