Видалення повідомлень зі стіни ВКонтакте (пишемо скрипт)

Відразу обмовлюся. Скрипт не є повністю автоматичним, видаляє повідомлення тільки з поточної сторінки стіни. Пов'язано це з тим, що написаний на колінці о 5-й ранку, з іншого боку з тим, що я не придумав як перезавантажувати сторінку так, щоб скрипт залишався в пам'яті браузера (тому якщо у когось є ідеї прошу відписатися на благо всіх нас, Великого Павла Дурова та Господа Нашого Б-га, амінь).
З іншого боку, то за 2 хвилини можна очистити більше сотні повідомлень – а що ще потрібно? У мене за 3 роки накопичилося всього 500, а видалення зайняло хвилин 5 (заплакав великою суворою чоловічою сльозою).
Тобто зовсім недвозначно зрозуміло, що у ВКонтакті є функція deletePost, яка і застосовується. Наприклад, усі скрипти, які я зміг нагуглити, застосовували давно застарілий API, через що й не працювали.
видасть нам віконце з повідомленням "а". Тобто функції eval ми передаємо рядок, який вона виконує як би такий же JavaScript був написаний у сценарії
Крім того, потрібно не забувати, що працювати скрипт має за таймером. Сервер просто не встигне обробити 20 запитів (а саме стільки повідомлень на одній сторінці) за секунду і просто не видалить нічого. І добре, якщо ще й бан не отримаємо.
Загалом, загалом, все. Єдине, мабуть, із нетехнічного: бажано виводити попередження, щоб випадково не видалити повідомлення. Нехай навіть із однієї сторінки.
Частина 2. Тепер сам скрипт і як він працює.
Скрипт дуже маленький, дуже простий та зрозумілий. З іншого боку на його прикладі можна дізнатися як використовувати регулярні вирази та таймери.
При старті скрипту ми виводимо повідомлення за допомогою confirm (Yes/No DialogBox) і перевіряємо відповідь. Якщо відповідь була "Так" ("Ок" і т.п.), то ми запускаємо таймер за допомогою setInterval. Таймер спрацьовує кожні півсекунди (другий параметр) і викликає при кожному спрацьовуванні функцію Step(). Ідентифікатор таймера step_t (від timer).
Відмінно, тепер таймер запущений і кожні півсекунди викликається функція Step(), де і захований по суті весь скрипт.
Насамперед у цій функції ми знаходимо на сторінці рядок, що містить deletePost і витягуємо її повністю.
При цьому ми використовуємо просту конструкцію «.+». Символ "точка" означає в ній "будь-який символ", а "плюс" - "один або більше". Тобто виходить один чи більше одного будь-яких символів. Дужками потрібно відзначити ту ділянку, яку ми хочемо вичепити в результаті. І, звичайно, треба враховувати, що якщо дужка є в самому рядку, за яким ми робимо пошук, то її потрібно "екранувати" за допомогою "\".
Після всього цього регулювання «запускається» за допомогою pattern.exec(string), де pattern – наше регулювання, string – те, чому ми шукатимемо, а exec – функція виконання.
Коротка довідка закінчена, дякую всім. *кланяється*
Як результат вечірки знайдений рядок потрапляє в match[1] (бо сам по собі match – це масив рядків; наприклад у match[0] зберігається повністю знайдений вираз, а match[2] не існує, тому що дужками, за допомогою яких «Вичіплюється» потрібний фрагмент, у нас «обгороджений» лише один шматок).
Далі все ще простіше. У match[1] ми потрапляє рядок виду «deletePost(…)». Нам потрібно просто її виконати. Тому ми використовуємо eval() і передаємо йому як аргумент знайдене значення (адже воно містить і ім'я виконуваної функції – deletePost).
Про всяк випадок додано перевірку - якщо match дорівнює null, значить ми нічого не знайшли івидаляти нам нема чого.
Лічильник i служить визначення – скільки повідомлень ми вже видалили. Ми знаємо, що на сторінці ми маємо лише 20 повідомлень, тому додано умову i >= 20. Коли ця умова виконується, ми зупиняємо таймер за допомогою clearInterval() (функція приймає на вході ідентифікатор таймера).
Ось, власне, і вся логіка роботи скрипта.
Частина 3. Особисто я «сиджу» в Chrome, тому, щоб запустити скрипт, мені потрібно зробити таке:
1) Перейти на сторінку vkontakte.ru/wall.php 2) Натиснути правою кнопкою куди-нитку і вибрати «Перевірити елемент». Відкриється нове вікно. 3) У ньому натиснути "Console", скопіювати туди весь скрипт повністю і натиснути Enter.