В переводчике от «Яндекса» тюменец обнаружил баг
Объемный текст с символами «Яндекс.Переводчик» озвучивает с заиканием и ошибками. Баг работает только в мобильном приложении.
Ошибка появляется при воспроизведении введенного текста. При наборе большого количества цифр или текста голосовой переводчик озвучивает написанное с заиканием и задержкой.
О проблеме с переводчиком редакции сайта сообщил медиаменеджер Moi-portal.ru Глеб Орехов:
«Для того, чтобы «сломать» переводчик, нужно продублировать фразу около 15-20 раз подряд. Баги начинаются на 20-30 секунде прослушивания».
Пользователи предполагают, что из-за длинного повторяющегося текста у переводчика забивается оперативная память, и он начинает скакать от начала к середине, таким образом путаясь в буквах.
Если ты увидел что-то интересное, выиграл грант или стал очевидцем события, расскажи нам об этом:
Portal072@gmail.com
8 (3452) 68-34-55 /
VK / Telegram
Как сломать Гугл переводчик
Тут скорее можно поржать над неграммотностью автора.
Можно использовать: река Москва, Москва-река, но никак не река-москва. Неудивительно, что переводчик тупит.
раскрыть ветку
6 лет назад
Потому что правильно не река-Москва, а Москва-река.

раскрыть ветку
6 лет назад
Вопрос для теста по русскому языку для иностранцев уровня сложности «Абсолютный ад».
________ стоял ларёк с надписью «ШАВЕРМА».
(А) В Москве на вокзале
(Б) На вокзале в Москве
(В) На московском вокзале
(Г) На Московском вокзале
раскрыть ветку
6 лет назад

раскрыть ветку
Похожие посты
2 года назад
Гугл транслейт в помощь
Сегодня на работе мне позвонил человек с длинююющим номером в вотсапп. Как оказалось Таджикистан. Позвонила девушка и спрашивала вопросы о том, как я понял из ужасно кривого русского, что она хотела узнать, а как бесплатно подать заявку лотерею на Гринкарту в США.
Я объяснил, что есть государственный сайт, я вам его скину и вы там следуйте инструкциям и просто заполните анкету. Объяснил примитивный алгоритм заполнения, ибо мне не сложно помочь в такой ерунде. Она долго «угукала» и в итоге половину не поняла. Я ещё раз решил повторить и потом понял, что и второй раз она не понимает что делать, так как языковой барьер.
Такой думаю, как бы помочь . Говорю ей, сейчас вам напишу инструкцию. Взял на компе заготовленную инструкцию для любителей лотереи и как в ней участвовать на гос сайте. Залил её в гугл транслейт, перевёл на таджикский язык и закинул в чат. Ну банальщина, чего делать то, если человек не понимает. Но девушка так удивилась, что написала мне встречно в чат:
— Вы знаете таджикский? Где выучили?
(решил подыграть и ответить с юмором)
— Мой папа служил в Таджикской ССР и там выучил ваш язык. Поэтому в детстве меня немного обучили ему. Я чего то сразу не решился с вами говорить, ибо плохо говорю.
— Ого, ну вы хорошо говорите на таджикском! Я удивлена! Спасибо вам большое за инструкцию и хорошего дня.
Как мало некоторым надо для удивления. Надеюсь я смог удивить «своим знанием языка» собеседника)))
Взлом Google Translate API 03
20
Google предлагает API перевода Google со структурой затрат на основе использования как часть своего Google Cloud. Существует также недокументированный API, который можно использовать без ключа , но который отказывается работать после нескольких запросов. При использовании функции перевода веб-сайтов в Google Chrome заметно, что страницы можно переводить в очень хорошем качестве без каких-либо заметных ограничений.
Видимо здесь уже используется продвинутая модель nmt . Но какой API использует Google Chrome для внутреннего перевода контента и можно ли обращаться к этому API напрямую — даже на стороне сервера? Для анализа сетевого трафика рекомендуются такие инструменты, как Wireshark или Telerik Fiddler , которые также могут анализировать зашифрованный трафик. Но Chrome даже бесплатно доставляет запросы, которые он отправляет для перевода страницы: их можно легко просмотреть с помощью Chrome DevTools.:

Если вы выполняете перевод, а затем перехватываете важный запрос POST к https://translate.googleapis.com с помощью «Копировать> Копировать как cURL (bash)» и выполняете его в таком инструменте, как Postman , например, вы можете отправить запрос снова без проблем.:

Значение параметров URL также во многом очевидно:

Если вы повторно активируете пользовательский агент (что обычно не причиняет никакого вреда), API доставит символы в кодировке UTF-8.:

Мы уже там и располагаем ли мы всей информацией для использования этого API за пределами Google Chrome? Если вы измените строку для перевода (поле данных q запроса POST), например, с «Hello world» на «Hello world !» «, Мы получаем сообщение об ошибке:

Теперь мы переводим этот измененный еще раз в Google Chrome с помощью функции перевода веб-сайта и обнаруживаем, что, помимо параметра q , также изменился параметр tk (все остальные параметры остались прежними):

Судя по всему, это токен, который зависит от строки, структуру которой непросто увидеть. При запуске перевода сайта загружаются следующие файлы:
- 1 файл CSS: translateelement.css
- 4 графика: translate_24dp.png (2x), gen204 (2x)
- 2 файла JS: main_de.js , element_main.js
Два файла JavaScript обфусцированы и уменьшены. Такие инструменты, как JS Nice и de4js , теперь помогают нам сделать эти файлы более читабельными. Чтобы отлаживать их в реальном времени, мы рекомендуем запрос расширения Chrome , который туннелирует удаленные файлы локально на лету.:

Теперь мы можем отладить код (сначала нужно активировать CORS на локальном сервере). Соответствующий раздел кода для создания токена кажется скрытым в этом разделе файла element_main.js.:
Здесь текст хешируется с помощью битовых сдвигов . Но, к сожалению, нам все еще не хватает одной части головоломки: в дополнение к аргументу a (который является текстом, который нужно перевести), другой аргумент b передается функции Bp () — своего рода начальное число, которое, кажется, время от времени меняется и которое также включает перетекает в хеширование. Но откуда он? Если мы перейдем к вызову функции Bp () , мы найдем следующий фрагмент кода:
Функция Hq заранее объявляется следующим образом:
Здесь Deobfuscater оставил немного мусора; После того, как мы заменили String.fromCharCode (‘. ‘) соответствующими символьными строками, удалим устаревший a () и объединим вызовы функций [c (), c ()] , результат будет:
Функция yq ранее определялась как:
Похоже, что начальное число находится в глобальном объекте google.translate._const._ctkk , который доступен во время выполнения. Но где он установлен? В другом, ранее загруженном JS-файле main_de.js, по крайней мере, он также доступен в начале. Мы добавляем в начале следующее:
В консоли мы фактически получаем текущее семя:

Это оставляет сам Google Chrome, который, по-видимому, предоставляет начальное число, в качестве последнего варианта. К счастью, его исходный код (Chromium, включая компонент Translate) является открытым и поэтому общедоступным. Вытаскиваем репозиторий локально и находим вызов функции TranslateScript :: GetTranslateScriptURL в файле translate_script.cc в папке components / translate / core / browser:
Переменная с URL-адресом жестко определена в том же файле:
Если теперь мы рассмотрим файл element.js более внимательно (после его повторной деобфускации), мы обнаружим жестко установленную запись c._ctkk — объект google.translate также настроен соответствующим образом и запускается загрузка всех соответствующих ресурсов (которые мы уже обнаружили ранее):
Теперь остается рассмотреть ключ параметра (со значением AIzaSyBOti4mM-6x9WDnZIjIeyEU21OpBXqWBgw). Похоже, это общий ключ API браузера (который также можно найти в некоторых результатах Google ). Он установлен в Chromium в файле translate_url_util.cc в папке components / translate / core / browser.:
Ключ создается в google_apis / google_api_keys.cc из фиктивного значения:
Однако тест показывает, что вызовы API работают без этого ключевого параметра. Если вы поэкспериментируете с API, вы вернете код состояния 200 в случае успеха. Если затем вы столкнетесь с ограничением, вы получите код состояния 411 с сообщением « POST-запросы требуют заголовка длины содержимого ». Поэтому рекомендуется включить этот заголовок (который автоматически устанавливается в качестве временного заголовка в Postman).
Формат возврата переведенных строк необычен, когда в одном запросе содержится несколько предложений. Отдельные предложения заключены в теги i- / b-HTML.:

Кроме того, Google Chrome не отправляет весь HTML-код в API, но сохраняет значения атрибутов, такие как href, в запросе (и вместо этого устанавливает индексы, чтобы теги могли позже быть назначены на стороне клиента):

Если вы измените значение клиента ключа POST из te_lib (Google Chrome) в webapp ( веб-сайт Google Translation ) вы получите окончательную переведенную строку:

Проблема в том, что у вас гораздо больше шансов столкнуться с ограничением скорости, чем через te_lib (для сравнения: с webapp это достигается после 40 000 символов, с te_lib ограничения скорости нет). Поэтому нам нужно внимательнее взглянуть на то, как Chrome анализирует результат. Мы найдем его здесь, в element_main.js:
Если вы отправляете весь HTML-код в API, он оставляет атрибуты в переведенном ответе. Поэтому нам не нужно имитировать все поведение синтаксического анализа, а только извлекать последнюю переведенную строку из ответа. Для этого мы создаем небольшой синтаксический анализатор тегов HTML, который отбрасывает самые внешние теги , включая их содержимое, и удаляет самые внешние теги . Обладая этими знаниями (после установки зависимостей с помощью composer require fzaninotto / faker vielhuber / stringhelper ) мы можем теперь создать серверную версию API перевода.:
Ниже приведены результаты первоначального теста, который проводился на пяти разных системах с разной пропускной способностью и IP-адресами.:
| Персонаж | Символов на запрос | Продолжительность | Частота ошибок | Стоимость через официальный API |
| 13.064.662 | ~250 | 03: 36: 17ч | 0% | 237,78€ |
| 24.530.510 | ~250 | 11: 09: 13ч | 0% | 446,46€ |
| 49.060.211 | ~250 | 20: 39: 10 ч | 0% | 892,90€ |
| 99.074.487 | ~1000 | 61: 24: 37ч | 0% | 1803,16€ |
| 99.072.896 | ~1000 | 62: 22: 20ч | 0% | 1803,13€ |
| Σ284.802.766 | ~ Ø550 | Σ159: 11: 37ч | 0% | Σ 5183,41 € |
Примечание: это сообщение в блоге, включающее все сценарии, было написано только для тестовых целей. Не используйте сценарии для продуктивного использования, а не работать с официальным API Google Translation .
Адрес офиса
close2 new media GmbH
Auenstrasse 6
80469 Мюнхен
«Ать-ать»: попросите переводчик прочитать 78945738793857 (и он не поймет, что происходит)
В 2019 году пользователи Siri обнаружили забавный баг голосовой помощницы: если попросить ее произнести что‑то вроде «Ахахахахххахххахахах», то она издаст какие‑то странные, захлебывающиеся и даже пугающие звуки. Оказывается, в российском «Яндекс.Переводчике» можно получить еще более необычный результат.
Пользовательница тиктока @thelizamaps1 опубликовала ролик, в котором голос «Яндекс.Переводчика» зачитывает очень длинную последовательность цифр — 627193939303922928272625… — записанную через знак доллара. Сначала механический голос успешно справляется с ней, но потом запинается и произносит странные и забавные звуки: «ать-ать-ати-ати-ати», «эвэ-эвэ» и «два-о-о-о-о».
Эксперимент можно повторить в домашних условиях: достаточно написать в поле перевода с русского любую, но главное, очень длинную последовательность цифр (можно даже обойтись без символа доллара), а потом нажать на значок зачитывания. Работает это только в «Яндекс.Переводчике» — Google Translate спокойно, но не очень выразительно зачитает число любой длины. Компания «Яндекс» не смогла оперативно прокомментировать необычный глитч в голосе «Переводчика».
