Вземете изображение за captcha сесия

Искам да получа текущия captcha, който се показва на уебсайт. Пример за това би бил http://top100arena.com/in.asp?id=58978

Как мога да получа връзката към изображението на captcha, която се показва, освен щракване с десен бутон -> отваряне на изображение в нова страница?


person Tyluur    schedule 15.07.2013    source източник
comment
Ако искате да го направите в Java, ще трябва да анализирате страницата и да измислите някаква евристика за определяне дали сте анализирали captcha изображение или просто обикновено изображение.   -  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 програма да работи във фонов режим и всеки път, когато отворите сайт в браузъра си, който има captcha, програмата ще копира 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


Всъщност изглежда, че кутията chapta е 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 текста, но елементът inspect показва повече от 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/ е, че captcha се променя всеки път, когато посетите този URL адрес, така че това няма да е оригиналното изображение от първия път, когато сте посетили страницата с captcha. - person Tyluur; 16.07.2013
comment
Бих казал, че се справете с това! :) Ти си този, който решава проблема тук. Няма да направя всичко вместо теб. - person Martijn Courteaux; 16.07.2013
comment
Това е така, защото не ви давам решение, а набор от съвети, подсказки и инструменти, с които да работите. Сега ги използвайте и направете решението сами. Фактът, че главата се променя, когато презаредите страницата, не е толкова голяма работа. Просто не забравяйте да следите действието на формуляра. - person Martijn Courteaux; 16.07.2013
comment
Това е голяма работа. Не можете да получите текущия captcha на страницата, освен ако не можете да получите текста на инспектиращия елемент. - person Tyluur; 16.07.2013

Опитайте да използвате Firebug във firefox https://addons.mozilla.org/es/firefox/addon/firebug/, Лесен е за използване и в Червената секция ще намерите етикет с име Изображение, там ще намерите изображението.

person Daniel F Jaramillo    schedule 23.04.2015