版本:1.4.5已启动,部分需要魔法。当前线路: ${localStorage.getItem("GPTMODE") ? localStorage.getItem("GPTMODE") : "默认模式"}
`
resolve(divE)
})
}
async function pivElemAddEventAndValue(append_case) {
var search_content
if (append_case === 5) {
search_content = document.getElementById("search-input").value
}
if (append_case === 4) {
search_content = document.getElementById("keyword").value
}
if (append_case === 3) {
search_content = document.querySelectorAll("input")[0].value
}
if (append_case === 2) {
search_content = document.getElementById('kw').value
}
if (append_case === 1) {
search_content = document.querySelector(
"#tsf > div:nth-child(1) > div.A8SBwf > div.RNNXgb > div > div.a4bIc > input:nth-child(3)"
).value
}
if (append_case === 0) {
search_content = document.getElementsByClassName('b_searchbox')[0].value
if (!search_content) {
search_content = document.querySelector("textarea[class='b_searchbox']").value;
}
}
document.getElementById("gptInput").value = search_content
document.getElementById('button_GPT').addEventListener('click', () => {
your_qus = document.getElementById("gptInput").value
do_it()
})
document.getElementById('updatePubkey').addEventListener('click', () => {
document.getElementById("gptAnswer").innerText = "正在更新,请稍后..."
setPubkey()
})
document.getElementById('changMode').addEventListener('click', () => {
document.getElementById("gptAnswer").innerText = "正在切换模式..."
let chatList = ["Default", "CHATGPT", "EXTKJ", "THEBAI", "YQCLOUD", "AIDUTU", "LTXUK", "51GPT", "TDCHAT", "XEASY", "WGK", "LEILUAN"]
let GPTMODE = localStorage.getItem("GPTMODE")
if (GPTMODE) {
let idx = 0;//Default
for (let i = 0; i < chatList.length; i++) {
if (chatList[i] == GPTMODE) {
idx = (i + 1 >= chatList.length) ? 0 : i + 1;
}
}
localStorage.setItem("GPTMODE", chatList[idx])
document.getElementById("gptAnswer").innerText = `切换成功,当前模式:${chatList[idx]}`
} else {
//不存在默认CHATGPT
localStorage.setItem("GPTMODE", "CHATGPT")
document.getElementById("gptAnswer").innerText = "切换成功,当前模式:CHATGPT模式"
}
})
}
async function appendBox(append_case) {
return new Promise((resolve, reject) => {
creatBox().then((divE) => {
switch (append_case) {
case 0: //bing
if (divE) {
document.getElementById('b_context').prepend(divE)
}
break;
case 1: //google
if (document.getElementsByClassName('TQc1id ')[0]) {
document.getElementsByClassName('TQc1id ')[0].prepend(divE);
} else {
document.getElementById("rcnt").appendChild(divE);
}
break;
case 2: //baidu
if (document.getElementById('content_right')) {
document.getElementById('content_right').prepend(divE)
}
break;
case 3: //yandex
if (document.getElementById('search-result-aside')) {
document.getElementById('search-result-aside').prepend(divE)
}
break;
case 4: //360
if (document.getElementById('side')) {
document.getElementById('side').prepend(divE)
}
break;
case 5: //fsoufsou
let frow = document.querySelectorAll(".flex-row")[2]
if (frow.children.length == 2) {
frow.children.item(1).prepend(divE)
} else {
frow.innerHTML = frow.innerHTML +
`
`
}
break;
case 6: //手机百度
if (document.getElementById('page-bd')) {
document.getElementById('page-bd').prepend(divE)
//调整css
try {
document.querySelector("#gptDiv").style.setProperty("width",
"100%")
document.querySelector("#gptInput").setAttribute("class",
"se-input adjust-input")
} catch (e) {
//TODO handle the exception
}
setTimeout(() => {
document.getElementById("button_GPT").click(); //自动点击
}, 1500)
}
break;
default:
if (divE) {
console.log(`啥情况${divE}`)
}
}
}).catch((err) => {
throw new Error(err)
})
resolve("finished")
})
}
//焦点函数
function isBlur() {
var myInput = document.getElementById('gptInput');
if (myInput == document.activeElement) {
return 1
} else {
return 0
}
}
function keyEvent() {
document.onkeydown = function (e) {
var keyNum = window.event ? e.keyCode : e.which;
if (13 == keyNum) {
if (isBlur()) {
document.getElementById('button_GPT').click()
} else {
console.log("失焦不执行")
}
}
}
}
function addBothStyle() {
GM_addStyle(`
#dot{
height: 4px;
width: 4px;
display: inline-block;
border-radius: 2px;
animation: dotting 2.4s infinite step-start;
}
@keyframes dotting {
25%{
box-shadow: 4px 0 0 #71777D;
}
50%{
box-shadow: 4px 0 0 #71777D ,14px 0 0 #71777D;
}
75%{
box-shadow: 4px 0 0 #71777D ,14px 0 0 #71777D, 24px 0 0 #71777D;
}
}
pre{
overflow-x: scroll;
overflow-y: hidden;
background: #fffaec;
border-radius: 4px;
padding: 14px 3px;
}
pre::-webkit-scrollbar {
}
`)
}
function creatBox_and_addEventlis(append_case) {
var divE = document.createElement('div');
var divId = document.createAttribute("id"); //创建属性
divId.value = 'gptDiv'; //设置属性值
divE.setAttributeNode(divId); //给div添加属性
var pE = document.createElement('p');
var pClass = document.createAttribute('class');
pClass.value = 'textClass';
pE.setAttributeNode(pClass)
var pText = document.createTextNode("chatGPT tools Plus 已启动");
pE.appendChild(pText);
divE.appendChild(pE);
switch (append_case) {
case 0:
if (divE) {
document.getElementById('b_context').prepend(divE)
}
break;
case 1:
if (document.getElementsByClassName('TQc1id ')[0]) {
document.getElementsByClassName('TQc1id ')[0].prepend(divE);
} else {
document.getElementById("rcnt").appendChild(divE);
}
break;
case 2:
if (document.getElementById('content_right')) {
document.getElementById('content_right').prepend(divE)
}
break;
default:
if (divE) {
document.getElementById('b_context').prepend(divE)
}
}
document.getElementById('gptDiv').innerHTML =
`
  openAI已就绪,请输入你的问题
chatGPT tools Plus 免费版已启动
`
var search_content
if (append_case === 2) {
search_content = document.getElementById('kw').value
}
if (append_case === 1) {
search_content = document.querySelector(
"#tsf > div:nth-child(1) > div.A8SBwf > div.RNNXgb > div > div.a4bIc > input:nth-child(3)")
.value
}
if (append_case === 0) {
search_content = document.getElementsByClassName('b_searchbox')[0].value
}
document.getElementById("gptInput").value = search_content
document.getElementById('button_GPT').addEventListener('click', () => {
your_qus = document.getElementById("gptInput").value
do_it()
})
}
function log(a) {
console.log(a)
}
function Uint8ArrayToString(fileData) {
var dataString = "";
for (var i = 0; i < fileData.length; i++) {
dataString += String.fromCharCode(fileData[i]);
}
return dataString
}
function decodeUnicode(str) {
str = str.replace(/\\/g, "%");
//转换中文
str = unescape(str);
//将其他受影响的转换回原来
str = str.replace(/%/g, "\\");
//对网址的链接进行处理
str = str.replace(/\\/g, "");
return str;
}
function mdConverter(rawData) {
var converter = new showdown.Converter(); //增加拓展table
converter.setOption('tables',
true); //启用表格选项。从showdown 1.2.0版开始,表支持已作为可选功能移入核心拓展,showdown.table.min.js扩展已被弃用
var view = converter.makeHtml(rawData);
return view;
}
//实时监控百度,360按钮消失
setInterval(() => {
//百度
if (window.location.href.indexOf("https:\/\/www.baidu.com\/s") > -1 && !isMobile()) {
if (!document.getElementById("gptDiv") && document.getElementById("mybtn")) {
document.getElementById("mybtn").click()
}
if (!document.getElementById("gptDiv") && !document.getElementById("mybtn")) {
addChatBtn();
document.getElementById("mybtn").click()
}
}
//360 注意请如果你在360相关浏览器上使用插件。360搜索将不会生效,因为已被浏览器禁用在so.com网址上使用
if (window.location.href.indexOf("so.com\/s") > -1 && !document.getElementById("gptDiv")) {
GM_add_box_style(1)
addBothStyle()
keyEvent()
appendBox(4).then((res) => {
pivElemAddEventAndValue(4)
})
}
}, 2000)
function initCvID() {
GM_xmlhttpRequest({
method: "POST",
url: "https://chat.wuguokai.cn/api/v1/bots/chatgpt/mod/channel-web/conversations/new?__ts=" + Date.now(),
headers: {
"Content-Type": "application/json",
"Referer": `https://chat.wuguokai.cn/lite/chatgpt/?m=channel-web&v=Fullscreen&options={"hideWidget":true,"config":{"enableReset":false,"enableTranscriptDownload":true}}`
},
data: JSON.stringify({"webSessionId": webSessionId}),
onloadstart: (stream) => {
let result = [];
const reader = stream.response.getReader();
reader.read().then(function processText({done, value}) {
if (done) {
let finalResult = result.join("")
console.log(finalResult)
convoId = JSON.parse(finalResult).convoId
console.log("convoId: ", convoId)
return;
}
let d = new TextDecoder("utf8").decode(new Uint8Array(value));
result.push(d)
return reader.read().then(processText);
});
},
responseType: "stream",
onprogress: function (msg) {
//console.log(msg) //Todo
},
onerror: function (err) {
console.log(err)
},
ontimeout: function (err) {
console.log(err)
}
});
}
function generateRandomString(length) {
var result = '';
var characters = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';
var charactersLength = characters.length;
for (var i = 0; i < length; i++) {
result += characters.charAt(Math.floor(Math.random() * charactersLength));
}
return result;
}
var wsResult = []
var initSocket = function () {
// 创建WebSocket连接
const socket = new WebSocket(`wss://chat.wuguokai.cn/socket.io/?visitorId=${generateRandomString(24)}&EIO=4&transport=websocket`);
// 监听连接成功事件
socket.addEventListener('open', (event) => {
console.log('连接成功');
showAnserAndHighlightCodeStr("websocket已经连接")
});
let isFirst = false;
// 监听接收消息事件
socket.addEventListener('message', (event) => {
console.log('接收到消息:', event.data);
let revData = event.data;
if (!isFirst) {
socket.send("40/guest,")
isFirst = true
setTimeout(() => socket.send("3"), 3000)
}
if (revData == "3") {
socket.send("2");
}
if (revData == "2") {
socket.send("3");
}
if (revData.match(/40\/guest/)) {
try {
webSessionId = JSON.parse(revData.replace(/40\/guest,/, "").trim()).sid;
console.log("webSessionId ", webSessionId)
initCvID();
} catch (e) {
console.log(e)
}
}
if (revData.match(/42\/guest/)) {
//收信
try {
let chunk = JSON.parse(revData.replace(/42\/guest,/, "").trim())[1].data.payload.text;
console.log(chunk)
wsResult.push(chunk)
showAnserAndHighlightCodeStr(wsResult.join(""))
} catch (e) {
console.log(e)
}
}
});
}
function LEILUAN() {
console.log(CryptoJS.MD5(your_qus).toString().toLowerCase())
//这里填你的cookie里面的token 地址:https://aichat.leiluan.cc/static/html/pc.html
let leiluanToken = "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJwd2QiOiJkNDFkOGNkOThmMDBiMjA0ZTk4MDA5OThlY2Y4NDI3ZSIsImlzcyI6ImFpY2hhdC5sZWlsdWFuLmNjIiwiYXVkIjoiYWljaGF0LmxlaWx1YW4uY2MiLCJpYXQiOjE2ODAyNDY1MTgsIm5iZiI6MTY4MDI0NjUxOCwiZXhwIjoxNjgyODM4NTE4LCJqdGkiOnsiaWQiOjg0LCJ0eXBlIjoiYXBpIn19.1Z3oNWp0mi-GJALHdonBwnm4-jiOHRfu3edj4hH6Evs";
GM_xmlhttpRequest({
url: "https://aichat.leiluan.cc/api/user/openchat",
headers: {
"accept": "*/*",
"authori-zation": `Bearer ${leiluanToken}`,
"referrer": "https://aichat.leiluan.cc/pages/lei_luan/content/talk?content=%E4%BD%A0%E6%98%AF%E4%BB%80%E4%B9%88%E5%9E%83%E5%9C%BE",
"content-type": "application/json"
},
data: JSON.stringify({
prompt: your_qus,
chatlogid: CryptoJS.MD5(your_qus).toString().toLowerCase()
}),
method: "POST",
onload: (resp) => {
let rs = resp.responseText;
let tk = JSON.parse(rs).data.token;
GM_xmlhttpRequest({
url: "https://chat.gptservice.xyz/indext.php?token=" + tk,
method: "GET",
headers: {
"accept": "text/event-stream",
"content-type": "text/event-stream",
"referrer": "https://aichat.leiluan.cc/"
},
onloadstart: (stream) => {
const reader = stream.response.getReader();
let chunks = [];
reader.read().then(function processText({done, value}) {
if (done) {
// 数据已经被完全消耗
const targetString = chunks.join("");
const regExp = /"content":"(.+?)"/gi;
const matchResult = targetString.match(regExp);
let finalAns = []
matchResult.forEach(item=>{
try {
console.log("===="+/"content":"(.+?)"/g.exec(item)[1]+"=====")
finalAns.push(/"content":"(.+?)"/g.exec(item)[1])
}catch (e) {
console.error(e,item)
}
})
// console.log(finalAns.join(""))
showAnserAndHighlightCodeStr(finalAns.join(""))
return;
}
try {
let d = new TextDecoder("utf8").decode(new Uint8Array(value));
//console.log(d)
chunks.push(d)
}catch (e) {
console.error(e)
}
return reader.read().then(processText);
});
},
responseType: "stream",
onerror: function (err) {
console.log(err)
}
})
}
})
}
setTimeout(() => {
initSocket();
}, 1500)
})();