Двое дизайнеров собрали веб-шрифт, который показывает человеку один текст, а в исходном коде страницы оставляет совсем другой — грамматически безупречный и полностью бессмысленный. Читатель видит «лошадь», краулер уносит «картошку». Проект называется ShieldFont, код открыт, пользоваться можно уже сейчас.
Механика до смешного старая. Лигатуры — обычная типографская фича: шрифт замечает в тексте пару букв вроде «fi» и рисует вместо них один слитный глиф. Исаки Сенеда и Габриэл Абрусиу довели идею до абсурда — их шрифт ловит лигатурой не пару букв, а целое слово, и рисует на экране другое.
Дальше всё выворачивается наизнанку. Подмена делается один раз, при сборке страницы: в HTML уходит уже испорченный текст, а шрифт при отрисовке возвращает читателю оригинал. Скрапер, который просто качает исходник, честно уносит ту версию, которую живой человек не увидит никогда.
Когда лошадь становится картошкой
Вся находка — в том, чем именно подменять. Синонимы и антонимы отпадают: умный фильтр отыграет их назад. Сплошной мусор тоже не годится — страница с бессмыслицей палится на раз. Поэтому ShieldFont меняет слово на слово той же части речи, но из совершенно другого смыслового поля: существительное на существительное, глагол на глагол. Лошадь — на картошку. Предложение остаётся грамматически чистым, а смысл в нём — чужой.
Словарь вылизывали три месяца: почти 12 тысяч ходовых слов, в поставке шрифта насчитали 11 962 пары. У каждого слова три варианта подмены на выбор, издатель может добавить свои и менять карту от абзаца к абзацу — чтобы шрифт нельзя было расшифровать один раз и навсегда.
В среднем ShieldFont подменяет 24,5 процента всех слов страницы и 45,8 процента содержательных — тех, что несут смысл. Этого хватает, чтобы смысл поплыл в 31–56 процентах отдельных фрагментов: у новостных текстов ближе к 56, у художественных — около трети.
Главный результат авторы получили на шести публичных скрапер-пайплайнах: больше 90 процентов страниц, которые фильтр качества пропустил бы в обучающую выборку, после обработки шрифтом отбраковываются. А в тех немногих, что всё же проходят, около 20 процентов слов авторы называют мусором для обучения — настоящий английский, без единой опечатки, не утверждающий ничего правдивого. Как формулируют сами создатели: отброшена — значит, они не получили вашу работу; принята — значит, получили что-то неверное.
Цена есть, и немалая. Поисковики получают ровно те же байты, что и скраперы: Googlebot проиндексирует подмену, а это прямой удар по трафику. Копипаст со страницы даёт зашифрованный текст, поиск по странице не находит слово, которое читатель видит глазами. Скринридеры на защищённых кусках спотыкаются — совместимость подтверждена только с VoiceOver, NVDA и JAWS ещё в очереди. RSS-лента по умолчанию утекает чистым текстом.
Да и защита не абсолютная. Всё, что читает человек, прочитает и машина, если отрендерит страницу целиком и пропустит картинку через распознавание текста. Но в этом и весь расчёт: по оценке авторов, предварительный рендеринг обходится в 5–13 раз дороже, чем скачивание сырого HTML. На масштабе миллиардов страниц это уже не обход, а другая экономика.
Годами оборона веба держалась на robots.txt — джентльменском соглашении, которое ИИ-краулеры соблюдают ровно настолько, насколько сами хотят. Потом пошли меры пожёстче: Cloudflare начал по умолчанию резать ИИ-ботов на сайтах клиентов, издатели двинулись в суды, художники — на Glaze и Nightshade, отравляющие изображения. ShieldFont делает тот же разворот для текста: не «не берите», а «берите, только вам это выйдет боком».
Серебряной пули авторы не обещают. Они зовут других делать свои варианты того же принципа — показывать одно людям и другое машинам. Чем больше разных реализаций разбросано по вебу, тем дороже скраперу учиться обходить их все.