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合法吗? 是的,了解原因