понедельник, 4 августа 2014 г.

Пример обхода защиты от DDoS с использованием Selenium

Всем привет. Недавно столкнулся с проблемой автоматизированной работы с двумя сайтами, находящимися под anti-DDoS. В первом случае нужно было побрутить PhpMyAdmin с авторизацией через post-форму, но мешала защита от CloudFlare.
Вспомнив про Selenium, c помощью Python3 и WebDriver был написан простенький PoC которых отлично справился с задачей:
selenium-pma-bruter.py

Во втором случае нужно было поискать файлы и директории по словарю. От какой фирмы там был anti-DDoS я не знаю, но работал он просто. Время от времени вместо нужной страницы сайта выдавался код присвоения особых куков с маленьким временем жизни. Сразу после этого (т.е. почти мгновенно) происходил редирект на запрошенную страницу.
Задача не много осложнялась тем, что ответов а-ля 404 там было 3 вида:

  • Стилизованный ответ XenForo об отсутствии запрошенной страницы
  • Ответ 404 от nginx
  • Ответ "No input file specified" от PHP

Учтите это если соберётесь использовать данный скрипт. Скорее всего вам придётся переделать определение ответа 404.
selenium-dafs.py
Вот такие 2 примера обхода anti-DDoS по средствам Selenium. Надеюсь кому-нибудь пригодятся.


P.S. Что касается быстродействия, то с консольными вариантами конечно не сравнить. Каждый поток - самостоятельный браузер, кушающий по 150-200 Мб RAM. На виртуальной машине под Ubuntu 12 c 6 ядрами CPU 3200Mhz и 4Gb RAM без проблем работало 15 потоков.