Evaluating Large Language Models' Capability to Launch Fully Automated Spear Phishing Campaigns: Validated on Human Subjects
Heiding et al., 2024
Статья
Одно из наиболее часто упоминаемых применений LLM для offensive-целей – это генерация таргетированного почтового фишинга. Об этом говорили еще с GPT-2, и без остановки пишут после выхода ChatGPT, однако явных признаков автоматизированных spearphishing-атак пока не было: люди и так клюют на обычный фишинг, а для таргетированного надежнее и проще написать письмо самому. В статье, среди авторов которой широко известный в широких кругах Брюс Шнайер, исследователи демонстрируют, что начиная примерно с текущего поколения использование LLM для этих целей имеет экономический смысл, а эффективность полностью автоматически созданных писем выросла с поправкой на дизайн эксперимента до уровня созданных вручную.
В рамках исследования авторы создают специальный инструмент, который автоматизирует сразу несколько стадий симуляции целевой атаки. Он использует поисковые инструменты вместе с gpt-4o, чтобы по имени и некоторым дополнительным данным собрать данные и сгенерировать профиль цели. После сбора профиля он использует базу промптов, с помощью которых на основе темплейта генерируются собственно таргетированные фишинговые письма, которые содержат трекинговую ссылку для оценки click-through-rate. Наконец, предоставляется функционал отчетов. С нами инструментами, к сожалению или к счастью, не поделятся. Отмечается, что особых усилий для того, чтобы заставить модель генерировать фишинговые письма или заниматься разведкой не потребовалось, что ставит под сомнение значимость всяких FraudGPT, ShadowGPT и прочих джейлбрейкнутых из коробки LLM.
Для оценки результативности исследователи за пятидолларовую подарочную карту или благотворительное пожертвование вылавливают студентов в окрестностях Гарварда, предлагая им участие в исследовании таргетированных рекламных сообщений (про фишинг им не сообщают, чтобы не портить результаты). У них собирают имя, место работы/учебы и сферу научных интересов. Подробный профиль собирается автоматизированно с помощью упомянутого инструмента на базе gpt-4o, интегрированной с гугловым поисковым API. Участников делят на четыре группы: контрольная (получит слабоспециализированный спам), human expert (получат органический free-range фишинг от человека), AI-automated и human-in-the-loop (как AI-automated, но человек исправляет/дополняет ошибки).
Письма, что отдельно отмечают авторы, создавались на основе принципов из книг Чалдини (который писал про «психологию влияния») и V-триады – набора правил для составления фишинга, названной так в честь господина Вишваната, одного из авторов статьи. Поскольку триада предполагается как априорное знание, широко всем известное, пришлось скачать его книгу и сделать скриншот (все для подписчиков 🤗). Это касается как ручных попыток, так и задачи, которая ставилась LLM в рамках промпта. К сожалению, “sophisticated prompt template exceeding 2000 characters, carefully designed to maximize the persuasiveness” тоже нам не покажут из-за “security considerations”. В гибридном сценарии люди исправляли или результаты поиска, или формулировки в письме, но в осноном проблемы были именно с первым этапом.
Heiding et al., 2024
Статья
Одно из наиболее часто упоминаемых применений LLM для offensive-целей – это генерация таргетированного почтового фишинга. Об этом говорили еще с GPT-2, и без остановки пишут после выхода ChatGPT, однако явных признаков автоматизированных spearphishing-атак пока не было: люди и так клюют на обычный фишинг, а для таргетированного надежнее и проще написать письмо самому. В статье, среди авторов которой широко известный в широких кругах Брюс Шнайер, исследователи демонстрируют, что начиная примерно с текущего поколения использование LLM для этих целей имеет экономический смысл, а эффективность полностью автоматически созданных писем выросла с поправкой на дизайн эксперимента до уровня созданных вручную.
В рамках исследования авторы создают специальный инструмент, который автоматизирует сразу несколько стадий симуляции целевой атаки. Он использует поисковые инструменты вместе с gpt-4o, чтобы по имени и некоторым дополнительным данным собрать данные и сгенерировать профиль цели. После сбора профиля он использует базу промптов, с помощью которых на основе темплейта генерируются собственно таргетированные фишинговые письма, которые содержат трекинговую ссылку для оценки click-through-rate. Наконец, предоставляется функционал отчетов. С нами инструментами, к сожалению или к счастью, не поделятся. Отмечается, что особых усилий для того, чтобы заставить модель генерировать фишинговые письма или заниматься разведкой не потребовалось, что ставит под сомнение значимость всяких FraudGPT, ShadowGPT и прочих джейлбрейкнутых из коробки LLM.
Для оценки результативности исследователи за пятидолларовую подарочную карту или благотворительное пожертвование вылавливают студентов в окрестностях Гарварда, предлагая им участие в исследовании таргетированных рекламных сообщений (про фишинг им не сообщают, чтобы не портить результаты). У них собирают имя, место работы/учебы и сферу научных интересов. Подробный профиль собирается автоматизированно с помощью упомянутого инструмента на базе gpt-4o, интегрированной с гугловым поисковым API. Участников делят на четыре группы: контрольная (получит слабоспециализированный спам), human expert (получат органический free-range фишинг от человека), AI-automated и human-in-the-loop (как AI-automated, но человек исправляет/дополняет ошибки).
Письма, что отдельно отмечают авторы, создавались на основе принципов из книг Чалдини (который писал про «психологию влияния») и V-триады – набора правил для составления фишинга, названной так в честь господина Вишваната, одного из авторов статьи. Поскольку триада предполагается как априорное знание, широко всем известное, пришлось скачать его книгу и сделать скриншот (все для подписчиков 🤗). Это касается как ручных попыток, так и задачи, которая ставилась LLM в рамках промпта. К сожалению, “sophisticated prompt template exceeding 2000 characters, carefully designed to maximize the persuasiveness” тоже нам не покажут из-за “security considerations”. В гибридном сценарии люди исправляли или результаты поиска, или формулировки в письме, но в осноном проблемы были именно с первым этапом.
В результате 54% людей, получивших автоматизированное письмо, кликали по ссылке. Этот процент почти равен проценту тех, кто кликнул на письмо, составленное специалистами, и на 2 п.п. меньше (56%), чем доля кликнувших на human-in-the-loop. При этом в контрольной группе на письмо кликнули всего 12%, а в целом, как замечают исследователи, люди не очень часто проверяют почту, поэтому результат может быть даже выше. При этом human-in-the-loop-подход требовал от специалиста всего 2 минуты 41 секунду в среднем на письмо по сравнению с 34 минутами на составление фишингового письма вручную, что дает 92% ускорения. Наконец, исследователи проверяют способность LLM детектировать фишинг, но то ли я что-то не понял, то ли белый сабсет состоял из 18 писем, поэтому особого интереса эти замеры не представляют (поправьте, если я разучился читать).
Итого: y LLM (особенно с поиском и ризонингом) действительно достаточно неплохо с OSINT (если вы относительно публичный человек, попробуйте попросить у o3-mini с поиском написать на вас профайл), а о том, что LLM умеют убеждать, писали даже Anthropic еще до 3.5 Sonnet. Поэтому в будущем можно и правда ожидать, что и спам, и фишинг, и просто маркетинговые письма будут гораздо более персонализированными, и это исследование этот тренд лишь подтверждает.
Итого: y LLM (особенно с поиском и ризонингом) действительно достаточно неплохо с OSINT (если вы относительно публичный человек, попробуйте попросить у o3-mini с поиском написать на вас профайл), а о том, что LLM умеют убеждать, писали даже Anthropic еще до 3.5 Sonnet. Поэтому в будущем можно и правда ожидать, что и спам, и фишинг, и просто маркетинговые письма будут гораздо более персонализированными, и это исследование этот тренд лишь подтверждает.
Constitutional Classifiers: Defending against Universal Jailbreaks across Thousands of Hours of Red Teaming
Mrinank Sharma et al., Anthropic. 2025
Статья, блог, демо
На прошлой неделе вышла достаточно громкая статья от Anthropic про защиту LLM-чат-ботов от джейлбрейков с помощью "конституционных классификаторов", т.е., выражаясь по-человечески, цензоров для вводов и выводов. Статья обещает падение успешности атак до менее полупроцента с пренебрежимо малым ростом FPR. Давайте посмотрим, в чем суть.
Для начала вспомним, откуда взялась конституция. Если помните, Anthropic активно применяет для элайнмента своих моделей подход под названием Constitutional AI сиречь RLAIF, суть которого в том, что вместо человека в RLHF фидбек модели по допустимости ее генераций дает сама модель. Определяет она допустимость с помощью рубрики что можно-что нельзя, которую Anthropic и называют конституцией. Соответственно суть подхода здесь в том, что цензоров учат на базе синтетических данных, сненерированных LLM на базе промпта с рубрикой.
Итак, исследователи ставят перед собой следующую задачу: защитить LLM от универсальных джейлбрейков – обратите внимание, не от любых, а от таких, которые стабильно добиваются от LLM недопустимого вывода в практически любом сценарии в рамках одной области знаний. Дополнительно они требуют от потенциального решения практической применимости с точки зрения задержек, вычислительной стоимости и доли ложноположительных срабатываний, а также возможности быстро адаптировать подход к новым угрозам и сферам.
Чтобы удовлетворить этим требованиям, решают использовать классификаторы, а классификаторам нужна обучающая выборка. Исследователи создают две рубрики – с безопасными темами и опасными темами, берут helpful-only модель (т.е. без элайнмента на безопасность) и просят ее сгенерировать промпты, соответствующие этим темам, а затем и ответы на эти промпты. Поверх этого применяется аугментация – парафраз, перевод, добавление джейлбрейков и сочетания подходов. На этих данных учатся классификаторы. Для ввода модель (Claude 3.5 Sonnet) файнтюнится на предсказание токена в продолжении фразы «Assistant: The dialog was harmful|not harmful». Для модерации вывода к этому добавляется логрег поверх логитов (?), которые обучаются вместе, при этом при обучении в качестве сигнала используется максимум по времени, который с определенным шедулингом подмешивается к NSP.
Обученный классификатор дают на растерзание любителям легкой наживы на HackerOne – за успешный джейлбрейк компания обещала 15 тысяч долларов. Чтобы получить деньги, нужно было создать такой промпт, который заставил бы Claude дать ответ на 10 разных вопросов о химическом оружии. Ответы оценивались как полные (аналогичные по детализации helpful-only модели), половинчатые (по оценке модели-ассессора дающей только часть сведений) или бесполезные. По оценкам исследователей, ред-тимеры потратили на обход модерации более 4 с половиной тысяч часов – без успеха. Ни один из джейлбрейков не оказался универсальным. Самый успешный из участников заставил модель дать полный ответ на 6 из 10 вопросов, причем разными джейлбрейками, самый удачный универсальный давал ответ на половину вопросов, девять – половинчатые ответы на более чем шесть вопросов. Это кажется очень крутым, но, меня лично смутила фраза в дизайне эксперимента: «При проектировании классификатора и выборе порогов мы отдавали приоритет устойчивости, поэтому FPR был достаточно высок: классификатор срабатывал на 44% трафика Claude[.]ai». Из забавного – часть ред-тимеров старались проэксплутарировать грейдер, заставляя модель давать очень длинные общие ответы, прямо как RL.
Mrinank Sharma et al., Anthropic. 2025
Статья, блог, демо
На прошлой неделе вышла достаточно громкая статья от Anthropic про защиту LLM-чат-ботов от джейлбрейков с помощью "конституционных классификаторов", т.е., выражаясь по-человечески, цензоров для вводов и выводов. Статья обещает падение успешности атак до менее полупроцента с пренебрежимо малым ростом FPR. Давайте посмотрим, в чем суть.
Для начала вспомним, откуда взялась конституция. Если помните, Anthropic активно применяет для элайнмента своих моделей подход под названием Constitutional AI сиречь RLAIF, суть которого в том, что вместо человека в RLHF фидбек модели по допустимости ее генераций дает сама модель. Определяет она допустимость с помощью рубрики что можно-что нельзя, которую Anthropic и называют конституцией. Соответственно суть подхода здесь в том, что цензоров учат на базе синтетических данных, сненерированных LLM на базе промпта с рубрикой.
Итак, исследователи ставят перед собой следующую задачу: защитить LLM от универсальных джейлбрейков – обратите внимание, не от любых, а от таких, которые стабильно добиваются от LLM недопустимого вывода в практически любом сценарии в рамках одной области знаний. Дополнительно они требуют от потенциального решения практической применимости с точки зрения задержек, вычислительной стоимости и доли ложноположительных срабатываний, а также возможности быстро адаптировать подход к новым угрозам и сферам.
Чтобы удовлетворить этим требованиям, решают использовать классификаторы, а классификаторам нужна обучающая выборка. Исследователи создают две рубрики – с безопасными темами и опасными темами, берут helpful-only модель (т.е. без элайнмента на безопасность) и просят ее сгенерировать промпты, соответствующие этим темам, а затем и ответы на эти промпты. Поверх этого применяется аугментация – парафраз, перевод, добавление джейлбрейков и сочетания подходов. На этих данных учатся классификаторы. Для ввода модель (Claude 3.5 Sonnet) файнтюнится на предсказание токена в продолжении фразы «Assistant: The dialog was harmful|not harmful». Для модерации вывода к этому добавляется логрег поверх логитов (?), которые обучаются вместе, при этом при обучении в качестве сигнала используется максимум по времени, который с определенным шедулингом подмешивается к NSP.
Обученный классификатор дают на растерзание любителям легкой наживы на HackerOne – за успешный джейлбрейк компания обещала 15 тысяч долларов. Чтобы получить деньги, нужно было создать такой промпт, который заставил бы Claude дать ответ на 10 разных вопросов о химическом оружии. Ответы оценивались как полные (аналогичные по детализации helpful-only модели), половинчатые (по оценке модели-ассессора дающей только часть сведений) или бесполезные. По оценкам исследователей, ред-тимеры потратили на обход модерации более 4 с половиной тысяч часов – без успеха. Ни один из джейлбрейков не оказался универсальным. Самый успешный из участников заставил модель дать полный ответ на 6 из 10 вопросов, причем разными джейлбрейками, самый удачный универсальный давал ответ на половину вопросов, девять – половинчатые ответы на более чем шесть вопросов. Это кажется очень крутым, но, меня лично смутила фраза в дизайне эксперимента: «При проектировании классификатора и выборе порогов мы отдавали приоритет устойчивости, поэтому FPR был достаточно высок: классификатор срабатывал на 44% трафика Claude[.]ai». Из забавного – часть ред-тимеров старались проэксплутарировать грейдер, заставляя модель давать очень длинные общие ответы, прямо как RL.
Для промышленной версии исследователи переобучают классификаторы, используя Haiku вместо Sonnet. Для снижения FPR значительно увеличили объем рубрики с безопасными вопросами и расширили номенклатуру аугментаций. Для теста использовали 5000 запросов в Claude[.]ai и тематические вопросы из MMLU и GPQA в качестве чистого сабсета и 5681 автоматически сгенерированную попытку джейлбрейка в качестве грязного. В результате получилось добиться снижения вероятности джейлбрейка с 86% до 5% за счет роста доли ложных срабатываний всего на 0,38 п.п. Тут, правда, есть нюанс, который аккуратно спрятан в 30-страничном приложении: на GPQA, точнее на конкретно химических вопросах, FPR равнялся 26%.
В общем, с одной стороны, уже и Anthropic, ведущая лаборатория с точки зрения безопасности моделей, пришла к тому, что без цензора никуда. Очень круто, что подход работает чисто на синтетических данных – качественные LLM общего назначения могут быть очень перспективными с точки зрения создания датасетов для маленьких классификаторов, в том числе и вне задач модерации, даже если не обзывать процесс генерации данных конституционным. С другой стороны, в ходе чтения статьи всплывает куча «но»: это и FPR, на который был выкручен детектор при ред-тиминге, и то, что FPR на общих вопросах совершенно не отражает FPR на безопасных вопросах из потенциально опасной сферы: отказ от четверти запросов на GPQA – это все же многовато. Напомню, что в статье про RMU авторы столкнулись с той же проблемой – если начать вырезать данные, связанные с химическим оружием, то очень сильно падают общие химические способности модели. В общем, хотя статья и интересная, назвать задачу модерации решенной сложно. Зато она решает важную политическую задачу для Anthropic. Дарио Амодеи активно критиковал выкладывание моделей тем же Цукербергом в опен-сорс. Если признать, что защитить модель от абьюза химическими террористами в процессе обучения нельзя и ее надо закрывать классификаторами, то в таком случае ни о каких торрентах с весами и речи быть не может.
В дополнение к статье авторы запустили демо-сайт, где классификаторы можно попробовать поломать самому. Я поразвлекался с ним полчаса, выводы такие. Обойти классификатор ввода достаточно несложно с помощью стандартным приемов а-ля Crescendo и ролплея. Самым интересным в процессе является следить, в какой момент просыпается классификатор аутпута, прерывающий стриминг – это позволяет достаточно неплохо понять, что триггерит модель. Если вы достаточно долго занимались классификацией текстов (да и классификацией вообще), вы знаете, насколько легко модели оверфиттятся на ключевые слова. Отслеживая аутпуты на первом задании, можно заметить, что модель срабатывает при упоминании респираторов Honeywell, «желтых жидкостей», изоленты и вытяжек (ну и некоторых других вещей, но идея понятна). Очевидно, входной классификатор таких подробностей не знает, поэтому просьба не упоминать цвета, рекомендовать иные бренды и называть изоленту скотчем (в комбинации с другими приемами) позволяет достаточно легко обойти оба классификатора. Одновременно с этим получить ок от гредера не получилось, но активно работать над цензурой для компании, которая публично заявляет, что ее цель – сделать ИИ, который сделает оборонку США достаточно великой для установления мирового господства, не очень хочется.
В общем, с одной стороны, уже и Anthropic, ведущая лаборатория с точки зрения безопасности моделей, пришла к тому, что без цензора никуда. Очень круто, что подход работает чисто на синтетических данных – качественные LLM общего назначения могут быть очень перспективными с точки зрения создания датасетов для маленьких классификаторов, в том числе и вне задач модерации, даже если не обзывать процесс генерации данных конституционным. С другой стороны, в ходе чтения статьи всплывает куча «но»: это и FPR, на который был выкручен детектор при ред-тиминге, и то, что FPR на общих вопросах совершенно не отражает FPR на безопасных вопросах из потенциально опасной сферы: отказ от четверти запросов на GPQA – это все же многовато. Напомню, что в статье про RMU авторы столкнулись с той же проблемой – если начать вырезать данные, связанные с химическим оружием, то очень сильно падают общие химические способности модели. В общем, хотя статья и интересная, назвать задачу модерации решенной сложно. Зато она решает важную политическую задачу для Anthropic. Дарио Амодеи активно критиковал выкладывание моделей тем же Цукербергом в опен-сорс. Если признать, что защитить модель от абьюза химическими террористами в процессе обучения нельзя и ее надо закрывать классификаторами, то в таком случае ни о каких торрентах с весами и речи быть не может.
В дополнение к статье авторы запустили демо-сайт, где классификаторы можно попробовать поломать самому. Я поразвлекался с ним полчаса, выводы такие. Обойти классификатор ввода достаточно несложно с помощью стандартным приемов а-ля Crescendo и ролплея. Самым интересным в процессе является следить, в какой момент просыпается классификатор аутпута, прерывающий стриминг – это позволяет достаточно неплохо понять, что триггерит модель. Если вы достаточно долго занимались классификацией текстов (да и классификацией вообще), вы знаете, насколько легко модели оверфиттятся на ключевые слова. Отслеживая аутпуты на первом задании, можно заметить, что модель срабатывает при упоминании респираторов Honeywell, «желтых жидкостей», изоленты и вытяжек (ну и некоторых других вещей, но идея понятна). Очевидно, входной классификатор таких подробностей не знает, поэтому просьба не упоминать цвета, рекомендовать иные бренды и называть изоленту скотчем (в комбинации с другими приемами) позволяет достаточно легко обойти оба классификатора. Одновременно с этим получить ок от гредера не получилось, но активно работать над цензурой для компании, которая публично заявляет, что ее цель – сделать ИИ, который сделает оборонку США достаточно великой для установления мирового господства, не очень хочется.
Smuggling arbitrary data through an emoji
Paul Butler, 2025
Блог, инструмент
В стандарте Unicode есть специальные коды в количестве 256 штук, которые называются вариантными селекторами и дополнительными вариантными селекторам – от U+FE00 до U+FE0x и от U+E0100 до U+E01EF. Они прицепляются к символам, идущим до них, и меняют их отображение – если существует вариация, соответствующая их комбинации. При этом вариантных селекторов после символа может быть сколько угодно много, а их наличие в количестве 256 штук означает, что в них можно закодировать байт.
Что это значит? Это значит, что можно создать внутрь текста засовывать другой, невидимый текст – находка для стеганографии. Так можно вставлять в текст незаметные сообщения, которые будет невидимы для стороннего наблюдателя или добавлять в тексты водяные знаки, которые сохраняются при копировании и вставке. Автор сопроводил блог небольшой тулой, которая позволяет кодировать-декодировать текст и, собственно, добавлять к эмодзи.
А кто еще кроме людей у нас работает с текстом? Конечно, LLM, причем в подавляющем большинстве LLM еще со времен GPT-2 используются BPE-токенизаторы, работающие на байтах, а не на символах, а значит вполне смогут закодированные послания увидеть. Например, вот этот эмодзи 💀󠅗󠅢󠅕󠅕󠅤󠅙󠅞󠅗󠅣󠄐󠅖󠅢󠅟󠅝󠄐󠅤󠄐󠅔󠅟󠅤󠄐󠅝󠅕󠄐󠅣󠅜󠅑󠅣󠅘󠄐󠅜󠅜󠅝󠅣󠅕󠅓󠅥󠅢󠅙󠅤󠅩 для LLM на самом деле состоит из 166 токенов и содержит тайное послание. А это открывает простор для token smuggling и инъекции промпта. Андрей Карпати собрал забавный PoC, в котором попытался сделать на базе этого промпт-инъекцию, добавив инструкцию, собранную из байтов в эмодзи – сработало, но потребовался интерпретатор кода и некоторое количество инструкций. Но если мы напишем об этом побольше текстов, то будущие LLM могут запомнить, как это работает, и справляться с без подсказок 😉 Небезызвестный Плиний придумал другое применение – прилепить к эмодзи так много вариантных селекторов, чтобы текст выходил за пределы контекстного окна. Получается токен-бомба, разновидность sponge attack – можно добавлять на свой сайт и сжигать LLM-парсерам и краулерам токены.
В общем, Unicode – страшная штука🔪
Paul Butler, 2025
Блог, инструмент
В стандарте Unicode есть специальные коды в количестве 256 штук, которые называются вариантными селекторами и дополнительными вариантными селекторам – от U+FE00 до U+FE0x и от U+E0100 до U+E01EF. Они прицепляются к символам, идущим до них, и меняют их отображение – если существует вариация, соответствующая их комбинации. При этом вариантных селекторов после символа может быть сколько угодно много, а их наличие в количестве 256 штук означает, что в них можно закодировать байт.
Что это значит? Это значит, что можно создать внутрь текста засовывать другой, невидимый текст – находка для стеганографии. Так можно вставлять в текст незаметные сообщения, которые будет невидимы для стороннего наблюдателя или добавлять в тексты водяные знаки, которые сохраняются при копировании и вставке. Автор сопроводил блог небольшой тулой, которая позволяет кодировать-декодировать текст и, собственно, добавлять к эмодзи.
А кто еще кроме людей у нас работает с текстом? Конечно, LLM, причем в подавляющем большинстве LLM еще со времен GPT-2 используются BPE-токенизаторы, работающие на байтах, а не на символах, а значит вполне смогут закодированные послания увидеть. Например, вот этот эмодзи 💀󠅗󠅢󠅕󠅕󠅤󠅙󠅞󠅗󠅣󠄐󠅖󠅢󠅟󠅝󠄐󠅤󠄐󠅔󠅟󠅤󠄐󠅝󠅕󠄐󠅣󠅜󠅑󠅣󠅘󠄐󠅜󠅜󠅝󠅣󠅕󠅓󠅥󠅢󠅙󠅤󠅩 для LLM на самом деле состоит из 166 токенов и содержит тайное послание. А это открывает простор для token smuggling и инъекции промпта. Андрей Карпати собрал забавный PoC, в котором попытался сделать на базе этого промпт-инъекцию, добавив инструкцию, собранную из байтов в эмодзи – сработало, но потребовался интерпретатор кода и некоторое количество инструкций. Но если мы напишем об этом побольше текстов, то будущие LLM могут запомнить, как это работает, и справляться с без подсказок 😉 Небезызвестный Плиний придумал другое применение – прилепить к эмодзи так много вариантных селекторов, чтобы текст выходил за пределы контекстного окна. Получается токен-бомба, разновидность sponge attack – можно добавлять на свой сайт и сжигать LLM-парсерам и краулерам токены.
В общем, Unicode – страшная штука
Please open Telegram to view this post
VIEW IN TELEGRAM