Сохранить рекапчу

Статус
В этой теме нельзя размещать новые ответы.

strike990

Писатель
Регистрация
24 Ноя 2009
Сообщения
6
Реакции
4
Ребята, начал делать обход рекапчки ( необходимо сохранить капчу и отправить на сайт anti-gate), но столкнулся с проблемой - на доноре - рекапча висит через iframe, поэтому сразу адрес картинки забрать не получается, но и при переходе по урлу в iframe - генерируется новая капча.. Есть какието мысли, как получить капчу, которая уже подгруженна на сайте - доноре??
 
а зачем во время парсинга подгружать ифрейм два раза?
 
  • Заблокирован
  • #3
Я вообще не понимаю зачем что-либо грузить кроме капчи :D
Или там на основной странице есть какие-то генерируемые хидден поля?
Тогда зачем грузить ифрейм в основной странице?
 
iframe подгружается изначально на странице доноре, оттуда вытягиваю урл ифрайма, и перехожу по этому урлу. И получается, что при переходе генерируется новая капча..
П.С. К основной странице обязательное обращение, потому что это уже 2-й этап регистрации.
 
А ты не переходи по урлу, а стягивай его тем же своим скриптом, со всеми заголовками, которые бровзер передает (типа там Referer и пр.). В идеале надо полностью сэмулировать бровзер. Если он не использует яваскрипта или там SO-кук - то это не так уж и сложно.

Если использует - то выход или в OLE-приблудах типа XHE, или возможно твою конечную задачу удастся решить малой кровью через скрипт greasemonkey, подключаемый на ту же страницу.
 
Есть какието мысли, как получить капчу, которая уже подгруженна на сайте - доноре??

А ведь новая капча будет для тебя актуальной. Каждый раз загружая капчу ты её и для себя обновляешь - вводи новую.
 
А ведь новая капча будет для тебя актуальной. Каждый раз загружая капчу ты её и для себя обновляешь - вводи новую.
Как пример, при запросе формы с о скрытыми полями ты сначала грузишь форму, а потом капчу. Кукисы сохраняются же...
 
PHP:
preg_match('#<noscript><iframe frameborder="0" height="300" src="(.*)" width="500">#', $page, $capch_url);

$page = $curl->get($capch_url[1]); $post=$capch_url[1];


preg_match('#<img id="recaptcha_image" width="300" height="57" alt="" src="(.*)">#', $page, $capch_url);
$capch_url='https://api-secure.recaptcha.net'.$capch_url[1];

preg_match('#<input type="hidden" name="recaptcha_challenge_field" id="recaptcha_challenge_field" value="(.*)" />#', $page, $recaptcha_challenge_field);

$page = $curl->get($capch_url);
$file=fopen("capch.jpg", "w");
fwrite ($file, $page);
fclose ($file);

// Распознаем капчу ==>
$code=trim(recognize('capch.jpg', $apikey, $is_verbose, $rtimeout, $mtimeout, $is_phrase, $is_regsense, $is_numeric, $min_len, $max_len));

$page = $curl->post($post, array(
'recaptcha_challenge_field' => $recaptcha_challenge_field[1],
'recaptcha_response_field' => $code,
'submit' => 'I%27m+a+Human'
)
);

preg_match ('#<textarea rows="3" cols="40">(.*)</textarea>#smi', $page, $capch_key);

$fields['recaptcha_challenge_field']=$capch_key[1];
$fields['recaptcha_response_field']='manual_challenge';

Добавлено через 4 минуты
Код ужасно старый...
Но суть думаю поймете...
Сначало получаете адрес фрейма, потом идете по нему...
Там капча, качаете её отправляете на распознание далее отправляете пост на адрес фрейма или... непомню... смотрите код.. далее вам код в textarea парсите и уже на сайте вписываете вместо кода капчи... Да и там ещё какоето поле есть...

А и сейчас рекапча вроде на google базируется :)
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху