#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.
Комментариев нет:
Отправить комментарий