HttpWebRequest,WebResponse和WebBrowser Differents

c# html-agility-pack httpwebresponse webbrowser-control

我有winform應用程序,我正在抓HTML。有時谷歌重定向我驗證碼頁面進行驗證。

從這裡開始的問題我正在使用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();
        }

將html加載到我的HtmlDocument後。我正在尋找驗證碼。如果html包含,我打開WebBrowser並再次導航相同的URL。我正在驗證cathpa和“多數民眾贊成”谷歌是開放的。但是30秒後,如果我再次嘗試獲取HTML。它再次顯示了驗證碼頁面。我測試它,WebBrowser不再顯示capthca頁面,但我的請求仍然顯示為什麼 ?他們都要求從同一個localhost同一台電腦同樣的wifi ..

 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防止自動化軟件在您的網站上進行濫用活動。

......它使用先進的風險分析技術,考慮用戶與CAPTCHA的完全接觸,並評估區分人類與機器人的各種線索。


更新:

問:

但我的問題是,如何理解reCAPTCHA我的請求方法。示例我通過WebBrowser或通過Request:Response獲取html並從Stream.Ä°讀取並不顯示WebBrowser的reCAPTCHA但是對於Request:Response它

A:

  • “機器人檢查”基於它自己確定何時調用它來運行。

  • 我還假設您正在抓取的網站正在專門實施Google的reCAPTCHA - 這是我的錯誤。該站點很可能落後於WAFWeb應用程序防火牆 )服務,該服務將調用基於CAPTCHA(或完全拒絕請求)提供一些挑戰的機器人檢查。

心連心...



許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow
這個KB合法嗎? 是的,了解原因
許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow
這個KB合法嗎? 是的,了解原因