CharlieBBS

True_AGI_Believer
True_AGI_Believer

Posted on

发一个通过反转字符来绕过某些文本审查的 HTML + JS 小程序

效果图

<!DOCTYPE html>
<form id="inputForm">
    <label for="inputText">Input text:</label><br>
    <textarea cols="50" id="inputText" rows="5"></textarea><br>
    <input type="submit" value="Submit">
</form>

<div id="output"></div>
<button id="copyButton">Copy Result</button>

<script>
    document.getElementById('inputForm').addEventListener('submit', function (event) {
        event.preventDefault()
        let inputStr = document.getElementById('inputText').value
        let inputLines = inputStr.split('\n')
        let outputDiv = document.getElementById('output')
        outputDiv.innerHTML = ''
        inputLines.forEach(line => {
            outputDiv.innerHTML += reverseWithUnicode(line) + '<br>'
        })
    })

    document.getElementById('copyButton').addEventListener('click', function () {
        let copyButton = document.getElementById('copyButton')
        navigator.clipboard.writeText(document.getElementById('output').innerText)
            .then(() => {
                copyButton.innerText = 'Copied'
                setTimeout(() => {
                    copyButton.innerText = 'Copy Result'
                }, 500)
            })
            .catch(err => alert('Failed to copy text: ' + err))
    })

    function reverseWithUnicode(inputStr) {
        let chars = Array.from(inputStr)
        let result = []
        for (let i = chars.length - 1; i >= 0; i--) {
            let codePoint = chars[i].charCodeAt(0)
            if (codePoint < 0xA000) {
                result.push('\u202E' + chars[i] + '\u202C')
            } else {
                result.push(chars[i])
            }
        }
        return result.join('')
    }
</script>
Enter fullscreen mode Exit fullscreen mode

GPT-4 分析:

这段代码主要由 HTML 和 JavaScript 构成,用于实现一个能将用户输入文本字符反转的简单网页。这里的特殊之处在于它使用 Unicode 的字符来反转文本,从而可能绕过某些形式的文本审查。
代码的主要部分如下:
HTML 标记定义了一个包含一个文本输入框和提交按钮的表单,一个用于显示结果的 div,以及一个复制结果到剪贴板的按钮。
JavaScript 脚本添加了两个事件监听器:

  • 一个监听表单的 'submit' 事件,当用户提交文本时会阻止默认的提交行为,取出用户输入,按行拆分后逐行反转,并将反转结果显示在 output div 中。
  • 另一个监听 'copyButton' 的 'click' 事件,当用户点击时,会将 output div 中的文本复制到剪贴板。
  • reverseWithUnicode 函数实现了字符反转的逻辑:它接收一个字符串作为输入,将其拆分为字符数组,然后从后向前遍历这个数组。对于 Unicode 编码值小于 0xA000(即大部分常见字符)的字符,它会用两个特殊的 Unicode 字符 '\u202E' 和 '\u202C' 来包围它,这两个字符分别代表从右到左覆盖(RLO)和弹出方向格式(PDF),使得被包围的字符在显示时会被反转。而对于 Unicode 编码值大于等于 0xA000 的字符(一些特殊字符和象形文字),直接添加到结果中,不进行反转。

请注意,这个方法可能只能在一些特定的情况下有效,因为不同的文本审查系统可能有不同的处理方法。而且,使用 '\u202E' 和 '\u202C' 反转文本可能会导致文本难以阅读,特别是对于一些需要正确的字符顺序来理解的语言。

欢迎用于任何违法违规用途

Discussion (0)