Как этот парень взломал ограничение Twitter на 140 символов?

36

Сегодня я был удивлен, увидев, что парень взломал ограничение на 140 символов в Твиттере. Сообщение состоит из 930 символов. Как это могло быть возможно?

Прямая ссылка на этот твит здесь . Для удобства скопирую скриншот полного твита ниже:

введите описание изображения здесь

Мехпер С. Палавузлар
источник
1
Кажется, это крутой трюк, но это не решение для ограничения в 140 символов. На самом деле его лучше. Потому что люди будут четко указывать, что им нужно сказать, вместо того, чтобы писать весь мусор. :)
1
Так что, ребята, это может быть полезной информацией, в центре сообщения есть фраза на русском языке: Твиттим и не ограничиваемся людиии !!!!!! 140 не предел! Который по-английски: Продолжай без ограничений, люди !!!!! 140 это не предел! Я думаю, некоторые русские "хакеры"? :-)
рабочий
Кажется, что Twitter исправил эту ошибку. Проверьте прямую ссылку на твит.
Мехпер С. Палавузлар
Краткий ответ: твит содержит менее 140 символов; это просто проблема с кодировкой, из-за которой ваш браузер отображает больше символов.
ShreevatsaR
Комментарий ниже заявляет, что проблема была исправлена ​​щебетом. Сегодня я наткнулся на еще один твит, который очень похож - twitter.com/#!/luchetti/status/177524100930084864
Chethan S.

Ответы:

41

Сообщение содержит суррогатные кодовые точки Unicode, которые неправильно кодируются как UTF-8. Этот вид неправильного кодирования также называется CESU-8 . Похоже, что некоторые интерфейсы Twitter будут принимать кодированные суррогатные кодовые точки CESU-8 в виде символов (с целью ограничения в 140 символов), но для целей отображения он ожидает действительный UTF-8, а они не являются действительными последовательностями UTF-8. Таким образом, вместо этого он отображает 3 байта каждой из этих последовательностей в виде восьмеричных escape-последовательностей в стиле C по 4 символа в каждой, и каждая суррогатная кодовая точка заканчивается отображением с использованием 12 символов.

Например, \ 355 \ 240 \ 265 \ 355 \ 263 \ 220 при декодировании как UTF-8 с C-экранированием, без отклонения суррогатов, как это обычно делается при декодировании UTF-8, декодирование в суррогатную пару U + D835 U + DCD0. Обработка этой суррогатной пары как UTF-16, как это было бы сделано при декодировании CESU-8, приводит к появлению символа Unicode U + 1D4D0 МАТЕМАТИЧЕСКИЙ КАПИТАЛ БОЛЬШОГО СКРИПТА A (𝓐).

Если восьмеричное экранирование в стиле C декодируется, а затем результат интерпретируется как CESU-8, то получается:

Ит 𝓐𝓛𝓜𝓐𝓣𝓨 𝓐𝓛𝓜𝓐𝓣𝓨 Твиттим и не ограничиваемся людиии !!!!!! 140 не предел! =)))) 𝓐𝓛𝓜𝓐𝓣𝓨 𝓐𝓛𝓜𝓐𝓣𝓨 𝓐𝓛𝓜𝓐𝓣𝓨

Вот как изображение для тех, у кого не установлен полный набор шрифтов Unicode:

Ит 𝓐𝓛𝓜𝓐𝓣𝓨 𝓐𝓛𝓜𝓐𝓣𝓨 Твиттим и не ограничиваемся людиии !!!!!!  140 не предел! =)))) 𝓐𝓛𝓜𝓐𝓣𝓨 𝓐𝓛𝓜𝓐𝓣𝓨 𝓐𝓛𝓜𝓐𝓣𝓨

mark4o
источник
1
на самом деле 101 персонаж - хорошая работа @ mark4o
Йорг
3
Кажется, что Twitter исправил эту ошибку. Теперь сообщение появляется так же, как изображение, которое вы разместили в своем ответе.
Мехпер С. Палавузлар
Я все еще вижу квадратные коробки, @ MehperC.Palavuzlar. Возможно ли, что у меня не установлены ЛЮБЫЕ шрифты с полным набором символов Unicode?
Гайя
3

Каждая группа символов, начинающаяся с обратной косой черты и сопровождаемая тремя числами, является « последовательностью побега ». Каждый из них представляет один символ. Они обычно используются для символов, которых нет на вашей клавиатуре, таких как символы и символы не на английском языке.

Я предполагаю, что при подсчете символов Твиттер считает каждую из этих групп как один символ, но при отображении их в браузере он печатает их как четыре.

Обновить:

Некоторые из доступных escape-последовательностей являются «управляющими символами». Они говорят компьютеру сделать что-то, например, воспроизвести звуковой сигнал или переместить курсор влево или вправо или вверх или вниз, или удалить символ слева от курсора. Хотя ни один из них не является последним, о котором я упомянул (удаляя предыдущий символ), он мог бы использовать этот символ, чтобы сбить с толку и Twitter.

Интересно, что если вернуться к обычным персонажам, это будет довольно повторяющимся и выглядит примерно так:

í µ í ³ í µ í ³ › í µ í ³ œ í µ í ³ í µ í ³ £ í µ í ³ ¨ í µ í ³ í µ í ³ › í µ í ³ œ í µ í ³ í µ í ³ £ í µ í ³ ¨ 

Обновление 2:

Объяснение, которое он дал, было «Пишите в DM, всегда на связи)», которое Google Translate говорит мне: «Пишите в DM, всегда на связи)». Я не уверен точно, что это значит или как это помогает.

Ladadadada
источник
1
Я тоже об этом думал (это наиболее разумное объяснение, которое приходит мне в голову), но проблема в том, что существует более 140 групп из четырех (140 * 4 = 560, что меньше, чем число 930, заявленное Мефером). ).
Alex
@ Алекс: Это верно. Я попытался скопировать и вставить все сообщение в новый ящик для твитов, но в Твиттере говорится, что это более 140 символов. Я также попробовал в TweetDeck, но опять не пошел.
Мехпер С. Палавузлар
Хорошо подмечено. Я обновил свой ответ, но не вижу никаких доказательств того, что обновление действительно произошло.
Ладададада
2
@Mehper, вы не можете просто скопировать его в ящик для твитов, потому что тогда твиттер будет интерпретировать его как отдельные символы ('\', '3', '5', '5') и т. Д. Вам нужно будет создать скрипт, который отправляет «символы» в виде байтов, а не экранирующих символов.
Тор Валамо
«Пишите в DM, всегда на связи)» означает, что он приглашает вас отправить ему личное сообщение, он быстро ответит на него. Мой перевод будет: «Отправить DM, я всегда там».
Малкольм