История о том, как Google подсматривал за нашим сайтом и галлюцинировал

История о том, как Google подсматривал за нашим сайтом и галлюцинировал

В 2023-ем году мы узнали, что нейросети могут галлюцинировать. На первый взгляд, это довольно забавное и пока что безобидное явление. Но в этой короткой статье я расскажу, как я столкнулся с галлюцинациями самого Google, и как это чуть не угробило стартап, в котором я работаю.

Три месяца назад я присоединился к проекту из ОАЭ. Нашей задачей было написать сайт, на котором бы выкладывались тексты на трёх языках: на арабском, английском и русском. Задача относительно тривиальная, особенно в сравнении с проектами, над которыми я работал раньше, так что за два месяца мы слепили админку, редакторы начали выкладывать тексты, всё шло по плану.

Первый звоночек

Однажды ко мне стучится менеджер проекта и говорит, что у редактора на арабском некоторые страницы в админке не открываются, а вместо них выходит предупреждение об опасном сайте. Браузер — Edge, ни у кого больше таких проблем нет.

«Странно», подумал я. У нас стек чистый, Symfony + Next JS, никаких трекеров и прочего стороннего мониторинга у нас нет, скачать из админки ничего нельзя, к тому же при деплое проходит дополнительная проверка на подозрительный код.

«Ну наверное потому что для dev‑версии мы пока не сделали HTTPs», подумал я и забил.

Проблема встаёт в полный рост

Прошло несколько недель, мы выкладываем проект в полуоткрытый доступ: теперь сайтом можно было пользоваться без VPN, но всё равно там стояла авторизация, и без аккаунта, который мы выдаём поштучно сами, ничего на сайте увидеть нельзя.

Меньше, чем через 24 часа после того, как мы выложили сайт, менеджер снова нервно стучится ко мне в чат: проблема вновь появилась. Почти с десяток статей не открываются, вместо них показывается красная страница с предупреждением: «сайт может ввести вас в заблуждение и/или вынудить на действия опасного характера». Проблема присутствует во всех браузерах и у всех пользователей.

«В смысле, да как так‑то?». Разрабское чутьё мне подсказывало, что ситуация очень‑очень серьёзная, но в голове не было ни одной идеи, из‑за чего вообще это могло произойти.

Во‑первых: прошло менее 24 часов после того, как сайт стал условно доступен. Чтобы попасть под блокировку так сразу, должны быть очень‑очень серьёзные причины.

Во‑вторых: все страницы с контентом закрыты за авторизацией, то есть условный бот от Google не мог просмотреть контент в принципе. А это значит, что это браузер сам «анализировал» страницы и, как потом выяснится позже, отправлял данные в Google Safe Browsing. По закрытым страницам. Недоступным для неавторизованных пользователей.

В‑третьих: Наш сайт — это Single Page Application, гидрации контента нет, то есть, когда браузер не давал перейти на какую‑то страницу, он не знал наверняка, что на этой странице будет. То есть он «помнил», что эта страница, по его мнению, опасная, и заранее закрывал к ней доступ.

В‑четвёртых: Блокировка на уровне браузера — это что‑то явно из ряда вон выходящее. С сайта ничего нельзя скачать, все фреймворки чистые, никаких сторонних сервисов не используется вообще. За свои 16 лет в Web‑е я ни разу не встречался с подобными ограничениями, и чаще всего, если сайт не нравился Google‑у, он либо понижал, либо вообще убирал его из поисковой выдачи. А тут — сами браузеры не давали перейти на конкретные страницы.

С учётом всего вышеперечисленного, у меня не оставалось ни одной мысли о том, что мы могли сделать не так.

Я погуглил различные статьи на подобную тему, стало ясно, что скорее всего нас режет Google Safe Browsing, и судя по всему, почти все популярные браузеры, включая Edge и Firefox, с ним «советовались». Однако, наш кейс не подходил ни по одному из критериев, которые были перечислены в найденных мною статьях. Зато стало ясно: если не предпринять срочные меры, под блокировкой окажется вообще весь сайт — а то и весь домен, а не только отдельные страницы.

Расследование

Довольно быстро выяснилось, что все статьи, оказавшиеся под блокировкой, были на арабском языке. Их версии на других языках открывались как обычно, браузер на них не жаловался. К тому же в какой‑то момент у моей жены — а она работает backend разработчиком у нас на проекте — предупреждение сменилось на куда более конкретную формулировку: «Фишинговый сайт».

«Ага! Значит им не нравится контент!» — подумал я, и решил посмотреть, что там, собственно, написано в этих статьях. Надо сказать, что я знал ту девушку, которая занималась написанием текстов на арабском, и у меня не было никаких сомнений в её профессионализме. Тем не менее, я включил встроенный в браузере переводчик, и от увиденного мои глаза поползли на лоб:

История о том, как Google подсматривал за нашим сайтом и галлюцинировал

Я протёр свои глаза, перезагрузил страницу, снова включил автоперевод — результат тот же. «Дети.., дети,… убийство в Королевстве,.. дети, дети.. Убийство в Колумбийском университете».

История о том, как Google подсматривал за нашим сайтом и галлюцинировал

«Да этого просто не может быть!» - подумал я, скопировал текст и вставил в Google Translate. В этот раз перевод текста получился правильным, и, разумеется, никаких детей и убийств там не было и в помине. Я стал переходить по другим заблокированным страницам, и везде встроенный переводчик выдавал какую-то невероятную ахинею, разбавленную фразами про убийства и детей.

И всё встало на свои места. Если браузер реально так «видел» эти страницы, что в них внезапно упоминались дети и убийства в конкретных учебных заведениях США, то вообще не удивительно, почему были приняты подобные меры.

Здравый смысл мне быстро подсказал, в чём было дело. Суть такова, что на нашем сайте можно выбирать язык интерфейса, и по умолчанию стоит английский, что в свою очередь значит, что в теге html директива lang=”en”. Но сама статья была на арабском, и в самом контенте мы директиву lang=”ar” не поставили, ограничившись лишь dir=”RTL” (направление текста: справа на лево).

То есть, судя по всему, браузер видел, что html.lang=«en», и целиком интерпретировал страницу как на английском. И видимо проблема заключалась в том, что условная нейросеть, которая интерпретирует текст на английском, вообще не обучалась на арабском алфавите, и при получении на вход большого текста на незнакомом алфавите стала… галлюцинировать!

Проведя несколько тестов я убедился: действительно, с директивой html.lang=”ar” встроенный переводчик переводит статью правильно.

Счастливый конец

Быстро сориентировавшись, мы проставили правильные директивы lang везде, где можно, подали апелляцию в Google Console, подробно объяснив, в чём было дело, и даже выдали им временную учётку, чтобы они могли сами зайти и посмотреть (чего, разумеется, они делать не стали).

В результате все ограничения были сняты на следующий же день. Happy End!

Выводы

  • Директивы lang очень важны.
  • Браузеры мониторят даже те страницы, которые закрыты за авторизацией и VPN. В том числе те браузеры, что не основаны на chromium. Firefox тоже активно "общается" с Google Safe Search
  • При интерпретации страниц используется нейронная сеть, подобная встроенному переводчику в Google Chrome, а то и вовсе прям та же.
  • Если lang страницы не соответствует языку контента, встроенный переводчик может начать галлюцинировать, «увидеть» опасный контент и сообщить куда следует.
  • Галлюцинирующие нейронные сети могут внезапно создать кучу проблем там, где этого ждёшь меньше всего.
6.7K6.7K показов
1K1K открытий
27 комментариев

Это куда-нибудь на Хабр надо.

Ответить

Я как выложил, меня тут же сделали старожилом, и даже предложили партнёрскую программу с платными текстами ))
Но чукча не писать, а читатель.

Ответить

Выложил на прошлой неделе

Ответить

Гугловский движок сейчас используют чуть ли не 90% браузеров. То ли еще будет.

Ответить

назло ему надо сидеть в другом, фф например

Ответить

Очень далека от программирования, но читать про этот случай было увлекательно. Спасибо, что поделились!

Ответить

Комментарий недоступен

Ответить