JS代码反混淆破解详解:ChatGPT API调用分析
以下是反混淆破解后的代码:
function autoFocus() {
document.getElementById('chat-gpt-input').focus();
}
window.addEventListener('load', autoFocus);
window.addEventListener('DOMContentLoaded', autoFocus);
window.addEventListener('touchstart', function (event) {
if (event.target.id === 'chat-gpt-input') {
event.stopPropagation();
document.getElementById('chat-gpt-input').focus();
return false;
}
}, {
passive: false
});
async function callCHATGPT() {
var url = 'https://free-api.cveoy.top/v2/completions';
var btn = document.getElementById('myButton');
var timeleft = 0;
btn.disabled = true;
btn.innerHTML = timeleft + ' 秒后可再次发送';
var timer = setInterval(function () {
timeleft--;
btn.innerHTML = timeleft + ' 秒后可再次发送';
if (timeleft <= 0) {
btn.disabled = false;
btn.innerHTML = '发送消息';
clearInterval(timer);
}
}, 1000);
var textarea = document.getElementById('chat-gpt-input');
if (textarea.value.trim() === '') {
alert('请输入您的问题!');
return false;
} else {
// ...
}
var prompt = document.getElementById('chat-gpt-input').value;
var data = JSON.stringify({
'prompt': prompt
});
const response = await fetch(url, {
'method': 'POST',
'headers': {
'Content-Type': 'application/json'
},
'body': data
});
if (response.status == 200) {
const reader = response.body.getReader();
while (true) {
const { value, done } = await reader.read();
if (done) break;
responseText.innerHTML += new TextDecoder().decode(value);
}
} else responseText.innerHTML += '\n你输入的问题有误,请重新输入!';
}
这段代码的主要功能是通过调用https://free-api.cveoy.top/v2/completions这个API来实现与ChatGPT的交互。具体步骤如下:
- 获取用户输入: 从
chat-gpt-input文本框中获取用户输入的问题。 - 发送请求: 使用
fetch方法向API发送POST请求,请求体包含用户输入的问题。 - 处理响应: 根据API返回的响应状态码进行处理。如果状态码为200,则解析响应内容并将其显示在页面上。如果状态码不是200,则提示用户输入错误。
这段代码的混淆主要体现在变量名和函数名上,使用了随机字符串和数字。此外,代码中还包含一些无用的代码,例如version_变量和_0x51ce函数。
通过反混淆,我们可以清楚地了解代码的功能和实现原理,并能够更好地理解和修改代码。
总结:
本文详细分析了一段混淆后的JS代码,展示了如何通过反混淆来理解代码功能和实现原理。这对于开发者在遇到混淆代码时能够快速理解代码逻辑,以及在安全方面进行分析和防御都具有重要的意义。
原文地址: https://www.cveoy.top/t/topic/mF96 著作权归作者所有。请勿转载和采集!