Параметры HttpWebRequest, WebResponse и WebBrowser

c# html-agility-pack httpwebresponse webbrowser-control

Вопрос

У меня есть winform-приложение, и я очищаю HTML.Sometimes google перенаправить мне 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();
        }

после загрузки html в мой HtmlDocument. Я ищу captcha. Если html содержит, я открываю WebBrowser и снова просматриваю тот же URL. Я проверяю cathpa и «thats it» google открыт. Но через 30 секунд, если я снова попытаюсь получить html. Он снова показывает мне страницу перехватчика. Я тестирую его, WebBrowser больше не показывает страницу capthca, но мой запрос все еще показывает ПОЧЕМУ ? Они оба запрашивают у того же самого локального компьютера тот же самый Wi-Fi ..

 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 и оценивает широкий спектр сигналов, которые отличает людей от ботов .


Обновить:

Q:

но мой вопрос в том, как понять метод запроса reCAPTCHA. Пример. Я получаю html через WebBrowser или через Request: Response и read from Stream.Ä ° t не показывает reCAPTCHA для WebBrowser, но для Request: Response it does

A:

  • «Проверка бота» выполняется на основе собственного определения того, когда его вызывать.

  • Я также предположил , что сайт вы выскабливание реализует ReCaptcha Google, в частности , - это моя ошибка. Этот сайт вполне может оказаться за брандмауэром WAF ( брандмауэром веб-приложений ), который будет вызывать бот-проверки, которые предлагают некоторую проблему на основе CAPTCHA (или прямо отклоняют запрос).

Hth ...



Лицензировано согласно: CC-BY-SA with attribution
Не связан с Stack Overflow
Является ли этот КБ законным? Да, узнайте, почему
Лицензировано согласно: CC-BY-SA with attribution
Не связан с Stack Overflow
Является ли этот КБ законным? Да, узнайте, почему