Мне нужно пройти авторизацию на вебсайте средствами C#. В форме авторизации присутствует reCAPTCHA. Нужно как то её обработать (т.е. вытащить картинки, текст задания и позволить пользователю решить это дело).
Для начала, я вижу пустой div class="g-recaptcha" data-sitekey="...". Отсюда можно взять значение атрибута data-sitekey. Перейдём по ссылке https://www.google.com/recaptcha/api/challenge?k=[data-sitekey value] и загрузится примерно такая страничка:
var RecaptchaState = {
challenge : '...',
server : 'https://www.google.com/recaptcha/api/',
site : '...',
...
};
document.write('<scr'+'ipt type="text/javascript" s'+'rc="' + RecaptchaState.server + 'js/recaptcha.js"></scr'+'ipt>');
Каким образом я могу вытащить картинки с reCAPTCHA? Старая reCAPTCHA представлялась по видимому одной картинкой, которую можно было загрузить по такому адресу: http://www.google.com/recaptcha/api/image?c=[challenge from RecaptchaState]. Что делать с новой, я не знаю. Не особо разбираюсь в веб-программировании.
UPD: Возможно есть иное решение, при котором нам не потребуется получать картинку. Может быть возможно как то отобразить капчу, чтобы её прошёл пользователь. Что то вроде WebBrowser, только не всю страницу, а лишь саму капчу, полученную из WebResponse.
Я открываю сайт в WebBrowser, получаю все картинки с сайта и так нахожу саму картинку капчи:
private void openAndWaitCompliteURL(string url) {
webBrowser.Navigate(url);
while (webBrowser.ReadyState != WebBrowserReadyState.Complete) {
Application.DoEvents();
}
}
private string getImageWhenLoad(string attr) {
HtmlDocument doc = webBrowser.Document;
HtmlElementCollection htmlElementCollection = doc.Images;
foreach (HtmlElement htmlElement in htmlElementCollection) {
string imgUrl = htmlElement.GetAttribute(attr);
return imgUrl;
}
}
openAndWaitCompliteURL(url);
capchaForm.capchaPictureBox.ImageLocation = getImageWhenLoad("src");
После чего вывожу картинку в PictureBox.
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости