# \[M] ParamsDict и ParamsMask

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

Модули занимаются поиском параметров с которыми можно обращаться к URL. Логика работы основана на том, что обращение к URL с определёнными параметрами изменяет контент возвращаемый им.

Возможно 4 варианта поиска — методами GET, POST, в cookies и загружаемых файлах. Поиск методом GET выглядит как запрос URL с большим количеством параметров. У метода POST параметры передаются в теле запроса. В поиске через cookies параметры передаются как множество cookies с различными именами. А в поиске через загружаемые файлы на сервер отправляются запросы загрузки нескольких файлов с мизерным содержимым.

Важный момент. Количество одновременно передаваемых в запросах параметров регулируется опцией «--max-params-length». Она имеет двойное значение. Для GET и POST это максимальная длина строки параметров вместе с их значением и амперсандами (a=1\&b=1\&c=1...). Для cookies и файлов это количество самих имён проверяемых за один запрос. Рекомендуемые значения параметра «--max-params-length» для GET и POST составляют 1000. Для cookies и файлов — 20.

Значение, помещаемое в искомые параметры по умолчанию «1» и может меняться через указание опции «--value».

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

## Примеры

Поиск параметров скрипта методом GET по словарю:

```
./ws.py ParamsDict --url http://simple.polygon.web-scout.online/params-bruter-dict-get.php --dict bases/demo/dict.txt --max-params-length 1000 --params-method GET --not-found-re NOT
```

Поиск параметров скрипта методом GET по маске:

```
./ws.py ParamsMask --url http://simple.polygon.web-scout.online/params-bruter-dict-get.php --mask ?l,1,2 --max-params-length 1000 --params-method GET --not-found-re NOT
```

Поиск параметров скрипта принимающего файлы на загрузку:

```
./ws.py ParamsDict --url http://simple.polygon.web-scout.online/params-bruter-dict-files.php --dict bases/demo/dict.txt --max-params-length 10 --params-method FILES --not-found-re NOT
```

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

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

| Имя                    | По умолчанию | R   | S   | Описание                                                                                                                                                                                                                                                                                                      |
| ---------------------- | ------------ | --- | --- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| --url \*               |              | Да  | Да  | Целевой URL                                                                                                                                                                                                                                                                                                   |
| --params-method \*     |              | Да  | Да  | Метод поиска. GET, POST, COOKIES, FILES                                                                                                                                                                                                                                                                       |
| --max-params-length \* |              | Да  | Да  | Для GET и POST это максимальная длина строки параметров вместе с их значением и амперсандами (a=1\&b=1\&c=1...). Для cookies и файлов это количество самих имён проверяемых за один запрос. Рекомендуемые значения параметра «--max-params-length» для GET и POST составляют 1000. Для cookies и файлов — 20. |
| --dict \*              |              | Да  | Да  | Для ParamsDict. Путь к словарю для перебора.                                                                                                                                                                                                                                                                  |
| --mask \*              |              | Да  | Да  | Для ParamsMask. Маска для перебора.                                                                                                                                                                                                                                                                           |
| --combine-template \*  |              | Да  | Да  | Для ParamsCombine. Шаблон для комбинированного поиска. Строка с вхождениям маркеров «%m%» и «%d%» на чьё место подставляются слова из маски и словаря соответственно.                                                                                                                                         |
| --value                | 1            | Да  | Да  | Значение которое помещается в искомые параметры.                                                                                                                                                                                                                                                              |
| --not-found-re         |              | Да  | Да  | Регулярное выражение (python.re) для определения отрицательного ответа веб-сервера (аналог кода 404)                                                                                                                                                                                                          |
| --not-found-size       |              | Да  | Да  | Размер отрицательного ответа (аналог кода 404). Помните что он может отличаться у разных утилит. Пользуйтесь тестовым режимом чтоб узнать нужное вам значение.                                                                                                                                                |
| --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»).                                                   |
