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

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

15.12.2014, 23:27. Показов 6798. Ответов 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
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru