首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >HttpWebRequest、WebResponse和WebBrowser差异

HttpWebRequest、WebResponse和WebBrowser差异
EN

Stack Overflow用户
提问于 2018-08-21 20:09:48
回答 1查看 285关注 0票数 0

我有winform应用程序,我正在刮HTML.Sometimes谷歌重定向我的验证码页面。

问题从这里开始,我正在使用HtmlAgilityPack并获得html,如:

代码语言:javascript
复制
 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,我正在验证是否打开。但30秒后,如果我再试着得到html。又给我看了一页卡普查。我测试它,WebBrowser不再显示capthca页面,但是我的请求仍然显示为什么是?他们都要求同一台本地主机、同一台计算机、相同的wifi。

代码语言:javascript
复制
 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();
EN

回答 1

Stack Overflow用户

发布于 2018-08-21 21:53:56

快速回答:因为您所做的几乎就是reCAPTCHA存在的原因,并且有助于减轻和/或防止(强调我的):

reCAPTCHA使用高级风险分析引擎和自适应CAPTCHA来,以防止自动化软件在您的站点上进行滥用活动。 ...it使用了先进的风险分析技术,考虑到用户对CAPTCHA的整个参与,并对区分人类和机器人的广泛线索进行了评估。

更新:

问:

但我的问题是,怎样才能理解reCAPTCHA我的请求方法。例如,我通过WebBrowser或via Request:Response和从Stream读取html。İt不显示WebBrowser的reCAPTCHA,但对于请求:Response,它显示的是

答:

  • "bot检查“是根据它自己决定何时调用它来运行的。
  • 我还认为,你正在刮的网站是专门实现谷歌的reCAPTCHA -这是我的错误。这个站点很可能是WAF (Web应用防火墙)服务的背后,它将调用基于CAPTCHA的bot检查(或者完全拒绝请求)。

嗯..。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51956013

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档