# \[M] UrlsDict, UrlsMask и UrlsCombine

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

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

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

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

1. Регулярное выражение для определения положительного ответа (аналог кода 200)
2. Размер отрицательного ответа
3. Регулярное выражение для определения отрицательного ответа (аналог кода 404)
4. Код статуса HTTP

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

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

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

В config.ini вы можете найти опцию skip\_listing, которая во включенном состоянии не позволит начинать работу с директориями, которые являются листингами. По умолчанию она включена.

### Примеры

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

```
./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"
```

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

{% hint style="info" %}
**R** - присутствует ли в raw режиме\
**S** - присутствует ли в selenium режиме.
{% endhint %}

| Имя                   | По умолчанию | 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»). |


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://webscout.gitbook.io/webscout-ru/moduli-dafsdict-dafsmask-i-dafscombine.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
