Модуль RTP позволяет автоматически заменять макросы их значениями в поле Request непосредственно перед отправкой данных на сервер.
Поддерживаются встроенные макросы (к примеру, "%RAND_NUM%") и макросы, задаваемые пользователем (вида #$m$имямакроса$m$#).
В дополнение к этому, модуль позволяет производить замену макросов с именами полей объекта Request на соответствующие им значения. Для замены необходимо указать в поле Request макросы в виде #$r$поле$r$# или #$e$поле$e$#. Первый тип макросов вставит поле "как есть", второй произведёт "экранирование" всех символов, кроме a-z и 0-9 на их шестнадцатеричные значения (например, пробел будет заменён на %20).
В замене макросов поддерживаются следующие поля: ServerAddress, ServerPort, OriginalUrl, Url, UrlServer, UrlPort, UrlObject, UrlProtocol, ProxyAddress, ProxyPort, ProxyType, ProxyCheckInterval, ProxyGroup, SaveToFile, MaxDownloadSize и все значения свойства UserData. Для замены значений UserData необходимо указывать их в виде UserData.Имя, пример использования приведён ниже.
Так же поддерживается замена макроса с именем UrlPortDefault, который заменяется на пустое значение, если используется порт по умолчанию (80 для http и 443 для https) или на значение вида ":81", если используется нестандартный порт (в данном случае 81).
Макросы заменяются только в отправляемом на сервер запросе, само поле Request не изменяется и может быть повторно использовано.
Пример использования:
var req = RTP.CreateRequest(); req.Url = "http://127.0.0.1/test.html"; req.SetUserData("Test", "Hello World"); // Макрос #$r$UrlObject$r$# будет заменён на значение поля UrlObject, в данном случае "/test.html" var headers = "GET #$r$UrlObject$r$# HTTP/1.1\r\n"; // Макрос #$r$UrlServer$r$# будет заменён на значение поля UrlServer, в данном случае "127.0.0.1" headers += "Host: #$r$UrlServer$r$#\r\n"; // Вместо макроса #$m$UA$m$# будет подставлено одно из случайных значений макроса UA. Значения определяются в файле checkparams_macroses.xml. headers += "User-Agent: #$m$UA$m$#\r\n"; // Вместо макроса #$e$UserData.Test$e$# будет подставлено "Hello%20World" headers += "Test-Header: #$e$UserData.Test$e$#\r\n"