zoukankan      html  css  js  c++  java
  • 微信QQ群里的搞怪


    data:text/html;charset=utf8,
    <script>document.write('微信昵称'+String.fromCharCode(8238)+'撤回后的文字'.split(").revers().join(")+String.fromCharCode(8237))</script>

    8238(202E)代表RLO,强制字符成为从右到左的字符。
    8237(202D)代表LRO, 强制字符成为从左到右的字符。

    小明RLO脸的你了摸并LRO撤回了一条消息
    小明息消条一了回撤LRO并摸了你的脸
    小明撤回了一条消息并摸了你的脸

    ‮股屁的你了踢并‭

    unicode是一种在网页上显示文字的规范。因为它希望显示全世界所有语言的文字,而有些语言的文字是从右往左写的,所以它必须处理这个问题。
    因此它发明了很多控制符,其中一个叫U+202E:“右至左覆盖”。系统在读到这一个控制符的时候,会立刻开始把显示顺序修改为从右到左。
    相对应的,另一个U+202D就是“左至右覆盖”。
    正常情况下,一种文字要么从左到右,要么从右到左,不会混着来。但是如果有人故意要混着玩,就会出现有意思的场景。
    好比说有一个用户叫果壳网,在微信里撤回信息的时候,会显示“果壳网撤回了一条消息”
    现在我改名“果壳网U+202E手短小只一了扔你向并U+202D”
    系统就会试图显示“果壳网U+202E手短小只一了扔你向并U+202D撤回了一条消息”
    它会先依次显示“果壳网”三个字:

    果I
    果壳I
    果壳网I
    (I代表下一个字符将会出现的位置)

    然后它发现了U+202E控制符,得令,开始从右边向左书写了:

    果壳网 I手
    果壳网 I短手
    果壳网 I小短手
    ……
    果壳网 I并向你扔了一只小短手

    然后它又发现了U+202D,恢复正常,又开始从左往右输入了:

    果壳网 撤I 并向你扔了一只小短手
    果壳网 撤回I 并向你扔了一只小短手
    果壳网 撤回了I 并向你扔了一只小短手
    ……
    果壳网 撤回了一条消息 并向你扔了一只小短手

    Success.
    (友情提示:这需要改微信本名,改群昵称没用)
    (不过据说微信服务器端已经封锁了这个符号所以无所谓啦)
    ——————————

    如果你的这个效果是自己写的,那么你肯定知道发生了什么。
    如果你是用网页生成的,比如 ruguoapp.com/unicode.html
    那么查看一下源代码,里面值得注意的就两行
    suffix = reverse(suffix);
    document.write("<h1 style='padding: 100px 100px'>"+name+"‮"+suffix +"‭</p>")

    第一行的作用是把你输入的后缀反序;
    第二行的作用是把这个后缀前后加上所需的控制码。‮ 就是 U+202E,‭就是 U+202D。

     html测试代码

    <html>
    <body>
    下这里为了禁止页面解释,加了-,实际运行去掉即可 
    <br/>
    ABC&-#8238DEF&-#8236G
    <br/>
    小明&-#8238脸的你了摸并&-#8237:撤回了一条消息
    </body>
    </html>

     另补充:qq昵称设置空白  

  • 相关阅读:
    .NetCore 导出Execl
    10块钱可以喝几瓶?
    menuStrip鼠标滑过自动弹出
    静态变量
    DataTable.SELECT日期类型筛选处理
    Java中accept()阻塞是如何实现的
    L1正则在0处不可导怎么办?
    L1和L2正则化原理推导.md
    5局3胜和3局2胜哪个更容易赢.md
    Java集合(一): 集合框架Collection和Map
  • 原文地址:https://www.cnblogs.com/xj2015/p/5721360.html
Copyright © 2011-2022 走看看