2014-01-18 1 views
0

요청을 제어 할 수있는 Webbrowser (.Net Webbrowser 컨트롤의 도움으로)를 만들고 싶습니다. 예 : img src를 제거하여 이미지로드를 방지 할 수있었습니다. 그러나 CSS 파일에서 사용되는 이미지 파일에 CSS 파일, js 파일 및 요청에 대한 웹 브라우저 제어 요청을 제한하는 방법을 찾을 수 없습니다. 이 제한은 조건부입니다. 일부 웹 사이트의 경우 모든 것을 자연스럽지 만 일부 웹 사이트의 경우 구성 가능해야합니다.웹 브라우저에서 CSS 파일로 요청 보내기를 방지합니다.

이유 : 서버에 보내는 요청을 줄이고 응답 시간을 늘리며 트래픽을 줄이려합니다.

이미지를로드하지 못하도록 아래 코드를 사용하고 있습니다. 같은 방식으로 CSS 나 다른 파일을 요청할 수없는 논리를 결정할 수 있습니다.

 
private void webBrowser1_ProgressChanged(object sender, WebBrowserProgressChangedEventArgs e) 
     { 
      if (webBrowser1.Document != null) 
      { 
       foreach (HtmlElement imgElemt in webBrowser1.Document.Images) 
       { 
        if (imgElemt.Id == "divImagePath") 
        { 
         continue; 
        } 
        imgElemt.SetAttribute("src", ""); 
       } 
      } 
     } 
+2

이것은 잠재적으로 엄청나게 긴 대답입니다. 지금까지 코딩 한 내용을 게시하고 코드에 대해 특정 질문을 던지십시오. – matt

답변

-1

당신은 System.Net.Http.HttpClientclass가 페이지를 요청하기 위해 사용하는 것이 더 나을 것입니다. 그렇게하면 웹 페이지가 제공됩니다. 당신은 사이트에서 원하는 것을 위해 페이지를 분석 할 수 있으며, 같은 방법으로 요청할 수 있습니다.

HttpClient client = new HttpClient(); 

try 
{ 
    // Make an asynchronous call to get the web page 
    HttpResponseMessage response = await client.GetAsync("http://www.msn.com/"); 
    response.EnsureSuccessStatusCode(); 
    string responseBody = await response.Content.ReadAsStringAsync(); 

    // Do something more useful with the returned page 
    Console.WriteLine(responseBody); 
} 
catch(HttpRequestException e) 
{ 
    Console.WriteLine("\nException Caught!"); 
    Console.WriteLine("Message :{0} ", e.Message); 
} 

// Need to call dispose on the HttpClient object when we 
// are done using it, so the app doesn't leak resources 
client.Dispose(true); 

끌어온 것을 표시해야하는 경우 양식의 WebBrowser 컨트롤에 표시 할 수 있습니다. 그러나 그것은 페이지와 관련된 모든 콘텐츠를 끌어 올 것입니다.

+0

나는 HttpWebRequest에서 좋은 손을 가지고있다. 하지만 WebBrowser 컨트롤로만 솔루션을 원합니다. 답장을 보내 주셔서 감사합니다. –

+0

WebBrowser 컨트롤을 사용하는 것이 전체 웹 브라우저처럼 작동하는 것이 아닌가? 웹 페이지에 필요한 모든 것을 얻는 것도 포함됩니다. 원하는 것을 할 수는 있지만 인터페이스를 너무 많이 오버로드/오버라이드해야 처음부터 다시 시작할 수 있습니다. –

+0

완벽하게 좋습니다. 그러나 나는 어디에서 시작 해야할지 잘 모르겠습니다. 나는 또한 브라우저에서 모든 요청을 얻을 프록시 서버에 대해 생각하고 내가 원하는 요청 만 허용 할 것이다. 하지만 문제는 내가 알고있는 것은 C#이고 어떤 오픈 소스 C# 프록시 서버 코드를 사용할 수 있는지 확실하지 않다는 것입니다. 누구를 아십니까? –

관련 문제