Автоматизация на JavaScript или полезные сниппеты для ВКонтакте

В этой небольшой статье хочу привести примеры как легко с помощью JavaScript:

  • Принять все заявки в друзья
  • Удалить собак (заблокированных друзей)
  • Количество записей на странице
  • Удалить все записи на своей стене

Сразу оговорюсь все методы расписаны уже в VK API, но здесь мы будем использовать чистый JavaScript, даже без jQuery. Все методы писал для своих нужд по мере необходимости для автоматизации рутинных задач, буду рад в комментариях вашим предложениям и новым интересным задачам и возможно напишу статью с набором новых сниппетов.

Как это работает и как запустить скрипты

Данная статья возможно заинтересует людей совершенно не знакомых ни с JavaScript, ни с консолью разработчика, ни с веб разработкой в целом. Все примеры вы выполняете на свой страх и риск, я публикую материал в ознакомительных целях и для того чтобы в будущем не повторять блоки кода а пользоваться готовыми конструкциями. Чтобы запустить какой-то код нужно находиться на той самой странице где это будет исполняться. Для понимания, что делает код — он исполняет ваши действия, но на автомате. Допустим, при раскрутке странице мне приходилось добавлять в друзья не 20-30 человек, а по 200-500 в день. Если по загруженности у меня не было времени на ВК, то тогда необходимо было добавлять иногда и 800-1000 человек разом. Здесь никакой нормальный человек не будет как обезьянка кликать на сотни кнопок и нужны более практичные методы. Все действия я буду показывать на Google Chrome, но методы работают во всех браузерах. Приступим к теме, допустим вы на странице добавления друзей, а конкретно там где принимаете входящие заявки. Прокрутите страницу максимально вниз, чтобы загрузились все заявки полностью, затем нажимаем клавишу F12 у вас появляется справа инструменты разработчика. Там есть вкладки Элементы, Консоль и другие. Если Элементы нужны для того чтобы видеть структуру страницы и стили оформления, то Консоль это непосредственно поле в котором вы выполняете скрипты JavaScript. Он работает с этой структурой и обрабатывает события, к примеру нажатие на кнопку.

Перейдя в консоль, в нижнем поле со стрелкой можно вводить код и исполнять на Enter.

Принять все заявки в друзья

Перейдем на страницу друзей, там где раздел входящие заявки, и прокрутим вниз пока все не отобразятся. Для тех кто хочет понять как это работает, какой код писать нужно во первых научиться писать на JavaScript, а потом ознакомится со структорой DOM (Document Object Model), а потом уже приступить к следующему. При наведении на объект (кнопку) выбираем «Просмотреть код».

Далее в панели разработчика во вкладке инструменты выделится этот элемент, следующий код выделился у меня (все id заменены):

<button class="flat_button button_small" id="accept_request_1" onclick="Friends.acceptRequest(1, '1a111a1111aaa1a11a', this)">Добавить в друзья</button>

В данном случае меня интересует ее класс flat_button button_small. Здесь идет два класса и на JavaScript выполняется код для добавления друга Friends.acceptRequest(), где первым параметром записывается id пользователя. Логика скрипта для принятия входящих заявок. Нам нужны все кнопки добавить в друзья и кликнуть по всем!

Для решения задачи, мы создадим массив, куда поместим все найденные объекты с этим классом, затем циклом for … in пройдемся по полученному массиву, в котором нажмем по каждой кнопке, с помощью уже имеющегося у каждой кнопки события click.

var buttons = document.getElementsByClassName('flat_button button_small');
for(button in buttons) {
    buttons[button].click();
}

Удалить собак (заблокированных пользователей)

Как мы узнаем что пользователь заблокирован или удален? У таких пользователей специфичная картинка профиля, а изучив с помощью панели мы видим что адрес этой картинки следующий:

https://vk.com/images/deactivated_100.png?ava=1

Соответственно, по логике наш скрипт должен найти всех пользователей у которых изображение профиля ссылается на этот адрес, записать их ID и вызвать события для их удаления по ID. Здесь я просто взял в качестве кода события то, что было указано в событии click(). Создаем скрипт, нам нужно два массива, один для получения всех пользователей, другой для хранения всех ID собак. Сначала пройдемся соберем в первый массив всех пользователей, затем получим доступ к полю где указан ID в формате ‘id0000’, спарсим оттуда число с помощью паттерна регулярных выражений, добавим эти ID в числовом формате во второй массив. Вызовем цикл который пройдется по второму массиву и по каждому ID вызовет функцию удаления пользователя из друзей Friends.deleteFriend().

var users = document.getElementsByClassName('friends_photo_img');
var dogId = new Array();

for (usr in users) {
 if (users[usr].src == 'https://vk.com/images/deactivated_100.png?ava=1')
   dogId.push(users[usr].parentNode.parentNode.parentNode.id.replace(/\D+/g,""));
}

for (dog in dogId) {
  Friends.deleteFriend(event, Number(dogId[dog]), this)
}

Количество записей на странице

Заходим на свою страницу и здесь посты отображаются в модуле с классом wall_module. Непосредственно сами записи в блоке с классом page_wall_posts. Изучая структуру можно получить количество записей, указано по ID тега.

var postAllCountAll = document.getElementById('page_wall_count_all');
var postOwnCount = document.getElementById('page_wall_count_own');

console.log('Количество всех записей: ' + postAllCountAll.value);
console.log('Количество ваших записей: ' + postOwnCount.value);

Удалить все записи на своей стене

Исследуя структуру сделать как в варианте с принятием заявок от друзей не получится так как функция wall.deletePost() в качестве третьего параметра принимает я так понял какой-то ключ безопасности, сгенерированный при ее создании. Поэтому делаем проще, получаем все посты, и внутри каждого есть ссылка с классом ui_actions_menu_item, а вернее их несколько, являющихся действиями над записью (удалить, архивировать, закрепить и другое). Нам нужно первое действие, так как массивы начинаются с 0, значит нулевое:

var allPosts = document.getElementsByClassName('_post post page_block all own post--with-likes deep_active');

for (var i = 0; i < allPosts.length; i++) {
    allPosts[i].getElementsByClassName('ui_actions_menu_item')[0].click();
}

На этом я сегодня остановлюсь, пишите в комментариях ваши сценарии и варианты, что хотелось бы автоматизировать именно вам в ВКонтакте.

0 комментариев

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Последние публикации