#c_sharp #net #веб_программирование #recaptcha
Мне нужно пройти авторизацию на вебсайте средствами 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(' ');
Каким образом я могу вытащить картинки с reCAPTCHA? Старая reCAPTCHA представлялась
по видимому одной картинкой, которую можно было загрузить по такому адресу: http://www.google.com/recaptcha/api/image?c=[challenge
from RecaptchaState]. Что делать с новой, я не знаю. Не особо разбираюсь в веб-программировании.
UPD: Возможно есть иное решение, при котором нам не потребуется получать картинку.
Может быть возможно как то отобразить капчу, чтобы её прошёл пользователь. Что то вроде
WebBrowser, только не всю страницу, а лишь саму капчу, полученную из WebResponse.
Ответы
Ответ 1
Я открываю сайт в 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.
Комментариев нет:
Отправить комментарий