You are here

Замена макросов

Модуль 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"