Форум программистов, компьютерный форум, киберфорум
PHP: сети
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.63/35: Рейтинг темы: голосов - 35, средняя оценка - 4.63
0 / 0 / 0
Регистрация: 03.01.2014
Сообщений: 13

Как получать легкую капчу от гугла (recaptcha в одно слово? (эмуляция js?)

15.12.2014, 23:27. Показов 6880. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Делаю парсер на php, на целевом сайте гугловская каптча (рекапча), заметил такую особенность - в браузере, режиме noscript выводит сложные кракозябры из 2х слов, а если скрипты включить - то выводится одно, легкочитаемое слово!
Проверял много раз - все дело в исполнении скрипта браузером.

В своем скрипте эмулировал работу браузера - загружал все пакеты из лога браузера (вт.ч. обращения к скриптам), подставляя новую сессию куков и случайный user-agent
Капча выдирается без проблем, но все-такая же жуткая, я её сам с трудом разгадываю!((

В GET запросах вначале идет обращение:
http://www.google.com/recaptch... ha_ajax.js
если сессия новая, то куков нет, только реферер

далее уже идет запрос к
http://www.google.com/recaptcha/api/challenge?k=[идентификатор сайта]
в ответ устанавливаются куки

если скачать содержимое пакета, то там содержится строка challenge (что-то вроде 03AHJ_VusrCLeaM17vSCflm-UqIaXq01XkJwakZ1WjtsXz9hTus3id-aMcOeY6aCpkycWF2C_iLl7dt5XlJxpKNZsPPXJFb eXjUGd2ouHdHRFadn0qHuw1RoBlMQpefueIVQY7h gBim0zgHkDkK9-fmiHWc-Tola07ykOL7OKIOfxxAxrDhYpcKicfUICvgDuKu7 Zieh66ywyOTvqVts_ozIV0BtPRGi6AJg)
, значение которой и дает картинку капчи, но "стремной" вот такой:
Название: image_bad1.jpg
Просмотров: 195

Размер: 2.7 Кб

А дальше браузер делает следующее:
идет запрос на http://www.google.com/recaptch... captcha.js
с передачей полученных куков

потом запрос на адрес (также с куками и реферером):
http://www.google.com/js/th/Iz... 6xxjtqw.js
причем имя этого скрипта каждый раз разное, но раз оно в GET запросе, значит имя его генерится на стороне браузера.
К тому же в "теле" скрипта первой строчкой идет коммент "Anti-spam" так что думаю, это и есть ключевой элемент.

Дальше самое интересное:
браузер отправляет запрос на обновление картинки капчи:
http://www.google.com/recaptcha/api/reload?c= значение аналогичное challange &k= постоянный идентификатор сайта &reason=i&type=image&lang=ru&th=некий длинный идентификатор, уникальный для каждого запроса

Если получить тело пакета, то там простой код, отдающий значение challange для новой картинки.
Которое как само по себе, так и с приставкой значения &th отдает одну и ту же стемную капчу:
Название: image_bad2.jpg
Просмотров: 194

Размер: 3.3 Кб

А вот браузер делает следующий гет запрос на http://www.google.com/recaptcha/api/image?c= [challange]&th=[идентификатор]
куда подставляется challange новой картинки и значение &th= такое же, как в запросе на релоад, и возвращает простую капчу из одного слова:
Название: image_good.jpg
Просмотров: 195

Размер: 1.7 Кб

Вот как так друзья?)) Что за несправедливость?!)
думаю все дело в генерации этого идентификатора &th= , думаю он создается при выполнении скриптов!

Еще раз говорю, повторял много раз - и всегда в браузере вызалиет простая капча, а вручную или через скрипт - сложная.

Возможно кто сталкивался? Думаю решение данной проблемы будет полезно многим!
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
15.12.2014, 23:27
Ответы с готовыми решениями:

Как поменять капчу на recaptcha на Bitrix?
Всем привет! Как поменять капчу с цифрами на recaptcha. Страниц с капчами много, файл, который создает капчу называется captha.php. Можно...

Как правильно получить капчу (recaptcha)
Всем привет! Хочу написать клиент для одного форума, авторизацию написал, хочу еще добавить встроенную регистрацию форум на движке...

Как вытянуть ссылку на капчу recaptcha?
как достать ссылку из атрибута src, если при обновлении сайта она меняется и количество символов всегда разное (в сети нашел примеры...

6
 Аватар для Standard user
8 / 6 / 3
Регистрация: 11.01.2013
Сообщений: 22
24.02.2015, 16:36
Тоже сильно интересует данный вопрос, может у кого появились наработки? За дельный совет мог бы отблагодарить в раёне 20-30 вмз. Как упомянул ТС, финальный гет запрос, который скачает капчу, выглядит так:
http://www.google.com/recaptcha/api/image?c= [challenge]&th=[идентификатор]
например:
[img]http://i.**********/WQDrv4s.png[/img]
Единственный вопрос - как вытащить последний параметр, &th=[идентификатор] ? Видимо, он генерится в этих двух JS файлах:
Первый файл:
https://www.google.com/js/th/R... 2MkxN_s.js
Содержимое:
http://pastebin.com/AHckhaY3

Второй:
https://www.google.com/recaptc... captcha.js
Содержимое:
http://pastebin.com/yBqfgM7s

Опять, как упомянул ТС, решение данной проблемы будет полезно многим.
0
F́́́́́́́ŕ́́́́́́́é́́́ ́ak
 Аватар для Tatikoma
260 / 224 / 109
Регистрация: 07.07.2014
Сообщений: 965
25.02.2015, 13:35
Там все довольно просто =)

JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
y.prototype.N = function(a, b, c, d, e, h, l, n, m, z, q) {
    if (this.q)
        return this.q;
    try {
        // вот тут оно высчитывается и складуется в переменную m
        if (this.F = false, b = this.a(this.d).length, c = this.a(this.h).length, d = this.a(this.k), this.c[this.B] && L(this, this.a(this.B)), e = this.a(this.g), 0 < e.length && B(this, this.d, C(e.length, 2).concat(e), this.aa), h = this.a(this.A) & 255, h -= this.a(this.d).length + 5, l = this.a(this.h), 4 < l.length && (h -= l.length + 3), 0 < h && B(this, this.d, C(h, 2).concat(w(h)), this.ca), 4 < l.length && B(this, this.d, C(l.length, 2).concat(l), this.da), n = w(2).concat(this.a(this.d)), n[1] = n[0] ^ 241, window.btoa ? (z = window.btoa(M(n)), m = z = z.replace(/\+/g, "-").replace(/\//g, "_").replace(/=/g, "")) : m = void 0, m)
            m = "," + m;
        else
            for (m = "", e = 0; e < n.length; e++)
                q = n[e][this.M](16), 1 == q.length && (q = "0" + q), m += q;
        this.a(this.d).length = b, this.a(this.h).length = c, u(this, this.k, d), this.F = true, a = m
    } catch (v) {
        x(this, v), a = this.q
    }
    return a
}
Очевидно код прогнали не просто обфускатором, но и каким-то оптимизатором (где вы видели программиста, использующего так оператор запятой?). Давать ссылки на пожатый JS - довольно бесполезно, статическим анализом там ничего не разобрать, смотреть в отладчике нужно.

Смысл в том, что разбирать это - довольно бесполезная задача (и трудоемкая, т.к. нужно отлавливать откуда оно берет свои параметры) - гугл может изменить этот алгоритм в любой момент без особых усилий. Почему бы просто не использовать PhantomJS ?

Не по теме:

PS: 100$

0
 Аватар для Standard user
8 / 6 / 3
Регистрация: 11.01.2013
Сообщений: 22
25.02.2015, 13:48
Tatikoma, благодарен за ответ. Т.к. с JS нет почти никакого опыта, пока непонятно, откуда берутся "ингредиенты" для этой чертовой переменной м, но надеюсь, разберусь. За PhantomJS тоже спасибо, посмотрю. Отблагодарить могу, но на данный момент нет вмз, может биткоины соидут? Если да, кинь кошелек, если нет, поменяю на вмз.
0
F́́́́́́́ŕ́́́́́́́é́́́ ́ak
 Аватар для Tatikoma
260 / 224 / 109
Регистрация: 07.07.2014
Сообщений: 965
25.02.2015, 14:00
Цитата Сообщение от Standard user Посмотреть сообщение
с JS нет почти никакого опыта, пока непонятно, откуда берутся "ингредиенты" для этой чертовой переменной м, но надеюсь, разберусь
Не разберетесь. Без опыта - нереально.

Не по теме:

Цитата Сообщение от Standard user Посмотреть сообщение
может биткоины соидут?
Сойдут, если есть сумма эквивалентная 100$ по курсу: тогда все разберу и предоставлю пхп-код.



Хотя в этом случае, я все же советовал бы использовать PhantomJS, - в перспективе более хорошее решение.
0
 Аватар для Standard user
8 / 6 / 3
Регистрация: 11.01.2013
Сообщений: 22
25.02.2015, 14:07
Спс, пхп код ненужен, пишу десктопное приложение. Как упомянул, отблагодарить могу в районе $20-30
0
F́́́́́́́ŕ́́́́́́́é́́́ ́ak
 Аватар для Tatikoma
260 / 224 / 109
Регистрация: 07.07.2014
Сообщений: 965
25.02.2015, 16:21
Standard user, ну раз реверсить ничего не надо - то и благодарность не требуется :-)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
25.02.2015, 16:21
Помогаю со студенческими работами здесь

Как прикрутить капчу от гугла
Привет. И видео смотрели сайтов кучу пролазил. Не понять как-да что. Максимум что получилось это то что она появилась возле кнопки и всё...

Отправка ответа на капчу ReCaptcha
Всем привет. Имеется сайт, на нем нужно ввести капчу ReCaptcha. Я смог выкачать капчу на компьютер(не уверен что правильно): У сайта...

Не работает recaptcha от гугла в wordpress
Вставить-то капчу в форму труда не составило, но я уже более суток бьюсь с тем, чтобы она работала. форме просто всё равно, что галочка не...

Как склеивать несколько изображений и получать на выходе одно
Изображений много, для баннеров нужно брать по 2-5 и склеивать в одно длинное вертикальное, подскажите, какими средствами это вообще можно...

ReCAPTCHA внедрение. Как подключить reCAPTCHA от Google
Здравствуйте! Нашел интересный обработчик формы обратной связи, переписал. Работало нормально, но в один момент решил я установить...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
Отчёт о спецтехнике находящейся в ремонте
Maks 20.04.2026
Отчёт из решения ниже размещен в конфигурации КА2. Задача: отобразить спецтехнику, которая на данный момент находится в ремонте. Есть нетиповой документ "Заявка на ремонт спецтехники" который. . .
Памятка для бота и "визитка" для читателей "Semantic Universe Layer (Слой семантической вселенной)"
Hrethgir 19.04.2026
Сгенерировано для краткого описания по случаю сборки и компиляции скелета серверного приложения. И пусть после этого скажут, что статьи сгенерированные AI - туфта и не интересно. И это не реклама -. . .
Запрет удаления строк ТЧ документа при определенном условии
Maks 19.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "Аккумуляторы", разработанного в конфигурации КА2. У данного документа есть ТЧ, в которой в зависимости от прав доступа. . .
Модель заражения группы наркоманов
alhaos 17.04.2026
Условия задачи сформулированы тут Суть: - Группа наркоманов из 10 человек. - Только один инфицирован ВИЧ. - Колются одной иглой. - Колются раз в день. - Колются последовательно через. . .
Мысли в слух. Про "навсегда".
kumehtar 16.04.2026
Подумалось тут, что наверное очень глупо использовать во всяких своих установках понятие "навсегда". Это очень сильное понятие, и я только начинаю понимать край его смысла, не смотря на то что давно. . .
My Business CRM
MaGz GoLd 16.04.2026
Всем привет, недавно возникла потребность создать CRM, для личных нужд. Собственно программа предоставляет из себя базу данных клиентов, в которой можно фиксировать звонки, стадии сделки, а также. . .
Знаешь почему 90% людей редко бывают счастливыми?
kumehtar 14.04.2026
Потому что они ждут. Ждут выходных, ждут отпуска, ждут удачного момента. . . а удачный момент так и не приходит.
Фиксация колонок в отчете СКД
Maks 14.04.2026
Фиксация колонок в СКД отчета типа Таблица. Задача: зафиксировать три левых колонки в отчете. Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка) / / . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru