HttpWebRequest, WebResponse 및 WebBrowser Differents

c# html-agility-pack httpwebresponse webbrowser-control

문제

나는 winform 응용 프로그램을 가지고 있으며, HTML을 스크랩하고 있습니다. 가끔은 구글이 확인을 위해 captcha 페이지를 리디렉션합니다.

그리고 여기에서 시작하는 문제는 HtmlAgilityPack을 사용하고 HTML을 얻는 것과 같습니다 :

 try
        {
            HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
            request.UserAgent = "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.95 Safari/537.36";
            request.Timeout = 10000;
            WebResponse response = request.GetResponse();
            using (var reader = new StreamReader(response.GetResponseStream(), Encoding.UTF8))
            {
                return reader.ReadToEnd();
            }
        }
        catch (WebException e)
        {
           //Here I am getting captcha page
            using (var sr = new StreamReader(e.Response.GetResponseStream()))
                return sr.ReadToEnd();
        }

내 HtmlDocument에 html을로드 한 후 captcha를 찾고 있습니다. html이 포함되어 있으면 WebBrowser를 열어 동일한 URL을 다시 탐색합니다. 나는 cathpa를 확인하고 "thats it"google이 열려 있습니다. 그러나 30 초 후, 다시 HTML을 얻으려고하면. 다시 captcha 페이지를 보여줍니다. 나는 그것을 테스트, WebBrowser는 더 이상 capthca 페이지를 보여주지 않지만 내 요청은 여전히 보여주고 있습니까? 그들은 같은 localhost에서 동일한 컴퓨터와 동일한 와이파이를 요청합니다.

 var webBrowser1 = new WebBrowser
                     {
                         ScriptErrorsSuppressed = true,
                         AllowNavigation = true,
                         Dock = DockStyle.Fill
                     };
                    BrowserSettings(webBrowser1);

              webBrowser1.Refresh(WebBrowserRefreshOption.Completely);
            //Here I am NOT getting captcha page
                    webBrowser1.Navigate(searchUrl);
                    if (DialogForms == null)
                    {
                        DialogForms = new Form
                        {
                            WindowState = FormWindowState.Maximized,
                            TopMost = true
                        };
                    }
                    DialogForms.Controls.Add(webBrowser1);
                    DialogForms.ShowDialog();

인기 답변

어느 정도 빠른 응답 : reCAPTCHA 가 존재하고 완화 및 / 또는 방지하는 데 도움이되는 이유는 무엇입니까 (강조 표시).

reCAPTCHA는 고급 위험 분석 엔진과 적응 형 보안 문자 를 사용하여 자동화 된 소프트웨어 가 귀하의 사이트에서 악의적 인 활동을하지 않도록합니다.

... 그것은 captcha와의 사용자 참여를 고려한 고급 위험 분석 기술을 사용하고 인간과 봇을 구별 하는 광범위한 신호 평가합니다.


최신 정보:

큐:

하지만 내 질문은 어떻게 reCAPTCHA 내 요청 방법을 이해할 수있다. 예 WebBrowser 나 Request를 통해 HTML을 얻습니다 : 응답과 Stream.Ä 읽기는 WebBrowser에 대해 reCAPTCHA를 표시하지 않지만 요청에 대해서는 응답 : 응답

에이:

  • "봇 검사"는 호출시기에 대한 자체 판단을 기반으로 실행됩니다.

  • 나는 또한 당신이 근근이 다가 가고있는 사이트가 Google의 reCAPTCHA를 구체적으로 구현하고 있다고 가정 합니다. 그건 내 실수입니다. 이 사이트는 CAPTCHA를 기반으로하는 몇 가지 챌린지를 제공하는 봇 체크를 호출하거나 요청을 완전히 거부하는 WAF ( 웹 응용 프로그램 방화벽 ) 서비스 뒤에있을 수 있습니다.

Hth ...



아래 라이선스: CC-BY-SA with attribution
와 제휴하지 않음 Stack Overflow
이 KB는 합법적입니까? 예, 이유를 알아보십시오.
아래 라이선스: CC-BY-SA with attribution
와 제휴하지 않음 Stack Overflow
이 KB는 합법적입니까? 예, 이유를 알아보십시오.