Получить изображение для сеанса капчи


person Tyluur    schedule 15.07.2013    source источник
comment
Если вы хотите сделать это на Java, вам придется проанализировать страницу и придумать какую-то эвристику для определения того, проанализировали ли вы изображение с картинки или просто обычное изображение.   -  person CodeBlind    schedule 16.07.2013
comment
Проблема с анализом страницы заключается в том, что вы получаете следующее: google.com/recaptcha/ api/ Который меняет задание каждый раз, когда вы его открываете, поэтому вы не получите одно и то же задание на странице. Ключ вызова — это то, что отображает изображение здесь: google.com/recaptcha/api. /image?c=#challengekey   -  person Tyluur    schedule 16.07.2013
comment
как вы хотите, чтобы это было сделано? Вы хотите, чтобы ваша java-программа работала в фоновом режиме, и всякий раз, когда вы открываете в своем браузере сайт с капчей, программа копирует URL-адрес в журнал или базу данных или что вы хотите?   -  person Gaurav Sharma    schedule 28.07.2013


Ответы (2)


Вы ищете элемент div, обозначенный "rechapta_image": введите здесь описание изображения

Затем извлеките атрибут src элемента img внутри этого div.

Для этого вы можете выбрать простой способ, основанный на операциях со строками, или использовать библиотеку анализа HTML, например JSoup.

Вот пример такого извлечения URL:

http://www.google.com/recaptcha/api/image?c=03AHJ_VutGj3wvhGoQGxu6FUnG3uOWJdyB2RpSb2N5v9AQJyakMy1kKMPeDoRfADhjAj5rLqekuOzXe3cRChnA_sEN7PL68em4pI_kE3wFKUhhkqFF9jQzKJerX__InwD_DB0Ox1mKQmZVRl97yuSL62tZhYyhSqtuIta-3n0KvytB9QqSn8nXgw8


На самом деле, кажется, что блок глав - это iframe. Поэтому найдите iframe со строкой src, содержащей «chapta». Пример такого iframe:

<iframe src="http://www.google.com/recaptcha/api/noscriptk=6LeyFroSAAAAAJTmR7CLZ5an7pcsS5eJ3wEoWHhJ"
   height="300" width="500" frameborder="0"></iframe><br/>

Итак, как только вы извлекли этот URL-адрес, снова используйте JSoup, чтобы найти URL-адрес изображения. Выбранная страница имеет следующую часть:

введите здесь описание изображения

Итак, найдите центральный элемент и извлеките из него элемент img.

person Martijn Courteaux    schedule 15.07.2013
comment
Как ты заставляешь это проявляться? Этого нет в исходном коде страницы. - person Tyluur; 16.07.2013
comment
В Google Chrome щелкните правой кнопкой мыши и выберите «Проверить элемент». Аналогичная функция доступна в Safari и Firefox. Я думаю, вам нужно включить инструменты разработчика в настройках Safari, если вы используете Safari. - person Martijn Courteaux; 16.07.2013
comment
Используйте JSoup, как я предложил в своем ответе. И используйте Elements div = document.select("div#rechapta_image");, чтобы получить div. - person Martijn Courteaux; 16.07.2013
comment
Распечатка объекта div распечатывается из document.select(div#recaptcha_image). - person Tyluur; 16.07.2013
comment
Да, вы должны получить элемент img внутри, а затем запросить атрибут src. Во время отладки вы можете попробовать document.select("div#rechapta_image").html() и распечатать это. - person Martijn Courteaux; 16.07.2013
comment
Проблема из того, что я вижу, заключается в том, что jsoup получает только текст html, но элемент проверки показывает больше, чем текст html. Просмотр исходного кода веб-сайта не покажет это: ‹img style=display:block; alt=reCAPTCHA challenge image height=57 width=300 src=google.com /recaptcha/api/ - person Tyluur; 16.07.2013
comment
Проблема с анализом google.com/recaptcha/api/ заключается в том, что капча меняется каждый раз, когда вы посещаете этот URL-адрес, поэтому это не будет оригинальное изображение с первого посещения страницы с капчей. - person Tyluur; 16.07.2013
comment
Я бы сказал, смирись с этим! :) Вы тот, кто решает проблему здесь. Я не собираюсь делать все за тебя. - person Martijn Courteaux; 16.07.2013
comment
Это потому, что я даю вам не решение, а набор советов, подсказок и инструментов для работы. Теперь используйте их и сделайте раствор самостоятельно. Тот факт, что глава меняется при перезагрузке страницы, не имеет большого значения. Просто следите за действием формы. - person Martijn Courteaux; 16.07.2013
comment
Это большое дело. Вы не можете получить текущую капчу на странице, если не можете получить текст элемента проверки. - person Tyluur; 16.07.2013

Попробуйте использовать Firebug в Firefox https://addons.mozilla.org/es/firefox/addon/firebug/, он прост в использовании, и в красном разделе вы найдете метку с именем Изображение, там вы найдете изображение.

person Daniel F Jaramillo    schedule 23.04.2015