【发布时间】:2019-01-28 01:47:54
【问题描述】:
我有 winform 应用程序,我正在抓取 HTML。有时 google 会重定向我的验证码页面以进行验证。
问题从这里开始,我正在使用 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 并且“就是这样”google 已打开。但是 30 秒后,如果我再次尝试获取 html。它再次向我显示验证码页面。我测试它,WebBrowser 不再显示 capthca 页面,但我的请求仍然显示 WHY ?他们都从相同的本地主机请求相同的计算机相同的 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();
【问题讨论】:
标签: c# webbrowser-control html-agility-pack httpwebresponse