Подтвердить что ты не робот

Есть ли способ настроить Fiddler на перехват HTTP-вызовов из службы Windows?

Мы находимся в процессе замены старого (5+ лет) приложений для Windows, построенного на VS2005, который вызывает HTTP GET-вызов. Есть несколько вещей, которые делают это трудным (например, веб-сервер находится в сети клиента, и мы не можем напрямую подключиться к нему), и, к сожалению, мы бы предпочли не использовать запущенную систему для замены WinForm версию, которая может контролироваться Fiddler. Кажется, что новый код делает все правильно, но, увы, он не аутентифицируется.

Есть ли способ настроить Fiddler (2.2.9.1) для перехвата HTTP-вызовов из службы Windows?

4b9b3361

Ответ 1

Кодка дал ключ, чтобы заставить меня двигаться в правильном направлении. Элемент, который все еще отсутствовал, состоял в том, как настроить прокси. Для <appname>.exe.config необходимо иметь следующий раздел:

<system.net>
        <defaultProxy enabled="true">
                <proxy proxyaddress="http://127.0.0.1:8888" bypassonlocal="False"/>
        </defaultProxy>
</system.net>

Как только это было сделано, HTTP-трафик службы Windows начал протекать через Fiddler.

Ответ 2

Fiddler просто выступает в качестве прокси-сервера HTTP, поэтому, если вы можете настроить прокси-сервер в своей службе, вы можете настроить его для прохода через Fiddler. Невозможно ли это сказать...

Если это не сработает, вы можете сделать это, запустив Fiddler на втором компьютере и настроив его на прослушивание на порту 80. Затем на вашем "тестовом" компьютере отредактируйте свой файл hosts так, чтобы он указывал на второй компьютер вместо. Так скажите, что веб-сервис находится на www.example.com, вы настроили свой тестовый сервер, чтобы "www.example.com" указывал на ваш второй компьютер (работает Fiddler). Затем, когда служба подключится к "www.example.com", она действительно подключится к Fiddler. Затем Fiddler переадресует подключение к реальному www.example.com после записи запроса/ответа.

Я не тестировал выше, но я думаю, что это сработает. Очевидно, что если вы сможете настроить параметры прокси-сервера в своей службе, это будет проще!

Ответ 3

И, конечно, если Fiddler не работает, всегда Wireshark. В качестве подсказки используйте пару фильтров в Wireshark (например, покажите только пакеты, идущие или исходящие от IP-адреса назначения), чтобы избежать ощущения того, что вы переполнены данными.

Ответ 4

Так как .NET обходит прокси для localhost и 127.0.0.1, просто перекодируйте свое имя машины вместо URL-адреса, с которым вы тестируете.

//myUrl = "http://127.0.0.1/myservice";
myUrl = "http://mymachine/myservice";

Ответ 5

Примечание. Важно. Независимо от других параметров,.NET всегда будет обходить прокси-сервер Fiddler для URL-адресов, содержащих localhost. Поэтому вместо использования localhost измените код, чтобы ссылаться на имя машины. Например:

Этот URL-адрес не появится в Fiddler:

http://localhost/X509SignCodeService/X509SigningService.asmx Этот URL-адрес появится в Fiddler: