Подсветка URL не соответствует спецификациям

P.S. Когда я попытался опубликовать сообщение, появилось всплывающее окно: «Произошла ошибка: извините, новые пользователи могут добавлять в пост не более двух ссылок». Не понимаю, какой именно спам это предотвращает, ведь большинству спамеров достаточно одной ссылки, но теперь мне приходится заменять часть моих аккуратно оформленных markdown-ссылок текстовыми сносками. Сам процесс добавления сноски в редакторе markdown по умолчанию настолько глючный и раздражающий, что заслуживает отдельного отчёта.


P.S.S. Похоже, что ссылки на основе markdown тоже считаются ссылками. Убрал их в пользу Unicode-надстрочных цифр. На 40-й минуте моих попыток написать этот пост.


Согласно STD 66 / RFC 3986¹ (человеко-читаемый извлечённый список²), в фрагменте URL или очереди могут быть неэкранированы 81 символ. Этот список, отсортированный в порядке ASCII фреймворком «Foundation³» в языке программирования Swift: !$&'()*+,-./0123456789:;=?@ABCDEFGHIJKLMNOPQRSTUVWXYZ_abcdefghijklmnopqrstuvwxyz~

Ниже приведён URL, содержащий несколько из этих символов: Example Domain '()*+,-./0123456789:;=?@ABCDEFGHIJKLMNOPQRSTUVWXYZ_abcdefghijklmnopqrstuvwxyz~ Как вы можете заметить, подсветка синтаксиса обрывается на определённом этапе.

Работая над проектом, использующим эти 81 символ для кодирования бинарных данных в фрагментах (по принципу base64, но более компактно), я проверил, как сейчас работает подсветка, соответствующая спецификации, на нескольких сайтах. Хотя похожая ошибка, непоследовательно, присутствовала и в других местах (например, форум GitHub не мог подсветить последний символ, если это ~), в Discourse наблюдается самый широкий набор сломанных символов. Некоторые символы могут или не могут нарушать подсветку в зависимости от какого-то загадочного контекста, поэтому я не думаю, что смогу составить исчерпывающий список.

¹ Google rfc/rfc3986.txt
² Ищите ответ Stack Overflow #26119120
³ Ищите документацию/foundation/nscharacterset/urlfragmentallowed на Apple > Developer


P.S.S.S. Некоторые стандартные адреса электронной почты также не подсвечиваются. Я использую свою вторую ссылку, чтобы перейти на https://e-mail.wtf для примеров.

Не подсвечиваются, но должны:

orgmail(to John Doe)@example.com
“:(){ :|:& };:”@example.com
magic@[::1]

1 лайк

Добро пожаловать в наше сообщество!

Спасибо за ваш пост. Я не думаю, что то, о чем вы сообщаете, является Contribute > Bug как таковым, поэтому переместил его в Contribute > Feature. Возможно, ему вообще место в Development, так как вопрос очень технический.

Это ограничение для новых пользователей, чтобы предотвратить спам со стороны ботов, которые пытаются разместить множество ссылок. Как только вы проведете здесь немного времени, это ограничение будет снято автоматически. Здесь, на meta, я повысил лимит с дефолтных 2 URL до 5, так как 2 кажется слишком строгим ограничением, к тому же у нас уже есть системы анти-спам с использованием ИИ, которые отлавливают весь спам, независимо от количества ссылок.

Если у вас есть дополнительные отзывы по этому поводу, не стесняйтесь создать новую тему в Contribute > Site feedback.