Есть ли способ настроить Fiddler для перехвата HTTP-вызовов из службы Windows? - PullRequest
18 голосов
/ 27 мая 2010

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

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

Ответы [ 5 ]

35 голосов
/ 27 мая 2010

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

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

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

5 голосов
/ 27 мая 2010

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

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

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

3 голосов
/ 28 августа 2012

Поскольку .NET обходит прокси для localhost и 127.0.0.1, просто жестко закодируйте имя своего компьютера вместо URL-адреса, с которым вы тестируете.

//myUrl = "http://127.0.0.1/myservice";
myUrl = "http://mymachine/myservice";
3 голосов
/ 27 мая 2010

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

0 голосов
/ 13 июля 2015

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

Этот URL не будет отображаться в Fiddler:

http://localhost/X509SignCodeService/X509SigningService.asmx Этот URL появится в Fiddler:

...