[M] UrlsDict, UrlsMask и UrlsCombine

Общее описание

Используются для поиска URL на целевых веб-сайтах. Поиск производится по шаблону, в который на место маркировочного символа подставляется искомое имя.

В качестве признаков отрицательных ответов (аналог кода 404) можно использовать регулярные выражения (совпадения ищутся в заголовках и телах ответов сервера), размер тела ответа, коды статуса. Также можно указать регулярное выражение для определения положительного ответа (аналог кода 200).

Если вы указываете сразу несколько признаков отрицательных/положительных ответов, то у них будет следующий приоритет:

  1. Регулярное выражение для определения положительного ответа (аналог кода 200)

  2. Размер отрицательного ответа

  3. Регулярное выражение для определения отрицательного ответа (аналог кода 404)

  4. Код статуса HTTP

Если какой-либо из признаков показывает что запрошенный элемент существует, дальнейшие проверки не производятся. Например. Вы указали что признаком положительного ответа является фраза «found» в ответе сервера. WS делает запрос элемента X и получает ответ с кодом 404, в теле которого содержится фраза «found». Такой ответ будет считаться положительным и WS сообщит о нахождении элемента Х. Причиной является то, что наличие в ответе фразы определяющей положительный ответ приоритетнее проверки по коду статуса.

Поиск производится по маске, словарю и в комбинированном режиме (маска + словарь).

Работа модулей осуществляется как в режиме «сырого» http, так и средствами selenium.

Примеры

Простой поиск по словарю:

./ws.py UrlsDict --template http://simple.polygon.web-scout.online/@ --dict bases/demo/dict.txt

Простой поиск по маске:

./ws.py UrlsMask --template http://simple.polygon.web-scout.online/@ --mask ?l,1,4

Простой поиск по словарю в selenium-режиме:

./ws.py UrlsDict --template http://selenium.polygon.web-scout.online/@ --dict bases/demo/dict.txt --selenium 1 --browser-wait-re "checking" --not-found-re "Not Found"

Поиск на сайте, который отвечает 200 на запрос несуществующих страниц:

./ws.py UrlsDict --template http://always-200.polygon.web-scout.online/@ --dict bases/demo/dict.txt --not-found-re "Page not found"

Поиск с восприятием кода 500 как 404:

./ws.py UrlsDict --template http://always-500.polygon.web-scout.online/@ --dict bases/demo/dict.txt --not-found-codes 500

Поиск с повторением запроса при получении кода 503:

./ws.py UrlsDict --template http://sometimes-503.polygon.web-scout.online/@ --dict bases/demo/dict.txt --retest-codes 503

Поиск с повторением запроса при наличии фразы "Too big load" в ответе сервера:

./ws.py UrlsDict --template http://sometimes-503.polygon.web-scout.online/@ --dict bases/demo/dict.txt --retest-re "Too big load"

Опции (* - обязательно)

R - присутствует ли в raw режиме S - присутствует ли в selenium режиме.

Имя

По умолчанию

R

S

Описание

--template *

Да

Да

Шаблон перебора. Маркировочным символом (@ по умолчанию) в нём отмечается то место, куда будет помещена проверяемая фраза. Примеры: «http://site.com/@», «https://site.com/@.php».

--dict *

Да

Да

Для UrlsDict. Путь к словарю для перебора.

--mask *

Да

Да

Для UrlsMask. Маска для перебора.

--combine-template *

Да

Да

Для UrlsCombine. Шаблон для комбинированного поиска. Строка с вхождениям маркеров «%m%» и «%d%» на чьё место подставляются слова из маски и словаря соответственно.

--found-re

Да

Да

Регулярное выражение (python.re) для определения положительного ответа веб-сервера (аналог кода 200)

--not-found-re

Да

Да

Регулярное выражение (python.re) для определения отрицательного ответа веб-сервера (аналог кода 404)

--not-found-size

Да

Да

Размер отрицательного ответа (аналог кода 404). Помните что он может отличаться у разных утилит. Пользуйтесь тестовым режимом чтоб узнать нужное вам значение.

--not-found-codes

Да

Нет

Набор кодов статуса (через запятую) которые будут считаться аналогами 404.

--method

GET

Да

Нет

HTTP-метод которым будет запрошен искомый URL: HEAD, POST, GET.

--proxies

Да

Да

Файл со списком http-proxy.

--retest-re

Да

Да

Регулярное выражение (python.re) для поиска в ответе сервера признака необходимости переотправить запрос. Например «Service Temporarily Unavailable».

--retest-codes

Да

Нет

Набор кодов (через запятую) указывающих на то, что запрос нужно отправить заново. Например «502,503».

--headers-file

Да

Нет

Файл с http заголовками для включения в заголовки запроса.

--ignore-words-re

Да

Да

Регулярное выражение (python.re) для игнорирования проверяемых фраз. Пригодится в случаях когда вам не нужно проверять слова из словаря/маски содержащие какой-либо фрагмент, например начинающиеся на «.ht».

--msymbol

@

Да

Да

Маркировочный символ для шаблона поиска.

--delay

0

Да

Да

Задержка между запросами (в секундах). Касается не всех рабочих потоков в целом, а каждого потока в частности.

--threads

10

Да

Да

Количество рабочих потоков

--parts

0

Да

Да

На сколько частей разбить проверяемый список (словарь, маску)

--part

0

Да

Да

С какой из частей проверяемого списка работаем.

--test

0

Да

Да

Включение тестового режима

--xml-report

0

Да

Да

Путь к xml-отчёту

--selenium

0

Нет

Да

Включение selenium-режима

--browser-recreate-re

Нет

Да

Регулярное выражение (python.re). При совпадении в ответе веб-сервера бразер будет закрыт и запущен заново. При этом будет сменён прокси, если они используются.

--browser-wait-re

Нет

Да

Регулярное выражение (python.re). При совпадении в ответе веб-сервера браузер остановит работу и будет ждать пока совпадение не исчезнет. Может использоваться для ручного ввода captcha или обхода anti-ddos защит («wait 5 secs, we check your browser»).