私は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();
}
私のHtmlDocumentにHTMLをロードした後。私はcaptchaを探しています。 htmlが含まれている場合、私はWebブラウザを開いて同じURLを再度ナビゲートしています。私はcathpaと "thats it" googleが開いていることを確認しています。しかし、30秒後に、私は再びHTMLを取得しようとする場合。それは再びcaptchaのページを示しています。私はもう、Webブラウザーdoesntのショーcapthcaページをそれをテストが、私の要求はまだWHY表示されますか?彼らは、同じローカルホストから同じコンピュータに同じワイファイを要求します。
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私のリクエストメソッドを理解することができますです。例WebBrowserまたはRequestを使用してhtmlを取得します。応答とStream.Äからの読み取りは、WebBrowserではreCAPTCHAを表示しませんが、Requestでは:Response
A:
「ボットチェック」は、それを呼び出すタイミングに関する独自の判断に基づいて実行されます。
私もあなたが掻き集めているサイトがGoogleのreCAPTCHAを具体的に実装していると仮定しました - それは私の間違いです。このサイトは、CAPTCHAに基づいていくつかのチャレンジを提供するボットチェックを呼び出すWAF
( Webアプリケーションファイアウォール )サービスの背後にある可能性があります(またはリクエストを完全に拒否する)。
Hth ...