Подсветка 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 лайк

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

Спасибо за этот пост. Я не думаю, что то, о чём вы сообщаете, является именно #ошибкой, поэтому переместил его в #функция. Возможно, оно должно находиться где-то вроде #разработка, так как это очень технический вопрос.

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

Если у вас есть дополнительные отзывы по этому поводу, не стесняйтесь создать тему в #обратная_связь_по_сайту.