Справочник предназначен для хранения информации о промежуточных прокси-серверах, через которые будет работать конфигурация взаимодействуя с ботом.
Мы можем внести несколько прокси и работать через них. При этом подсистема умеет:
1. Загрузить список бесплатных прокси
2. Предпринимать попытки отправки через другой прокси, если по какой-то причине попытка неудачна.
3. Собирать статистику отправки через разные прокси и в начале пытаться отправлять с помощью прокси, по убыванию успешности отправки прокси
Отправленное сообщение увеличивает вес прокси, не отправленное сообщение вес уменьшает. Это позволяет хорошим прокси "всплыть" в верх и использоваться чаще, а те, через которые отправка осуществляется плохо, будут внизу и, соответственно, использоваться реже.
Причем при подключении ботом алгоритм выбора прокси осуществляется аналогом метода трех точек.
То есть прокси ранжируются исходя из суммы трех показателей:
- сумма успешных и неуспешных отправлений за месяц;
- успешность последней отправки;
- сумма успешных и неуспешных отправлений за текущий день
Каждый из указанных показателей имеет свой коэффициент - 7/12, 3/12 и 2/12 соответственно. Коэффициенты подобраны эвристически.
При этом неуспешное отправление при суммировании за день засчитывается не за -1 а за -0,8. Такую оценку словами можно описать примерно так: "если прокси хорошо отправлял в течении предыдущего месяца (читай 30 предшествующих дней, то скорее всего будет выбран он, однако если в течении дня прокси работал нестабильно и последняя отправка была неудачной, то возможно его рейтинг снизится).
Каждая отправка и не отправка через прокси-сервер записывается и влияет на его рейтинг.
Реквизиты справочника:
- Активность - использовать прокси-сервер для отправки сообщений или нет.
- Протокол - протокол прокси-сервера (https или socks5).
- Сервер - имя прокси-сервера (IP-адрес или DNS-имя).
- Порт - порт прокси-сервера.
- Пользователь - имя пользователя прокси-сервера.
- Пароль - пароль пользователя подключения прокси-сервера.
- Комментарий - произвольный комментарий.