2012-08-22 3 views
1

제출 된 URL에 대해 Google 이미지 및 텍스트 결과를 얻는 C# 응용 프로그램을 만들었습니다.프록시를 사용할 때 Google 결과를 얻는 방법

문제는 항상 HTTPWEBREQUEST을 사용하는 URL에서 작동하지만 프록시를 사용할 때 작동하지 않습니다. 302 문서 이동 or 502 서버를 사용할 수없는 것과 같은 오류가 발생합니다.

다시 웹 브라우저 컨트롤을 사용하면 프록시와 함께 작동합니다.

나는

어떤 제안 .. 많은 질문을보고 내 질문에 관한 답변 그러나 아무도 가까이 일치하지 않았다?

답변

0

내 자신의 문제에 대한 해결책을 발견 : 우리는 나는 또한 다른 위치에 따라 여러 URL을 사용되면서이 나를 위해 일한이 .as를 작동하고 적절한 호스트를 만들기 위해 그것을 위해 HTTPS 구글과 프록시를 사용할 필요가

.

public string getHtmltt(string url) 
    { 

     string responseData = ""; 
     try 
     { 
      string host = string.Empty; 

      if (url.Contains("/search?")) 
      { 
       host = url.Remove(url.IndexOf("/search?")); 

       if(host.Contains("//")) 
       { 
        host = host.Remove(0, host.IndexOf("//")).Replace("//","").Trim(); 
       } 
      } 
      HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url); 
      request.Accept = "application/x-ms-application, image/jpeg, application/xaml+xml, image/gif, image/pjpeg, application/x-ms-xbap, application/vnd.ms-excel, application/vnd.ms-powerpoint, application/msword, */*"; 
      request.AllowAutoRedirect = true; 
      request.UserAgent = "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; .NET CLR 1.0.3705;)"; 
      request.Timeout = 60000; 
      request.Method = "GET"; 
      request.KeepAlive = false; ; 


      // request.Host = "www.google.com.af"; 
      request.Host = host; 
      request.Headers.Add("Accept-Language", "en-US"); 

      //request.Proxy = null; 
      // WebProxy prx = new WebProxy("199.231.211.107:3128"); 

      WebProxy prx = new WebProxy(proxies[0].ToString().Trim()); 

      request.Proxy = prx; 
      HttpWebResponse response = (HttpWebResponse)request.GetResponse(); 
      if (response.StatusCode == HttpStatusCode.OK) 
      { 
       Stream responseStream = response.GetResponseStream(); 
       StreamReader myStreamReader = new StreamReader(responseStream); 
       responseData = myStreamReader.ReadToEnd(); 
      } 

      foreach (Cookie cook in response.Cookies) 
      { 
       inCookieContainer.Add(cook); 
      } 
      response.Close(); 



     } 
     catch (System.Exception e) 
     { 
      responseData = "An error occurred: " + e.Message; 

     } 

     return responseData; 

    } 

그리고 지금까지의 작업 GR8 :

이 내 코드입니다.

관련 문제