2009-09-24 5 views
36

.NET HttpWebRequest 및 HttpWebResponse를 사용하여 요청 및 응답을 캡처하기 위해 Fiddler를 연결할 수있는 방법이 있습니까?HttpWebRequest/HttpWebResponse를 사용하여 만든 HTTP 요청 및 응답 가져 오기

+0

어쩌면 내가 당신의 질문을 이해하지 않지만, 피들러 웹 디버거 (프록시)입니다. 요청이 프록시를 통해 전송 된 경우 요청을 캡처합니다. 당신이 (정말로)하고 싶은 것을 묘사 해주세요. – tuergeist

답변

10

그렇지 않은 경우 Wireshark은 네트워크 하드웨어 수준에서 작동하는 유사한 도구이므로 모든 응용 프로그램에서 네트워크 트래픽을 캡처 할 수 있습니다.

Wireshark는 피 들러보다 좀 더 복잡하고 더 일반적인 것이지만 툴박스에 넣을만한 훌륭한 도구이며 약간의 시간을 조사 할 가치가 있습니다.

+0

@Charming 익명 Downvoter : 당신이 "내가 할 수 없다면"라고 말한 부분을 놓쳤습니까? 도움이 되려고 애쓰는 것을 용서해주십시오. – RichieHindle

+1

@ 리치 : 이유를 이해할 수 없기 때문에 나는 downvote를 무력화 시켰습니다. – tuergeist

+1

@tuergeist : 감사합니다. 너는 신사 야. – RichieHindle

37

피들러 FAQ에서 이에 대한 답변을 제공합니다.

기본적으로 HTTP 트래픽을 Fiddler (즉, Fiddler를 프록시로 사용)를 통해 라우팅합니다.
Fiddler Web Debugging - Configuring Clients

어떤 차례의 링크 여기에 :
Take the Burden Off Users with Automatic Configuration in .NET

당신은 web.config 파일에서 일부 구성 설정을 통해이를 달성 할 수있다 (하는 ASP를 위해 여기

은 도움이 될 몇 가지 링크입니다 그래서 같은 .NET 응용 프로그램) :

<system.net> 
    <defaultProxy> 
    <proxy 
     proxyaddress="http://[your proxy address and port number]" 
     bypassonlocal="false" 
    /> 
    </defaultProxy> 
</system.net> 

가 0에 완전한 세부 사항에 대한 here를 참조하십시오설정입니다.

양자 택일로, 당신은 같은 것을 사용하여 코드에서 WebProxy가 객체를 사용할 수 있습니다

HttpWebRequest request = (HttpWebRequest)WebRequest.Create("[ultimate destination of your request]"); 
WebProxy myproxy = new WebProxy("[your proxy address]", false); 
request.Proxy = myproxy; 
request.Method = "GET"; 
HttpWebResponse response = (HttpWebResponse) request.GetResponse(); 

이 WebProxy가 클래스에 대한 자세한위한 here를 참조하십시오.

왜 트래픽이 http://localhost 또는 http://127.0.0.1로 전송이 표시되지 않습니다 :

은 또한이 피들러 자주 묻는 질문에서 언급 한 중요한 "주의"를주의?
IE7 및 .NET 프레임 워크는 는 프록시를 통해 로컬 호스트에 대한 요청을 보내지 하드 코딩하고, 프록시로, 피들러는 트래픽을받을 수 없습니다.

해결 방법은 호스트 이름으로 컴퓨터 이름을 사용하고 은 Localhost 또는 127.0.0.1입니다. 따라서 인스턴스의 경우 http://localhost:8081/mytestpage.aspx, 대신 http://machinename:8081/mytestpage.aspx을 방문하십시오. 당신은 들러 추가 v2.1.8 이상을 사용, 단지, IPv4의 어댑터에 를 로컬 호스트를 칠 http://ipv4.fiddler 를 사용하거나 IPv6를 어댑터에 로컬 호스트를 공격 http://ipv6.fiddler를 사용하는 경우

... 또는,.이 은 Visual 서버 Studio 테스트 웹 서버 (코드 이름 : 카시니)와 특히 잘 작동합니다. 테스트 서버 인 만 IPv4 루프백 어댑터를 수신하기 때문입니다.

마지막으로, 당신은 파일과 같이 규칙을 정의 할 수 : 다음

static function OnBeforeRequest(oSession:Fiddler.Session) 
    { 
     if (oSession.HostnameIs("MYAPP")) 
     { 
     oSession.host = "127.0.0.1:8081"; 
     } 
    } 

... 그리고는 127.0.0.1:8081에 대한 별칭 역할을하는 http://myapp을했다. localhost.fiddler에 호스트 이름을 변경 : 당신이 요청 URI를 수정할 수 있으며,이 localhost 경우

+0

감사합니다. – Dave

+1

http : // [사용자의 프록시 주소 및 포트 번호]가 http://127.0.0.1:8888 인 경우 누구나 도움이 될 경우를 대비하여 도구> 피들러에서 포트를 확인/변경할 수 있습니다 옵션 –

4

는 훨씬 더 간단한 해결책이있다.

이 설정은 프록시 설정에 의존하지 않습니다 (또는 <defaultProxy> 요소를 .config 파일에 설정했는지 여부). (this question에 대한 코멘트에서.)