Выполнение скрипта из автоответчика Fiddler - PullRequest
1 голос
/ 06 января 2020

Я пытаюсь проверить скрипт локально, используя правила автоответчика Fiddler, и у меня есть конечная точка, которая включает в себя га sh тела запроса в ответе. Я подумал, что мог бы просто запустить скрипт из автоответчика и вычислить га sh и построить ответ, но было невероятно сложно понять, как это сделать.

Насколько я могу судить, скрипты поддерживается AutoResponder, но документации практически нет. Единственная ссылка, которую я могу найти, - это сообщение на форумах Fiddler (https://www.telerik.com/forums/script-in-autoresponder), но я не знаю, откуда в документации эта информация взята.

Я могу запустить сценарии, но, кажется, они запускаются до отправки запроса, и я не могу понять, как заставить его выполнить запрос как обычно (или загрузить ответ из файла, или заполнить тело ответа от скрипта), а затем выполните мой код, чтобы добавить ha sh в качестве заголовка.

Я немного возился с объектом Session, но не могу найти ничего очевидного. Есть ли лучшая документация для Fiddler, которая на самом деле актуальна?

1 Ответ

1 голос
/ 12 января 2020

Вот пример функции, которая создает ответ, который включает в себя динамическую c информацию из запроса.

public static function UrbanDictionaryBlocker(oS: Session)
{   
    if (oS.HTTPMethodIs("GET")) // avoid HTTPS errors
    {
        oS.utilCreateResponseAndBypassServer();
        oS.ResponseBody = System.Text.Encoding.UTF8.GetBytes("stop browsing urban dictionary at work: " + oS.fullUrl);
    }
}

Я написал соответствующее правило, которое отображает URL-адреса, содержащие «urbandictionary», в эту функцию.

Как я понял это:

Я понял это, настроив Расширение расширения Fiddler в Visual Studio , которое дает намного лучший смысл для Fiddler API. Используя go для определения , я смог легко просмотреть список всех методов класса Session.

Пример:

...
        [CodeDescription("Returns true if request URI contains the specified string. Case-insensitive.")]
        public bool uriContains(string sLookfor);
        [CodeDescription("Copy an existing Session's response to this Session, bypassing the server if not already contacted")]
        public void utilAssignResponse(Session oFromSession);
        [CodeDescription("Copy an existing response to this Session, bypassing the server if not already contacted")]
        public void utilAssignResponse(HTTPResponseHeaders oRH, byte[] arrBody);
        [CodeDescription("Use BZIP2 to compress the response body. Throws exceptions to caller.")]
        public bool utilBZIP2Response();
        [CodeDescription("Apply Transfer-Encoding: chunked to the response, if possible.")]
        public bool utilChunkResponse(int iSuggestedChunkCount);
        [CodeDescription("Call inside OnBeforeRequest to create a Response object and bypass the server.")]
        public void utilCreateResponseAndBypassServer();
        [CodeDescription("Removes chunking and HTTP Compression from the Request. Adds or updates Content-Length header.")]
        public bool utilDecodeRequest();
        public bool utilDecodeRequest(bool bSilent);
        [CodeDescription("Removes chunking and HTTP Compression from the response. Adds or updates Content-Length header.")]
        public bool utilDecodeResponse();
...

А потом я догадался, что utilCreateResponseAndBypassServer был инструментом для работы.

...