// ==UserScript== // @name chatGPT tools Plus(修改版) // @namespace http://tampermonkey.net/ // @version 2.8.5 // @description Google、必应、百度、Yandex、360搜索、谷歌镜像、搜狗、b站、F搜、duckduckgo、CSDN侧边栏Chat搜索,集成国内一言,星火,天工,通义AI,ChatGLM,360智脑。即刻体验AI,无需翻墙,无需注册,无需等待! // @author 夜雨 // @match https://cn.bing.com/* // @match https://www.bing.com/* // @match *://*.bing.com/* // @match https://chat.openai.com/chat // @match https://www.google.com/* // @match https://duckduckgo.com/* // @match https://www.so.com/s* // @match *://m.so.com/s* // @match *://www.baidu.com/s* // @match https://www.baidu.com/* // @match https://m.baidu.com/* // @match *://baidu.com/s* // @match *://yandex.ru/search* // @match *://yandex.com/search* // @match https://search.ecnu.cf/search* // @match https://search.aust.cf/search* // @match https://search.*.cf/search* // @match https://*.cf:*/* // @match *://gooo.azurewebsites.net/* // @match https://fsoufsou.com/search* // @match https://www.google.com.hk/* // @match *://www.sogou.com/* // @match *://m.sogou.com/* // @match *://wap.sogou.com/* // @match *://neice.tiangong.cn/* // @match *://www.bilibili.com/video/* // @match *://blog.csdn.net/*/article/details/* // @match *://chatglm.cn/* // @icon64 data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAMAAACdt4HsAAAAZlBMVEUAAAD///+hoaFoaGhsbGy7u7vd3d2+vr76+vra2tr29va2trYrKyvg4ODs7OxXV1dgYGCtra0xMTGXl5fExMQ6OjqOjo7R0dEVFRWnp6dSUlIiIiIcHBwLCwt4eHhycnKEhIRHR0f14+hfAAADN0lEQVRYhe1WyZajMAyEsMQshgABEwIJ+f+fbC02W0yHnjnNvNYFDFbZKpUlO86v/e/Wpve/8M4TFckwSvI/cx8z11g2/tw9vZKrEIKe159GUkvwipPxVb4eQQzvYV12XX3Y/x6BT5LqUZkgWixEHF/9/hAAeozz0I8nOtzoccDfg8CbaZQrYkOGYUaEFO2RDUTT4MZefjkMpVcQo5/Wr2DSi9/bhlYPhukvZqf41l3hiiFv8xJR2CslIT+XXfc+YapojY60kG1ZA0rknj+lL4YtnGCQ4lbESSczf5R6Ugc5ee4AoL9KAwbwYXDWXJTXhaDhf2L3R44rxzkbgFgHn55Y0JJjzyeONpYLDn4CCPn7A46VaggjwIB6eEltAOConCUAcZVDXBKIHHgbp9IZ4KW0AZj8LAHaQEzaY0lmHk60AXiQ8XYFEDoVrRpXOmSfdQFfbMe7MuTOJMLU6IJqkh7PuTMVrhosAJCp2xrApA6Lk+p4VllMQjsAcNNkpzeQlKkPHhQb0VkAEgO8TSMaVqhMH/EyW57W2R7moNoBCjwDPg1QzM07QAk7o+wUrIcNwAVZ1ktAROE7gBMaEq4kaW8NgHlQOsrULiUoHjGT40PIqngHOIGYzRK22ggJz3TpbrCt7AMU9gPZwc4y5slJC7FO4woAxmcLgMMi0dF1ymSOtnMEYFDczxqtdJRM6HlAbhSvARIqHG+G5BJGqONoK2opooIMLQFaYMvWs0EJruNRV1b8vy+wqDtbEj2caAcQg5NWdIQL6IJPjIGg1gDKhLINARyxed4DpgLFq+vvKoRiEszGWmlCy0OmcyrqSxKr/eaUzFvDGnDWCX2d5zQmNdJsO4xoz8XeyqcpIdRexZ0BBOYl2r2wyHfwB2WFO0zBjS/Zv2Vc8Pey3l3kor0iR65Q+61Vr6GmttNSOtxRf+jgvfnW3eFa4CZ+3fb1k1q1uC0D3GmKC2s5zkxKvieqWbKQPvFpfbRnNF+pYn/+3ny6m0zW+9eYDIMxlQsbvKuO3zfrV5fWKMc4GLu6G+m2KY/fNNnu6/vu2drTv7fFjVuOP3dHy5MolJEqrKfvoPXp57vpr/3r9gUxwiW4OiuC3wAAAABJRU5ErkJggg== // @grant GM_xmlhttpRequest // @grant GM_addStyle // @grant GM_openInTab // @grant GM_registerMenuCommand // @grant GM_setValue // @grant GM_getValue // @grant GM_getResourceText // @grant GM_setClipboard // @run-at document-end // @require https://cdn.staticfile.org/jquery/3.4.0/jquery.min.js // @require https://cdn.bootcdn.net/ajax/libs/marked/4.3.0/marked.min.js // @require https://cdn.bootcdn.net/ajax/libs/markdown-it/13.0.1/markdown-it.min.js // @require https://cdn.bootcdn.net/ajax/libs/showdown/2.1.0/showdown.min.js // @require https://cdn.bootcdn.net/ajax/libs/highlight.js/11.7.0/highlight.min.js // @require https://cdnjs.cloudflare.com/ajax/libs/crypto-js/4.1.1/crypto-js.min.js // @require https://cdn.bootcdn.net/ajax/libs/KaTeX/0.16.6/katex.min.js // @connect api.forchange.cn // @connect gpt008.com // @connect chatforai.cc // @connect api.aigcfun.com // @connect chatbot.theb.ai // @connect cbjtestapi.binjie.site // @connect freechatgpt.xgp.one // @connect luntianxia.uk // @connect chat.51buygpt.com // @connect extkj.cn // @connect tdchat0.com // @connect zw7.lol // @connect xeasy.me // @connect chat.wuguokai.cn // @connect ai5.wuguokai.top // @connect chat.aidutu.cn // @connect aichat.leiluan.cc // @connect chat.gptservice.xyz // @connect gpt66.cn // @connect ai.ls // @connect letsearches.com // @connect zhulei.xyz // @connect wobcw.com // @connect chat.68686.ltd // @connect t66.ltd // @connect t-chat.cn // @connect www.aitianhu.com // @connect free.anzz.top // @connect chat.ohtoai.com // @connect freeopenai.xyz // @connect supremes.pro // @connect bnu120.space // @connect chat7.aifks001.online // @connect a0.chat // @connect ai.usesless.com // @connect www.ftcl.store // @connect sunls.me // @connect www.pizzagpt.it // @connect www.phind.com // @connect chat.bushiai.com // @connect chatgpt.qdymys.cn // @connect pp2pdf.com // @connect api.aichatos.cloud // @connect ai.fakeopen.com // @connect chat2.wuguokai.cn // @connect www.gtpcleandx.xyz // @connect gpt.esojourn.org // @connect free-api.cveoy.top // @connect chatcleand.xyz // @connect 154.40.59.105 // @connect gptplus.one // @connect xcbl.cc // @connect hz-it-dev.com // @connect 6bbs.cn // @connect toyaml.com // @connect 38.47.97.76 // @connect lbb.ai // @connect lovebaby.today // @connect gamejx.cn // @connect chat86.cn // @connect ai001.live // @connect ai003.live // @connect ai006.live // @connect promptboom.com // @connect hehanwang.com // @connect caipacity.com // @connect chatzhang.top // @connect 51mskd.com // @connect forwardminded.xyz // @connect 1chat.cc // @connect a3r.fun // @connect cytsee.com // @connect skybyte.me // @connect alllinkai1.com // @connect baidu.com // @connect geekr.dev // @connect chatgptdddd.com // @connect anfans.cn // @connect bing.com // @connect openai.com // @connect tongyi.aliyun.com // @connect qianwen.aliyun.com // @connect haohuola.com // @connect xinghuo.xfyun.cn // @connect geetest.com // @connect neice.tiangong.cn // @connect yeyu1024.xyz // @connect chatglm.cn // @connect gptgo.ai // @connect chat.360.cn // @connect mixerbox.com // @connect ohmygpt.com // @connect muspimerol.site // @license MIT // @website https://yeyu1024.xyz/gpt.html // @downloadURL none // ==/UserScript== // import { // GM_registerMenuCommand,GM_openInTab,GM_xmlhttpRequest,GM_setValue,GM_getValue, // GM_setClipboard,GM_addStyle // } from "../jslib/tampermonkey"; (function () { 'use strict'; let JSver = '2.8.5'; function getGPTMode() { return localStorage.getItem("GPTMODE"); } let darkTheme = localStorage.getItem("darkTheme") console.log(darkTheme) //(prefers-color-scheme: light) function addHeadCss() { if(!document.getElementById("github-markdown-link")){ if(!darkTheme) { //暗黑 $("head").append($( '' )); }else{ $("head").append($( '' )); } } if(!document.getElementById("highlight-link")){ if(!darkTheme) { //暗黑 $("head").append($( '' )); }else{ $("head").append($( '' )); } } if(!document.getElementById("katex-link")){ $("head").append($( '' )); } //spark-js if(!document.getElementById("spark-js")){ $("head").append($( '' )); } } setTimeout(addHeadCss) setInterval(addHeadCss,5000) try { console.log( `%c【chatGPT tools Plus】已加载`, 'color: yellow;font-size: large;font-weight: bold;background-color: darkblue;' ); //禁用console 未转义警告 hljs.configure({ ignoreUnescapedHTML: true }) const menu_updateChat_id = GM_registerMenuCommand("更新Chat", function (event) { GM_openInTab("https://greasyfork.org/zh-CN/scripts/459997") }, "updateChat"); const menu_groupNum_id = GM_registerMenuCommand("交流群", function (event) { alert("交流群7:817298021\n交流群6:792365186\n交流群4:745163513\n交流群3:177193765\n交流群2:734403992\n交流群1:710808464\n交流总群:249733992") }, "groupNum"); const menu_pubkey_id = GM_registerMenuCommand("更新key", function (event) { alert("正在更新...") setPubkey(); }, "PUBKEY"); } catch (e) { console.log(e) } //封装GM_xmlhttpRequest ---start--- async function GM_fetch(details) { return new Promise((resolve, reject) =>{ switch (details.responseType){ case "stream": details.onloadstart = (res)=>{ resolve(res) } break; default: details.onload = (res)=>{ resolve(res) }; } details.onerror = (res)=>{ reject(res) }; details.ontimeout = (res)=>{ reject(res) }; details.onabort = (res)=>{ reject(res) }; //中断支持 if(details.responseType === "stream"){ abortXml = GM_xmlhttpRequest(details) }else{ GM_xmlhttpRequest(details) } }); } function GM_httpRequest(details, callBack, errorCallback, timeoutCallback, abortCallback){ if(callBack){ switch (details.responseType){ case "stream": details.onloadstart = callBack; break; default: details.onload = callBack } } if(errorCallback){ details.onerror = errorCallback; } if(timeoutCallback){ details.ontimeout = timeoutCallback; } if(abortCallback){ details.onabort = abortCallback; } console.log(details) //中断支持 if(details.responseType === "stream"){ abortXml = GM_xmlhttpRequest(details) }else{ GM_xmlhttpRequest(details) } } //封装GM_xmlhttpRequest ---end--- let generateRandomIP = () => { const ip = []; for (let i = 0; i < 4; i++) { ip.push(Math.floor(Math.random() * 256)); } console.log(ip.join('.')) return ip.join('.'); } //动态pubkey function setPubkey() { let GPTMODE = getGPTMode() if (GPTMODE === "YeYu") { localStorage.removeItem("openAIkey") let manualInput = confirm("openAIkey不存在,请输入你自己的key"); if (manualInput) { let aikey = prompt("请输入您的openAIkey", ""); if (aikey) localStorage.setItem("openAIkey", aikey) } }else if(!GPTMODE || GPTMODE === "Default"){ GM_fetch({ method: "GET", url: "https://api.aigcfun.com/fc/key", headers: { "Content-Type": "application/json", "Referer": `https://aigcfun.com/`, "X-Forwarded-For": generateRandomIP() } }).then((response)=> { let resp = response.responseText; let pubkey = JSON.parse(resp).data; if (!pubkey) { document.getElementById("gptAnswer").innerText = "获取pubkey失败" return } console.log("pubkey:" + pubkey); //GM_setValue("pubkey", pubkey) localStorage.setItem("pubkey", pubkey) document.getElementById("gptAnswer").innerText = "pubkey更新成功:" + pubkey }) }else if(GPTMODE === "BNU120"){ setTimeout(async () => { bnuInt = (bnuInt + 1) > 6 ? 0 : (bnuInt + 1) try { bnuKey = bnuList[bnuInt].key; if(bnuKey){ showAnserAndHighlightCodeStr(`BNU120:当前:${bnuInt},共6。更新成功,KEY:${bnuKey}`) localStorage.setItem("bnuInt", bnuInt) localStorage.setItem("bnuKey", bnuKey) }else { showAnserAndHighlightCodeStr("BNU120:更新失败") localStorage.removeItem("bnuInt") localStorage.removeItem("bnuKey") } }catch (e) { showAnserAndHighlightCodeStr(`错误了。请重试`) } }); }else { showAnserAndHighlightCodeStr("该线路不适用") } } function getPubkey() { //return GM_getValue("pubkey"); return localStorage.getItem("pubkey"); } //update AIGCFUN key. setTimeout(()=>{ if (!getPubkey()){ setPubkey(); } }) //enc-start async function digestMessage(r) { const hash = CryptoJS.SHA256(r); return hash.toString(CryptoJS.enc.Hex); } const generateSignature = async r => { const { t: e, m: t } = r; //const n = {}.PUBLIC_SECRET_KEY; let n = getPubkey(); if (!n) { console.log("pubkey不存在,使用默认") n = "k6zeE77ge7XF" } console.log("CURRENT KEY:" + n) const a = `${e}:${t}:${n}`; return await digestMessage(a); }; const generateSignatureWithPkey = async r => { const { t: e, m: t, pkey: n } = r; console.log("CURRENT KEY:" + n) const a = `${e}:${t}:${n}`; return await digestMessage(a); }; let aesKey = "hj6cdzrhj72x8ht1"; const AES_CBC = { encrypt: function(e, t) { return CryptoJS.AES.encrypt(CryptoJS.enc.Utf8.parse(e), CryptoJS.enc.Utf8.parse(t), { iv: CryptoJS.enc.Utf8.parse(aesKey), mode: CryptoJS.mode.CBC }).toString() }, decrypt: function(e, t) { return CryptoJS.AES.decrypt(e, CryptoJS.enc.Utf8.parse(t), { iv: CryptoJS.enc.Utf8.parse(aesKey), mode: CryptoJS.mode.CBC }).toString(CryptoJS.enc.Utf8) } }; //enc-end //start function addChatBtn() { let mybtn = ``; $(".bg.s_btn_wr").after(mybtn) document.getElementById("mybtn").addEventListener("click", function () { console.log("reloadPage") if (window.location.href.indexOf("baidu.com\/s") > -1) { GM_add_box_style(2) addBothStyle() keyEvent() appendBox(2).then((res) => { pivElemAddEventAndValue(2) }) } }) } function isMobile() { let userAgentInfo = navigator.userAgent.toLowerCase(); let mobileAgents = ["Android", "iPhone", "SymbianOS", "Windows Phone", "iPad", "iPod","Mobile"]; let mobile_flag = false; //根据userAgent判断是否是手机 for (let v = 0; v < mobileAgents.length; v++) { if (userAgentInfo.indexOf(mobileAgents[v].toLowerCase()) > -1) { mobile_flag = true; break; } } return mobile_flag; } //end function katexTohtml(rawHtml) { // console.log("========katexTohtml start=======") let renderedHtml = rawHtml.replace(//g, "").replace(/<\/em>/g, "").replace(/\$\$(.*?)\$\$/g, (_, tex) => { //debugger return katex.renderToString(tex, {displayMode: false, throwOnError: false}); }); renderedHtml = renderedHtml.replace(/\$(.*?)\$/g, (_, tex) => { //debugger return katex.renderToString(tex, {displayMode: false, throwOnError: false}); }); // console.log("========katexTohtml end=======") try { renderedHtml = filterXSS(renderedHtml) //filterXSS }catch (e) { console.warn(e) } return renderedHtml; } function filterXSS(input) { //let output = input.replace(/]*>.*? let req1 = await GM_fetch({ method: "GET", url: "https://xinghuo.xfyun.cn/chat", headers: { "origin":"https://xinghuo.xfyun.cn", "referer":"https://xinghuo.xfyun.cn/" } }) let r = req1.responseText; //console.log(r); let mainjs; try{ mainjs = /src="(\/static\/js\/main.*?.js)"/.exec(r)[1];//https://xinghuo.xfyun.cn/static/js/main.04f3ec36.js console.log("mainjs:",mainjs) }catch (e) { console.error(r) showAnserAndHighlightCodeStr("出错了,js获取失败") } if(mainjs){ console.log("https://xinghuo.xfyun.cn"+ mainjs.trim()) let req2 = await GM_fetch({ method: "GET", url: "https://xinghuo.xfyun.cn"+ mainjs.trim(), headers: { "origin":"https://xinghuo.xfyun.cn", "referer":"https://xinghuo.xfyun.cn/" } }) let rr = req2.responseText; console.log(rr.substring(0,100)) try{ const re = /appId:"(.*?)"/gi; let match; while ((match = re.exec(rr)) !== null) { console.log(match[1]); sp_appId = match[1]; } /*let index = rr.indexOf("appId"); if (index !== -1) { let sp_appId = rr.substring(index, index + 10); // 指定文本 }*/ console.log("sp_appId:",sp_appId) }catch (e) { console.error(e) showAnserAndHighlightCodeStr("出错了,sp_appId获取失败",) } } } setTimeout(()=>{ if(getGPTMode()==="SPARK"){ init_sp_appId() } }) async function init_sp_chatId() { //https://xinghuo.xfyun.cn/iflygpt/u/chat-list/v1/create-chat-list let req1 = await GM_fetch({ method: "POST", url: "https://xinghuo.xfyun.cn/iflygpt/u/chat-list/v1/create-chat-list", headers: { "accept": "application/json, text/plain, */*", "x-requested-with": "XMLHttpRequest", "origin":"https://xinghuo.xfyun.cn", "Content-Type":"application/json", "referer":"https://xinghuo.xfyun.cn/desk" }, data:"{}" }) let r = req1.responseText; try{ sp_chatId = JSON.parse(r).data.id; console.log("sp_chatId:",sp_chatId) }catch (e) { console.error(r) showAnserAndHighlightCodeStr("sp_chatId获取失败") } } setTimeout(()=>{ if(getGPTMode()==="SPARK"){ init_sp_chatId() } },500) async function get_sp_GtToken() { return new Promise(async (resolve, reject) => { //https://riskct.geetest.com/g2/api/v1/pre_load?client_type=h5&callback=geetest_时间戳 let timestamp = Date.now(); let req1 = await GM_fetch({ method: "GET", url: `https://riskct.geetest.com/g2/api/v1/pre_load?client_type=h5&callback=geetest_${timestamp}`, headers: { "accept": "*/*", "referer": "https://xinghuo.xfyun.cn/" } }) let r = req1.responseText; console.log(r); try { let rr = r.replace(`geetest_${timestamp}(`, ""); rr = rr.substring(0, rr.length - 1) console.log("rr", rr) let rj = JSON.parse(rr); console.log("rj:"); console.log(rj); //==== let config = { appId: sp_appId, js: rj.data.js, staticPath: rj.data.staticPath, gToken: rj.data.gToken } console.log("config") console.log(config) setTimeout(() => { initGeeGuard(config, (gd) => { console.log(gd) if (gd.data.gee_token) { sp_GtToken = gd.data.gee_token; resolve(sp_GtToken) }else{ reject("出错") } }) }, 500) } catch (e) { console.error(e) setTimeout(init_sp_chatId) reject("出错") } }) } //解码 function decodeSpark(src) { /*let rv = function(e) { return e.replace(/[^A-Za-z0-9\+\/]/g, "") }*/ let dv = function(e) { //return Buffer.from(e, "base64").toString("utf8") // 将 base64 编码的字符串转换为字节数组 const bytes = CryptoJS.enc.Base64.parse(e); // 将字节数组转换为 UTF-8 字符串 return bytes.toString(CryptoJS.enc.Utf8); }//等价BASE64解码 6KaB /*let fv = function(e) { return dv(function(e) { return rv(e.replace(/[-_]/g, (function(e) { return "-" == e ? "+" : "/" } ))) }(e)) };*/ return dv(src); } let spark_first = true; async function SPARK(){ showAnserAndHighlightCodeStr("请稍后,第一次切换到该线路需要刷新页面,该线路为官网线路,使用前确保已经登录[讯飞星火](https://xinghuo.xfyun.cn/)") await get_sp_GtToken() console.log("sp_GtToken",sp_GtToken) //重命名 if(spark_first){ let req1 = await GM_fetch({ method: "POST", url: "https://xinghuo.xfyun.cn/iflygpt/u/chat-list/v1/rename-chat-list", headers: { "accept": "application/json, text/plain, */*", "x-requested-with": "XMLHttpRequest", "origin":"https://xinghuo.xfyun.cn", "Content-Type":"application/json", "referer":"https://xinghuo.xfyun.cn/desk" }, data:JSON.stringify({ "chatListId": sp_chatId, "chatListName": your_qus.substring(0,10) }) }) let r = req1.responseText; console.log("rename chat:",r) spark_first = false; } //提问 let sendData = `------WebKitFormBoundaryAS7tSr3osJng5Nxk\r\nContent-Disposition: form-data; name=\"fd\"\r\n\r\n${sp_fd}\r\n------WebKitFormBoundaryAS7tSr3osJng5Nxk\r\nContent-Disposition: form-data; name=\"clientType\"\r\n\r\n2\r\n------WebKitFormBoundaryAS7tSr3osJng5Nxk\r\nContent-Disposition: form-data; name=\"chatId\"\r\n\r\n${sp_chatId}\r\n------WebKitFormBoundaryAS7tSr3osJng5Nxk\r\nContent-Disposition: form-data; name=\"text\"\r\n\r\n${your_qus}\r\n------WebKitFormBoundaryAS7tSr3osJng5Nxk\r\nContent-Disposition: form-data; name=\"GtToken\"\r\n\r\n${sp_GtToken}\r\n------WebKitFormBoundaryAS7tSr3osJng5Nxk--\r\n`; GM_fetch({ method: 'POST', url: 'https://xinghuo.xfyun.cn/iflygpt-chat/u/chat_message/chat', headers: { "Content-Type": "multipart/form-data; boundary=----WebKitFormBoundaryAS7tSr3osJng5Nxk", "challenge": "undefined", "seccode": "", "validate": "undefined", "accept": "text/event-stream", "x-requested-with": "XMLHttpRequest", "origin":"https://xinghuo.xfyun.cn", "referer":"https://xinghuo.xfyun.cn/desk" }, responseType: "stream", data: sendData }).then((stream)=> { let reader = stream.response.getReader() let ans = [] //let de = [] reader.read().then(function processText({done, value}) { if (done) { console.log("===done==") //console.log(de) return } let responseItem = new TextDecoder("utf-8").decode(value) console.log(responseItem) responseItem.split("\n").forEach(item=>{ try { let ii = item.replace(/data:/gi,"").trim(); if(ii && ii !==""){ let chunk = decodeSpark(ii) //de.push(item.replace(/data:/gi,"").trim()) ans.push(chunk) showAnserAndHighlightCodeStr(ans.join("")) } }catch (ex){ console.error(item) } }) return reader.read().then(processText) },function (reason) { console.log(reason) }).catch((ex)=>{ console.log(ex) }) }) } //星火相关====end===== //天工 ----start-------- let tg_invite_Token; let tg_token; async function initTGtoken() { if (location.href.includes("neice.tiangong.cn")) { //"invite-token": "Bearer " + c("formNatureQueueWaitToken"), tg_invite_Token = localStorage.getItem("formNatureQueueWaitToken"); //token: "Bearer " + c("formNatureResearchToken"), tg_token = localStorage.getItem("formNatureResearchToken"); await GM_setValue("tg_invite_Token", tg_invite_Token) await GM_setValue("tg_token", tg_token) if(tg_invite_Token){ document.querySelector('div[class="title"]').innerText = `invite_Token获取成功:${tg_invite_Token}` }else{ document.querySelector('div[class="title"]').innerText = `invite_Token获取失败,请再次刷新` } setTimeout(initTGtoken,2500) } else { tg_invite_Token = await GM_getValue("tg_invite_Token") tg_token = await GM_getValue("tg_token") } } setTimeout(initTGtoken) //过时 {"code":60101,"code_msg":"当前使用授权已失效,请重新排队"} //resp_data.invite_token async function waitAccess() { let req1 = await GM_fetch({ method: "POST", url: "https://neice.tiangong.cn/api/v1/queue/waitAccess", headers: { "accept": "application/json, text/plain, */*", "origin":"https://neice.tiangong.cn", "invite-token": `Bearer null`, "Content-Type":"application/json", "token": `Bearer ${tg_token}`, "device": "Web", "referer":"https://neice.tiangong.cn/interlocutionPage" }, data:JSON.stringify({ data:{ token: "" } }) }) let r = req1.responseText; console.log(r) return new Promise(async (resolve, reject) => { try { tg_invite_Token = JSON.parse(r).resp_data.invite_token; await GM_setValue("waitAccess tg_invite_Token", tg_invite_Token) resolve("更新成功,请再次点击") } catch (e) { resolve("waitAccess 异常 请到官网获取token后刷新页面。[天工AI](https://neice.tiangong.cn/interlocutionPage)") } }) } let tg_session_id; let tg_msg_id; let tg_first = true; async function TIANGONG(){ showAnserAndHighlightCodeStr("请稍后...使用该线路,请确保已经登天工官网获取token后刷新页面。[天工AI](https://neice.tiangong.cn/interlocutionPage)") console.log("tg_token:",tg_token) console.log("tg_invite_Token:",tg_invite_Token) if(!tg_invite_Token || !tg_token){ showAnserAndHighlightCodeStr("token错误了。请确保已经登天工官网获取token后刷新页面。[天工AI](https://neice.tiangong.cn/interlocutionPage)") return } //校验 let req1 = await GM_fetch({ method: "POST", url: "https://neice.tiangong.cn/api/v1/user/inviteVerify", headers: { "accept": "application/json, text/plain, */*", "origin":"https://neice.tiangong.cn", "invite-token": `Bearer ${tg_invite_Token}`, "Content-Type":"application/json", "token": `Bearer ${tg_token}`, "device": "Web", "referer":"https://neice.tiangong.cn/interlocutionPage" }, data:JSON.stringify({ data:{} }) }) let r = req1.responseText; console.log(r) if(r.includes("请重新排队")){ showAnserAndHighlightCodeStr("invite_Token失效。请至官网获取token后刷新页面。[天工AI](https://neice.tiangong.cn/interlocutionPage)") /* let result = await waitAccess(); showAnserAndHighlightCodeStr(result)*/ await initTGtoken() return } //新会话 if(!tg_session_id || tg_first){ console.log("新会话") let req1 = await GM_fetch({ method: "POST", url: "https://neice.tiangong.cn/api/v1/session/newSession", headers: { "accept": "application/json, text/plain, */*", "origin":"https://neice.tiangong.cn", "invite-token": `Bearer ${tg_invite_Token}`, "Content-Type":"application/json", "token": `Bearer ${tg_token}`, "device": "Web", "referer":"https://neice.tiangong.cn/interlocutionPage" }, data:JSON.stringify({ data:{ content: your_qus } }) }) let r = req1.responseText; console.log(r) let rj = JSON.parse(r); tg_session_id = rj.resp_data.session_id tg_msg_id = rj.resp_data.dialogue[rj.resp_data.dialogue.length - 1].message_id console.log("tg_session_id:",tg_session_id) console.log("tg_msg_idg:",tg_msg_id) tg_first = false; }else { console.log("旧会话") let req1 = await GM_fetch({ method: "POST", url: "https://neice.tiangong.cn/api/v1/chat/chat", headers: { "accept": "application/json, text/plain, */*", "origin":"https://neice.tiangong.cn", "invite-token": `Bearer ${tg_invite_Token}`, "Content-Type":"application/json", "token": `Bearer ${tg_token}`, "device": "Web", "referer":"https://neice.tiangong.cn/interlocutionPage" }, data:JSON.stringify({ data:{ content: your_qus, session_id: tg_session_id } }) }) let r = req1.responseText; console.log(r) let rj = JSON.parse(r); tg_msg_id = rj.resp_data.result_message.message_id console.log("tg_msg_idg:",tg_msg_id) } //获取信息信息 for (let i = 0; i < 120; i++) { let req2 = await GM_fetch({ method: "POST", timeout: 3000, url: "https://neice.tiangong.cn/api/v1/chat/getMessage", headers: { "accept": "application/json, text/plain, */*", "origin":"https://neice.tiangong.cn", "invite-token": `Bearer ${tg_invite_Token}`, "Content-Type":"application/json", "token": `Bearer ${tg_token}`, "device": "Web", "referer":"https://neice.tiangong.cn/interlocutionPage" }, data:JSON.stringify({ "data": { "message_id": tg_msg_id } }) }) let rr = req2.responseText; console.log(rr) let rj = JSON.parse(rr); try { if(rj.resp_data.result_message.content){ showAnserAndHighlightCodeStr(rj.resp_data.result_message.content) } if(rj.resp_data.result_message.status === 3){ break; } }catch (e) {} await delay(1000) } } //天工 ----end-------- //问心一言 ----start--- let yy_aisearch_id; let yy_pvId; let yy_sessionId; async function initYiYAN(){ let req1 = await GM_fetch({ method: "GET", url: `https://chat.baidu.com/?pcasync=pc&asyncRenderUrl=&passportStaticPage=https%3A%2F%2Fwww.baidu.com%2Fcache%2Fuser%2Fhtml%2Fv3Jump.html&from=pc_tab&word=${encodeURI(your_qus)}&source=pd_ic`, headers: { "accept": "*/*", "origin":"https://www.baidu.com", "referer":`https://www.baidu.com/` }, data:JSON.stringify({ data:{} }) }) let r = req1.responseText; yy_aisearch_id = /"aisearch_id":"(.*?)"/i.exec(r)[1]; yy_pvId = /"pvId":"(.*?)"/i.exec(r)[1]; yy_sessionId = /"sessionId":"(.*?)"/i.exec(r)[1]; console.log("yy_aisearch_id:",yy_aisearch_id) console.log("yy_pvId:",yy_pvId) console.log("yy_sessionId:",yy_sessionId) } setTimeout(()=>{ if(getGPTMode() === 'YIYAN'){ initYiYAN() } }) async function YIYAN() { showAnserAndHighlightCodeStr("请稍后...该线路为官网线路,使用该线路,请确保已经登百度账号,再刷新页面。[百度](https://www.baidu.com/)") GM_fetch({ method: 'POST', url: 'https://chat-ws.baidu.com/aichat/api/conversation', headers: { "origin":"https://www.baidu.com", "referer":`https://www.baidu.com/`, "Content-Type": "application/json", "accept": "text/event-stream" }, responseType: "stream", data: JSON.stringify({ "message": { "inputMethod": "keyboard", "isRebuild": false, "content": { "query": your_qus, "qtype": 0 } }, "sessionId": yy_sessionId, "aisearchId": yy_aisearch_id, "pvId": yy_pvId }) }).then((stream)=> { let reader = stream.response.getReader() let ans = [] let preResponseItem = '';//前一记录 let combineItem = [];//合并 let referenceList;//引用 reader.read().then(function processText({done, value}) { if (done) { console.log("===done==") //console.log(de) let result = ans.join(""); let arr = result.match(/\^(.*?)\^/g); let oldArr = arr.slice() if(referenceList && referenceList.length > 0){ for (let i = 0; i < arr.length; i++) { for (let j = 0; j < referenceList.length; j++) { if(arr[i].includes(`[${j+1}]`)){ let url = referenceList[j].url; arr[i] = arr[i].replace(`[${j+1}]`,`[${j+1}](${url})`) } } } } console.log("arr:",arr) console.log("oldArr:",oldArr) for (let i = 0; i < oldArr.length; i++) { result = result.replace(oldArr[i],arr[i].replace(/\^/g,"")) } showAnserAndHighlightCodeStr(result) return } let responseItem = new TextDecoder("utf-8").decode(value) console.log(responseItem) if(!responseItem.includes("event:ping") && !responseItem.startsWith("event:messag")){ combineItem.push(preResponseItem) combineItem.push(responseItem) preResponseItem = '';//恢复初始 responseItem = combineItem.join("")//合并 console.log("combineItem:",responseItem) combineItem = [];//清空 }else if(!responseItem.includes("event:ping")){ preResponseItem = responseItem; } responseItem.split("\n").forEach(item=>{ try { let ii = item.replace(/data:/gi,"").trim(); if(ii && ii !==""){ let chunk = JSON.parse(ii).data.message.content.generator.text //de.push(item.replace(/data:/gi,"").trim()) ans.push(chunk) showAnserAndHighlightCodeStr(ans.join("")) if(JSON.parse(ii).data.message.content.generator.referenceList){ referenceList = JSON.parse(ii).data.message.content.generator.referenceList } } }catch (ex){ console.error(item) } }) return reader.read().then(processText) },function (reason) { console.log(reason) }).catch((ex)=>{ console.log(ex) }) }) } //问心一言 ----end--- //ChatGLM相关 ----start----- //https://chatglm.cn let chatgml_token; async function init_chatgml_token() { if (location.href.includes("chatglm.cn")) { chatgml_token = getCookieValue(document.cookie, "chatglm_token") await GM_setValue("chatgml_token", chatgml_token) if (chatgml_token) { console.log(`chatgml_token获取成功:${chatgml_token}`) } else { console.log('invite_Token获取失败,请再次刷新') } } else if(getGPTMode() === 'ChatGLM') { chatgml_token = await GM_getValue("chatgml_token") console.log("chatgml_token:", chatgml_token) } } setTimeout(()=>{ init_chatgml_token() setInterval(init_chatgml_token,5000) }) let chatgml_first = true; let chatgml_task_id; let chatgml_context_id; async function ChatGLM() { console.log("chatgml_token:",chatgml_token) showAnserAndHighlightCodeStr("请稍后...该线路为官网线路,使用该线路,请确保已经登录并获取token,再刷新页面。[ChatGLM](https://chatglm.cn/)") if(!chatgml_token){ setTimeout(init_chatgml_token) showAnserAndHighlightCodeStr("init_chatgml_token为空,请确保已经登录并获取token,再刷新页面。[ChatGLM](https://chatglm.cn/)") return } if (chatgml_first || !chatgml_task_id) { let req1 = await GM_fetch({ method: "POST", url: `https://chatglm.cn/chatglm/backend-api/v1/conversation`, headers: { "accept": "application/json, text/plain, */*", "authorization": `Bearer ${chatgml_token}`, "origin": "https://chatglm.cn", "content-type": "application/json;charset=UTF-8", "referer": `https://chatglm.cn/detail` }, data: JSON.stringify({ "prompt": your_qus }) }) let r = req1.responseText; let jsonObj = JSON.parse(r); try { chatgml_task_id = jsonObj.result.task_id; console.log("chatgml_task_id:",chatgml_task_id) chatgml_first = false; }catch (e) { showAnserAndHighlightCodeStr("task_id出错了,请确保已经登录并获取token,再刷新页面。[ChatGLM](https://chatglm.cn/)") return } } let req1 = await GM_fetch({ method: "POST", url: `https://chatglm.cn/chatglm/backend-api/v1/stream_context`, headers: { "accept": "application/json, text/plain, */*", "authorization": `Bearer ${chatgml_token}`, "origin": "https://chatglm.cn", "content-type": "application/json;charset=UTF-8", "referer": `https://chatglm.cn/detail` }, data: JSON.stringify({ "prompt": your_qus, "seed": 69809, "max_tokens": 512, "conversation_task_id": chatgml_task_id, "retry": false, "retry_history_task_id": null }) }) let r = req1.responseText; let jsonObj = JSON.parse(r); try { chatgml_context_id = jsonObj.result.context_id; console.log("chatgml_context_id:",chatgml_task_id) }catch (e) { showAnserAndHighlightCodeStr("context_id出错了,请确保已经登录并获取token,再刷新页面。[ChatGLM](https://chatglm.cn/)") return } GM_fetch({ method: "GET", url: `https://chatglm.cn/chatglm/backend-api/v1/stream?context_id=${chatgml_context_id}`, headers: { "accept": "text/event-stream", "origin": "https://chatglm.cn", "referer": `https://chatglm.cn/detail` }, responseType:"stream" }).then((stream)=> { let reader = stream.response.getReader() reader.read().then(function processText({done, value}) { if (done) { showAnserAndHighlightCodeStr() return } let responseItem = new TextDecoder("utf-8").decode(value) // console.error(responseItem) responseItem = responseItem.split("\n\n"); console.warn(responseItem) responseItem.forEach(item=>{ try { if(item && item.startsWith("event:add") || item.startsWith("event:finish")){ let ii = item.replace(/data:/gi,"") .replace(/event:add/gi,"") .replace(/event:finish/gi,"") .trim(); if(ii){ showAnserAndHighlightCodeStr(ii) } } }catch (ex){ console.error(item) } }) return reader.read().then(processText) },function (reason) { console.log(reason) }).catch((ex)=>{ console.log(ex) }) }) } //ChatGLM相关 ----start----- //360智脑 -------start------ let conversation_id = `con-${uuidv4()}` async function Zhinao360(){ showAnserAndHighlightCodeStr("请稍后...该线路为官网线路,使用该线路,请确保已经登录[360智脑](https://chat.360.cn/)") const sendData = JSON.stringify({ "prompt": your_qus, "conversation_id": conversation_id, "source_type": "prophet_web", "message_id": `msg-${uuidv4()}`, "is_so": false }); GM_fetch({ method: "POST", url: `https://chat.360.cn/backend-api/api/common/chat`, headers: { "accept": "text/event-stream", "origin": "https://chat.360.cn", "referer": `https://chat.360.cn/index`, "content-type": "application/json", }, data: sendData, responseType:"stream" }).then((stream)=> { let reader = stream.response.getReader() let result = [] reader.read().then(function processText({done, value}) { if (done) { return } let responseItem = new TextDecoder("utf-8").decode(value) // console.error(responseItem) console.warn(responseItem) if(responseItem){ responseItem.split("\r\n").forEach(item=>{ try{ if(item.startsWith("data")){ let i = item.replace(/data: /gi,"") if(i.trim()){ result.push(i) }else{ result.push("\n") } } }catch (e) {} }) showAnserAndHighlightCodeStr(result.join("")) } return reader.read().then(processText) },function (reason) { console.log(reason) }).catch((ex)=>{ console.log(ex) }) }) } //360智脑 -------end------ async function ChatGO() { let response = await GM_fetch({ method: "GET", url: `https://gptgo.ai/action_get_token.php?q=${encodeURIComponent(your_qus)}&hlgpt=default`, headers: { "Referer": "https://gptgo.ai/?hl=zh", "origin": "https://gptgo.ai/", } }); let resp = response.responseText; if(!resp){ return ; } let tk = JSON.parse(resp).token; console.log("tk:",tk) GM_fetch({ method: "GET", url: `https://gptgo.ai/action_ai_gpt.php?token=${tk}`, headers: { "Referer": "https://gptgo.ai/?hl=zh", "origin": "https://gptgo.ai/", "accept": "text/event-stream" }, responseType:"stream" }).then((stream)=>{ let result = [] const reader = stream.response.getReader(); reader.read().then(function processText({done, value}) { if (done) { return; } try { let d = new TextDecoder("utf8").decode(new Uint8Array(value)); console.warn(d) d.split("\n").forEach(item=>{ try { let chunk = JSON.parse(item.replace(/data:/,"").trim()) .choices[0].delta.content; result.push(chunk) }catch (ex){ } }) showAnserAndHighlightCodeStr(result.join("")) } catch (e) { console.log(e) } return reader.read().then(processText); }); },reason => { console.log(reason) }).catch((ex)=>{ console.log(ex) }) } async function MixerBox() { GM_fetch({ method: "POST", url: `https://chatai.mixerbox.com/api/chat/stream`, headers: { "Referer": "https://chatai.mixerbox.com/chat", "origin": "https://chatai.mixerbox.com", "accept": "*/*", "content-type": "application/json", "user-agent": "Mozilla/5.0 (Android 12; Mobile; rv:107.0) Gecko/107.0 Firefox/107.0" }, data:JSON.stringify({ "prompt": [ { "role": "user", "content": your_qus } ], "lang": "zh", "maxToken": 512, "model": 3.5, "webVersion": "0.2.0", "userAgent": "Mozilla/5.0 (Android 12; Mobile; rv:107.0) Gecko/107.0 Firefox/107.0", "isExtension": false, "isSummarize": false, "initialMessages": null, "baseUrl": "" }), responseType:"stream" }).then((stream)=>{ let result = [] const reader = stream.response.getReader(); reader.read().then(function processText({done, value}) { if (done) { return; } try { let d = new TextDecoder("utf8").decode(new Uint8Array(value)); console.warn(d) d.split("\n").forEach(item=>{ try { if(item.startsWith("data")){ result.push(item.replace(/data: /gi,"")) } }catch (ex){ } }) showAnserAndHighlightCodeStr(result.join(""). replace(/\[space\]/gi," ").replace(/\[NEWLINE\]/gi,"\n")) } catch (e) { console.log(e) } return reader.read().then(processText); }); },reason => { console.log(reason) }).catch((ex)=>{ console.log(ex) }) } let ohmygpt_session_id = '53793dce-7805-45ac-a226-7bc62bc4aef4'; let ohmygpt_messageChain = [{"role":"system","content":"You are ChatGPT, a large language model trained by OpenAI."}] async function OhMyGPT() { addMessageChain(ohmygpt_messageChain, {"role":"user","content":your_qus},10) const params = new URLSearchParams(); let sendData = { session_id: ohmygpt_session_id, content: JSON.stringify(ohmygpt_messageChain), max_context_length: '5', params: '{"model":"gpt-3.5-turbo","temperature":1,"max_tokens":2048,"presence_penalty":0,"frequency_penalty":0,"max_context_length":5,"voiceShortName":"zh-CN-XiaoxiaoNeural","rate":1,"pitch":1}' } for (const key in sendData) { params.append(key, sendData[key]); } const encodedData = params.toString(); GM_fetch({ method: "POST", url: `https://www.ohmygpt.com/api/v1/ai/chatgpt/chat`, headers: { "Referer": "https://www.ohmygpt.com/", "authorization": "Bearer eyJhbGciOiJFUzUxMiIsInR5cCI6IkpXVCJ9.eyJpZCI6IjQ0OTciLCJlbWFpbCI6InhpYW95YW5nNjY4OEBmb3htYWlsLmNvbSIsInB1cnBvc2UiOiJ3ZWIiLCJpYXQiOjE2ODY0NTMzODIsImV4cCI6MTY4NzY2Mjk4Mn0.AWywkwDRd6d3h4imvhG1SUn0eg3Rb_-MAqZkfoAQAsUJlznBkYP_mIHU2YWpJxS_XbdXt2TwZ5PIT9PgcnQu3Y4WAMWoBxJxFb0TIjJ5hmLp7aTeR6Hctp0-o3E87FrlEShvBOWoOXQPuAmIeNHaMv2nwtw-MShyn8J_RJ9lt2SCBWT6", "origin": "https://www.ohmygpt.com", "accept": "text/event-stream", "content-type": 'application/x-www-form-urlencoded', }, data: encodedData, responseType:"stream" }).then((stream)=>{ let result = [] const reader = stream.response.getReader(); reader.read().then(function processText({done, value}) { if (done) { return; } try { let d = new TextDecoder("utf8").decode(new Uint8Array(value)); console.warn(d) result.push(d) showAnserAndHighlightCodeStr(result.join("")) } catch (e) { console.log(e) } return reader.read().then(processText); }); },reason => { console.log(reason) }).catch((ex)=>{ console.log(ex) }) } let pizzaSecret; function PIZZA() { abortXml = GM_xmlhttpRequest({ method: "POST", url: "https://www.pizzagpt.it/api/chat-completion", headers: { "Content-Type": "text/plain;charset=UTF-8", "Referer": `https://www.pizzagpt.it/` }, data: JSON.stringify({ question: your_qus, secret: pizzaSecret }), onload: function (res) { if (res.status === 200) { console.log('成功....') console.log(res) let rest = res.responseText //console.log(rest.choices[0].text.replaceAll("\n","
")) try { showAnserAndHighlightCodeStr(JSON.parse(rest).answer.content) } catch (e) { //TODO handle the exception console.log(e) document.getElementById('gptAnswer').innerHTML = rest } } else { console.log('失败') console.log(res) document.getElementById('gptAnswer').innerHTML = '访问失败了' } }, responseType: "text", onerror: function (err) { console.error(err) showAnserAndHighlightCodeStr("出错,[访问](https://www.pizzagpt.it/)") } }); } function PHIND() { GM_xmlhttpRequest({ method: "POST", url: "https://www.phind.com/api/web/search", headers: { "Content-Type": "application/json", "Referer": `https://www.phind.com` }, data: JSON.stringify({ "q": your_qus, "userRankList": {}, "browserLanguage": "zh-CN" }), onload: function (res) { if (res.status === 200) { console.log('成功....') console.log(res) let rest = res.responseText //console.log(rest.choices[0].text.replaceAll("\n","
")) let rjson = JSON.parse(rest); let _bingResults = rjson.processedBingResults; console.log(_bingResults) GM_xmlhttpRequest({ method: "POST", url: "https://www.phind.com/api/infer/answer", headers: { "Content-Type": "application/json", "Referer": "https://www.phind.com/", "accept": "*/*" }, data: JSON.stringify({ "question": your_qus, "bingResults": _bingResults, "codeContext": "", "options": { "skill": "intermediate", "date": formatTime(), "language": "zh-CN", "detailed": true, "creative": false } }), onloadstart: (stream) => { let result = []; const reader = stream.response.getReader(); reader.read().then(function processText({done, value}) { if (done) { let finalResult = result.join("") try { console.log(finalResult) showAnserAndHighlightCodeStr(finalResult) } catch (e) { console.log(e) } return; } try { let d = new TextDecoder("utf8").decode(new Uint8Array(value)); console.log(d) let dd = d.replace(/data: /g, "").split("\r\n\r\n") console.log("dd:",dd) dd.forEach(item=>{ try { result.push(item) showAnserAndHighlightCodeStr(result.join("")) }catch (e) { } }) } catch (e) { console.log(e) } return reader.read().then(processText); }); }, responseType: "stream", onprogress: function (msg) { //console.log(msg) }, onerror: function (err) { console.log(err) }, ontimeout: function (err) { console.log(err) } }); } else { console.log('失败') console.log(res) showAnserAndHighlightCodeStr('访问失败了,[phind](https://www.phind.com/api/web/search)') } }, responseType: "application/json;charset=UTF-8", onerror: function (err) { document.getElementById('gptAnswer').innerHTML = `
some err happends,errinfo :
${err.messages}
` } }); } function WOBCW() { GM_xmlhttpRequest({ url: "https://chat1.wobcw.com/chat", headers: { "accept": "*/*", "referrer": "https://chat1.wobcw.com/", "content-type": "multipart/form-data; boundary=----WebKitFormBoundarybrMK1QixymFcNJzK" }, data: `------WebKitFormBoundarybrMK1QixymFcNJzK\r\nContent-Disposition: form-data; name=\"prompt\"\r\n\r\n${your_qus}\r\n------WebKitFormBoundarybrMK1QixymFcNJzK\r\nContent-Disposition: form-data; name=\"regen\"\r\n\r\nfalse\r\n------WebKitFormBoundarybrMK1QixymFcNJzK--\r\n`, method: "POST", onload: (resp) => { let rs = resp.responseText; console.log(rs) let chat_id = JSON.parse(rs).chat_id; console.log(chat_id) abortXml = GM_xmlhttpRequest({ method: "GET", url: `https://chat1.wobcw.com/stream?chat_id=${chat_id}&api_key=`, headers: { "Content-Type": "application/json", // "Authorization": "Bearer null", "Referer": "https://chat1.wobcw.com/", "accept": "text/event-stream" }, onloadstart: (stream) => { let result = []; let finalResult = []; const reader = stream.response.getReader(); reader.read().then(function processText({done, value}) { if (done) { finalResult = result.join("") showAnserAndHighlightCodeStr(finalResult) return; } try { let d = new TextDecoder("utf8").decode(new Uint8Array(value)); console.log("raw:",d) let dd = d.replace(/data: /g, "").split("\n\n") console.log("dd:",dd) dd.forEach(item=>{ try { let delta = JSON.parse(item).choices[0].delta.content result.push(delta) showAnserAndHighlightCodeStr(result.join("")) }catch (e) { } }) } catch (e) { console.log(e) } return reader.read().then(processText); }); }, responseType: "stream", onerror: function (err) { console.log(err) showAnserAndHighlightCodeStr("erro:", err) } }) }//end onload }) } let parentID_tianhu; let tianhu_first = true; function AITIANHU() { let ops = {}; if (parentID_tianhu) { ops = {parentMessageId: parentID_tianhu}; } console.log(ops) if (tianhu_first) { GM_xmlhttpRequest({ method: "POST", synchronous: true, url: "https://www.aitianhu.com/api/session", headers: { "Content-Type": "application/json", "Referer": "https://www.aitianhu.com/", "origin": "https://www.aitianhu.com", "accept": "application/json, text/plain, */*" }, onload: function (res) { console.log(res) } }) tianhu_first = false; } abortXml = GM_xmlhttpRequest({ method: "POST", url: "https://www.aitianhu.com/api/chat-process", headers: { "Content-Type": "application/json", "Referer": "https://www.aitianhu.com/", "origin": "https://www.aitianhu.com", "accept": "application/json, text/plain, */*" }, data: JSON.stringify({ top_p: 1, prompt: your_qus, systemMessage: "You are ChatGPT, a large language model trained by OpenAI. Follow the user's instructions carefully. Respond using markdown.", temperature: 0.8, options: ops }), onloadstart: (stream) => { let result = ""; const reader = stream.response.getReader(); // console.log(reader.read) let finalResult; reader.read().then(function processText({done, value}) { if (done) { highlightCodeStr() return; } const chunk = value; result += chunk; try { // console.log(normalArray) let byteArray = new Uint8Array(chunk); let decoder = new TextDecoder('utf-8'); console.log(decoder.decode(byteArray)) let jsonLines = decoder.decode(byteArray).split("\n"); let nowResult = JSON.parse(jsonLines[jsonLines.length - 1]) if (nowResult.text) { console.log(nowResult) finalResult = nowResult.text showAnserAndHighlightCodeStr(finalResult) } if (nowResult.id) { parentID_tianhu = nowResult.id; } } catch (e) { } return reader.read().then(processText); }); }, responseType: "stream", onerror: function (err) { console.log(err) showAnserAndHighlightCodeStr("erro:", err) } }) } let parentID_anzz; function authAnzz(){ console.log("authANZZ") GM_fetch({ method: "POST", url: "https://free.anzz.top/api/session", headers: { "Content-Type": "application/json", "Referer": `https://free.anzz.top/` }, data: JSON.stringify({}) }).then((res)=>{ console.log(res) }).catch((ex)=>{ console.log(ex) }) } setTimeout(authAnzz); function ANZZ() { let ops = {}; if (parentID_anzz) { ops = {parentMessageId: parentID_anzz}; } console.log(ops) abortXml = GM_xmlhttpRequest({ method: "POST", url: "https://free.anzz.top/api/chat-process", headers: { "Content-Type": "application/json", "Referer": "https://free.anzz.top/", "origin": "https://free.anzz.top", "accept": "application/json, text/plain, */*" }, data: JSON.stringify({ top_p: 1, prompt: your_qus, systemMessage: "You are ChatGPT, a large language model trained by OpenAI. Follow the user's instructions carefully. Respond using markdown.", temperature: 0.8, options: ops }), onloadstart: (stream) => { let result = ""; const reader = stream.response.getReader(); // console.log(reader.read) let finalResult; reader.read().then(function processText({done, value}) { if (done) { return; } const chunk = value; result += chunk; try { let byteArray = new Uint8Array(chunk); let decoder = new TextDecoder('utf-8'); let d = decoder.decode(byteArray); let dd = d.split("\n"); console.log(dd[dd.length - 1]) let nowResult = JSON.parse(dd[dd.length - 1]) if (nowResult.text) { console.log(nowResult) finalResult = nowResult.text showAnserAndHighlightCodeStr(finalResult.replace(/hello-ai.anzz.top/gi,"") .replace(/hello-ai/gi,"") .replace(/xxxily/gi,"")) } if (nowResult.id) { parentID_anzz = nowResult.id; } } catch (e) { } return reader.read().then(processText); }); }, responseType: "stream", onerror: function (err) { console.log(err) showAnserAndHighlightCodeStr("erro:", err) } }) } let parentID_hhw; function HEHANWANG() { let ops = {}; if (parentID_hhw) { ops = {parentMessageId: parentID_hhw}; } console.log(ops) GM_fetch({ method: "POST", url: "https://chat1.hehanwang.com/api/chat-process", headers: { "Content-Type": "application/json", "Referer": "https://chat1.hehanwang.com/", "Authorization": "Bearer 293426", "accept": "application/json, text/plain, */*" }, data: JSON.stringify({ top_p: 1, prompt: your_qus, systemMessage: "You are ChatGPT, a large language model trained by OpenAI. Follow the user's instructions carefully. Respond using markdown.", temperature: 0.8, options: ops }), responseType: "stream" }).then((stream) => { let result = ""; const reader = stream.response.getReader(); // console.log(reader.read) let finalResult; reader.read().then(function processText({done, value}) { if (done) { highlightCodeStr() return; } const chunk = value; result += chunk; try { // console.log(normalArray) let byteArray = new Uint8Array(chunk); let decoder = new TextDecoder('utf-8'); console.log(decoder.decode(byteArray)) let jsonLines = decoder.decode(byteArray).split("\n"); let nowResult = JSON.parse(jsonLines[jsonLines.length - 1]) if (nowResult.text) { console.log(nowResult) finalResult = nowResult.text showAnserAndHighlightCodeStr(finalResult) } if (nowResult.id) { parentID_hhw = nowResult.id; } } catch (e) { } return reader.read().then(processText); }); },(reason)=>{ console.log(reason) }).catch((ex)=>{ console.log(ex) }); } let messageChain7 = [];//CHATDDD function CHATDDD() { let baseURL = "https://chatgptdddd.com/"; addMessageChain(messageChain7, {role: "user", content: your_qus})//连续话 GM_fetch({ method: "POST", url: baseURL + "api/chat", headers: { "Content-Type": "application/json", "Referer": baseURL }, data: JSON.stringify({ messages: messageChain7, model: { "id": "gpt-3.5-turbo", "name": "GPT-3.5", "maxLength": 12000, "tokenLimit": 4000 }, temperature: 1, prompt: "你是 ChatGPT,一个由 OpenAI 训练的大型语言模型。你可以回答各种问题,帮助人们解决问题。 please think in english and answer by chinese", key: null }), responseType: "stream" }).then((stream) => { let result = []; const reader = stream.response.getReader(); reader.read().then(function processText({done, value}) { if (done) { let finalResult = result.join("") try { console.log(finalResult) addMessageChain(messageChain7, { role: "assistant", content: finalResult }) showAnserAndHighlightCodeStr(finalResult) } catch (e) { console.log(e) } return; } try { let d = new TextDecoder("utf8").decode(new Uint8Array(value)); result.push(d) showAnserAndHighlightCodeStr(result.join("")) } catch (e) { console.log(e) } return reader.read().then(processText); },function (reason) { console.log(reason) }).catch((ex)=>{ console.log(ex) }); }); } //https://gpt.esojourn.org/api/chat-stream https://0505.betai55.uk/api/chat-stream let eso_access_code; function ESO() { let baseURL = "https://gpt.esojourn.org/"; addMessageChain(messageChain4, {role: "user", content: your_qus})//连续话 GM_xmlhttpRequest({ method: "POST", url: baseURL + "api/chat-stream", headers: { "Content-Type": "application/json", "access-code": eso_access_code ? eso_access_code: "586-484-535D", "path": "v1/chat/completions", "Referer": baseURL }, data: JSON.stringify({ messages: messageChain4, stream: true, model: "gpt-3.5-turbo", temperature: 1, max_tokens: 2000, presence_penalty: 0 }), onloadstart: (stream) => { let result = []; const reader = stream.response.getReader(); reader.read().then(function processText({done, value}) { if (done) { let finalResult = result.join("") try { console.log(finalResult) addMessageChain(messageChain4, { role: "assistant", content: finalResult }) showAnserAndHighlightCodeStr(finalResult) } catch (e) { console.log(e) } return; } try { let d = new TextDecoder("utf8").decode(new Uint8Array(value)); result.push(d) showAnserAndHighlightCodeStr(result.join("")) } catch (e) { console.log(e) } return reader.read().then(processText); }); }, responseType: "stream", onerror: function (err) { console.log(err) } }); } //https://ai1.chagpt.fun/ function CVEOY() { let baseURL = "https://free-api.cveoy.top/"; GM_xmlhttpRequest({ method: "POST", url: baseURL + "v3/completions", headers: { "Content-Type": "application/json", "origin": "https://ai1.chagpt.fun", "Referer": baseURL }, data: JSON.stringify({ prompt: your_qus }), onloadstart: (stream) => { let result = []; const reader = stream.response.getReader(); reader.read().then(function processText({done, value}) { if (done) { try { let finalResult = result.join("") console.log(finalResult) showAnserAndHighlightCodeStr(finalResult) } catch (e) { console.log(e) } return; } try { let d = new TextDecoder("utf8").decode(new Uint8Array(value)); if(d.match(/wxgpt@qq.com/gi)){ d = d.replace(/wxgpt@qq.com/gi,"") } result.push(d); console.log(d) showAnserAndHighlightCodeStr(result.join("")) } catch (e) { console.log(e) } return reader.read().then(processText); }); }, responseType: "stream", onerror: function (err) { console.log(err) } }); } let message_extkj = [{role: 'assistant', content: '你好!有什么我可以帮助你的吗?'}]; let extkj_key = ''; let extkj_auth = '' function EXTKJ() { addMessageChain(message_extkj,{role: 'user', content: your_qus}, 10) let sendData = JSON.stringify({ auth: extkj_auth ? extkj_auth : 'chatextkj.cn.joe.fe;p2kf;e', prompt: your_qus, messages: message_extkj }); console.log(sendData) let pt = CryptoJS.AES.encrypt(sendData, extkj_key ? extkj_key : '806.i4.dds764&65eyeadnf').toString() console.log("aes:" + pt) abortXml = GM_xmlhttpRequest({ method: "POST", url: "https://chat.extkj.cn/api/chat-stream", headers: { "Content-Type": "application/json", "Referer": "https://chat.extkj.cn/", "origin": "https://chat.extkj.cn", "accept": "application/json, text/plain, */*" }, data: JSON.stringify({ data: pt }), onloadstart: (stream) => { const reader = stream.response.getReader(); let finalResult = []; reader.read().then(function processText({done, value}) { if (done) { addMessageChain(message_extkj, {role: 'assistant', content: finalResult}, 10) return; } try { // console.log(normalArray) let byteArray = new Uint8Array(value); let decoder = new TextDecoder('utf-8'); console.warn(decoder.decode(byteArray)) let nowResult = decoder.decode(byteArray) if (nowResult) { let jsonLine = nowResult.split("\n"); let jsonObj = JSON.parse(jsonLine[jsonLine.length - 1]); finalResult = jsonObj.text; showAnserAndHighlightCodeStr(finalResult) } } catch (e) { console.error(e) } return reader.read().then(processText); }); }, responseType: "stream", onerror: function (err) { console.log(err) } }) } //6.15 fix update https://gpt.lovebaby.today/ let xwz_token = 'ak-oneperfect520' let xwz_url = 'https://fasd131fssoi7896agou79ip6.lovebaby.today/' function XIAOWENZI() { let baseURL = xwz_url; addMessageChain(messageChain8, {role: "user", content: your_qus})//连续话 GM_fetch({ method: "POST", url: baseURL + "api/openai/v1/chat/completions", headers: { "Content-Type": "application/json", "accept": "text/event-stream", "origin": "https://fasdsgdfsg97986agagyk656.lovebaby.today", "Referer": baseURL, "authorization": `Bearer ${xwz_token}`, "x-requested-with": "XMLHttpRequest" }, data: JSON.stringify({ messages: messageChain8, stream: true, model: "gpt-3.5-turbo", temperature: 0.5, presence_penalty: 0 }), responseType: "stream" }).then((stream)=>{ let result = []; const reader = stream.response.getReader(); reader.read().then(function processText({done, value}) { if (done) { let finalResult = result.join("") try { console.log(finalResult) addMessageChain(messageChain5, { role: "assistant", content: finalResult }) showAnserAndHighlightCodeStr(finalResult) } catch (e) { console.log(e) } return; } try { let d = new TextDecoder("utf8").decode(new Uint8Array(value)); d.split("\n").forEach(item=>{ try { let chunk = JSON.parse(item.replace(/data:/,"").trim()) .choices[0].delta.content; result.push(chunk) showAnserAndHighlightCodeStr(result.join("")) }catch (ex){ } }) } catch (e) { console.log(e) } return reader.read().then(processText); }); },reason => { console.log(reason) }).catch((ex)=>{ console.log(ex) }) } //获取A类网站key 2023年5月3日 async function setNormalKey(url) { let response = await GM_fetch({ method: "GET", url: url, headers: { "Referer": url+"/", "origin": url, "upgrade-insecure-requests":"1" } }); let resp = response.responseText; if(!resp){ response = await GM_fetch({ method: "GET", url: url, headers: { "accept":"text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9", "Referer": url+"/", "origin": url, "cookie":"_h=_1", "upgrade-insecure-requests":"1" } }); resp = response.responseText; } let regex = /component-url="(.*?)"/i; let match = resp.match(regex); let jsurl = match[1]; console.log("js url:" + jsurl); if (!jsurl) { //错误 console.log(resp) return } let rr = await GM_fetch({ method: "GET", url: url + jsurl, headers: { "Referer": url+"/", "origin": url, "cookie":"_h=_1" } }); resp = rr.responseText; regex = /\`\$\{\w\}:\$\{\w\}:(.*?)\`/i; match = resp.match(regex); let key = match[1]; console.log(url+":key:",key) return key } let bnuKey = localStorage.getItem("bnuKey"); let bnuList; let bnuInt = localStorage.getItem("bnuInt") || Math.floor(Math.random() * 7); //https://ic.muspimerol.site/ function BNU120() { let now = Date.now(); let Baseurl = `https://chat.${bnuInt}.bnu120.space/` generateSignatureWithPkey({ t: now, m: your_qus || "", pkey: bnuKey }).then(sign => { addMessageChain(messageChain9, {role: "user", content: your_qus})//连续话 console.log(sign) GM_fetch({ method: "POST", url: Baseurl + "api/generate", headers: { "Content-Type": "application/json", "Referer": Baseurl, "accept": "application/json, text/plain, */*" }, data: JSON.stringify({ messages: messageChain9, time: now, pass: null, sign: sign }), responseType: "stream" }).then((stream) => { let result = []; const reader = stream.response.getReader(); reader.read().then(function processText({done, value}) { if (done) { let finalResult = result.join("") try { console.log(finalResult) addMessageChain(messageChain9, { role: "assistant", content: finalResult }) showAnserAndHighlightCodeStr(finalResult) if(finalResult.includes("Invalid signature") || finalResult.includes("exceeded your current")){ showAnserAndHighlightCodeStr(`请到设置更新key`) } } catch (e) { console.log(e) } return; } try { let d = new TextDecoder("utf8").decode(new Uint8Array(value)); result.push(d) showAnserAndHighlightCodeStr(result.join("") .replace(/muspimerol/gi,"")) } catch (e) { console.log(e) } return reader.read().then(processText); }); },function (reason) { console.log(reason) }).catch((ex)=>{ console.log(ex) }); }); } let messageChain_yeyu = [] function YeYu() { let sk = localStorage.getItem("openAIkey"); if(!sk){ setPubkey() } let now = Date.now(); let Baseurl = `https://chat.yeyu1024.xyz/` generateSignatureWithPkey({ t:now, m: your_qus || "", pkey: "" }).then(sign => { addMessageChain(messageChain_yeyu, {role: "user", content: your_qus})//连续话 console.log(sign) GM_fetch({ method: "POST", url: Baseurl + "api/generate", headers: { "Content-Type": "application/json", "Referer": Baseurl, "accept": "application/json, text/plain, */*" }, data: JSON.stringify({ messages: messageChain_yeyu, time: now, pass: null, skey: sk ? sk : '', sign: sign }), responseType: "stream" }).then((stream) => { let result = []; const reader = stream.response.getReader(); reader.read().then(function processText({done, value}) { if (done) { let finalResult = result.join("") try { console.log(finalResult) addMessageChain(messageChain_yeyu, { role: "assistant", content: finalResult }) showAnserAndHighlightCodeStr(finalResult) if(finalResult.includes("Invalid signature") || finalResult.includes("exceeded your current")){ showAnserAndHighlightCodeStr(`无效或过期,请到设置更新key`) } } catch (e) { console.log(e) } return; } try { let d = new TextDecoder("utf8").decode(new Uint8Array(value)); result.push(d) showAnserAndHighlightCodeStr(result.join("")) } catch (e) { console.log(e) } return reader.read().then(processText); }); },function (reason) { console.log(reason) showAnserAndHighlightCodeStr(reason.message) }).catch((ex)=>{ console.log(ex) showAnserAndHighlightCodeStr(ex.message) }); }); } let formatTime = () => { let padZero = (num) => { // 如果数字小于 10,前面补一个 0 return num < 10 ? `0${num}` : num; } const now = new Date(); // 获取当前时间 const hours = now.getHours(); // 获取小时 const minutes = now.getMinutes(); // 获取分钟 const seconds = now.getSeconds(); // 获取秒数 // 格式化为 HH:MM:SS 的形式 return `${padZero(hours)}:${padZero(minutes)}:${padZero(seconds)}`; } let cleandxid = generateRandomString(21); let cleandxList = []; function CLEANDX() { let Baseurl = "https://c3.a0.chat/"; console.log(formatTime()) cleandxList.push({"content": your_qus, "role": "user", "nickname": "我", "time": `${formattedDate()} ${formatTime()}`, "isMe": true}) cleandxList.push({"content":"正在思考中...","role":"assistant","nickname":"小助手","time": `${formattedDate()} ${formatTime()}`,"isMe":false}) console.log(cleandxList) console.log(cleandxid) if (cleandxList.length > 6){ cleandxList = cleandxList.shift(); } abortXml= GM_xmlhttpRequest({ method: "POST", url: Baseurl + "v1/chat/gpt/", headers: { "Content-Type": "application/json", "X-Forwarded-For": generateRandomIP(), "Referer": Baseurl, "accept": "application/json, text/plain, */*" }, data: JSON.stringify({ "list": cleandxList, "id": cleandxid, "title": your_qus, "prompt": "", "temperature": 0.5, "models": "0", "time": `${formattedDate()} ${formatTime()}`, "continuous": true }), onloadstart: (stream) => { let result = []; const reader = stream.response.getReader(); reader.read().then(function processText({done, value}) { if (done) { let finalResult = result.join("") try { console.log(finalResult) cleandxList[cleandxList.length - 1] = { "content": finalResult, "role": "assistant", "nickname": "小助手", "time": `${formattedDate()} ${formatTime()}`, "isMe": false }; showAnserAndHighlightCodeStr(finalResult) } catch (e) { console.log(e) } return; } try { let d = new TextDecoder("utf8").decode(new Uint8Array(value)); console.log(d) result.push(d) showAnserAndHighlightCodeStr(result.join("")) } catch (e) { console.log(e) } return reader.read().then(processText); }); }, responseType: "stream", onerror: function (err) { console.log(err) } }); } let parentID_usesless; let referer_uesless = "https://ai.usesless.com/chat/1002"; setTimeout(()=>{ GM_fetch({ method: "GET", url: `https://ai.usesless.com/chat/1002`, headers: { "Referer": referer_uesless, "origin": "https://ai.usesless.com", } }) }) function USESLESS() { let ops = { systemMessage: `You are ChatGPT, a large language model trained by OpenAI. Answer as concisely as possible.\nKnowledge cutoff: 2021-09-01\nCurrent date: 2023-05-${new Date().getDate() < 10 ? "0" + new Date().getDate() : new Date().getDate()}`, completionParams:{presence_penalty: 0.8, temperature: 1} }; if (parentID_usesless) { ops.parentMessageId = parentID_usesless; } console.log(ops) abortXml = GM_xmlhttpRequest({ method: "POST", url: "https://ai.usesless.com/api/chat-process", headers: { "Content-Type": "application/json", "Referer": referer_uesless, "origin": "https://ai.usesless.com", "accept": "application/json, text/plain, */*" }, data: JSON.stringify({ openaiKey: "", prompt: your_qus, options: ops }), onloadstart: (stream) => { let result = ""; const reader = stream.response.getReader(); // console.log(reader.read) let finalResult; reader.read().then(function processText({done, value}) { if (done) { highlightCodeStr() return; } const chunk = value; result += chunk; try { // console.log(normalArray) let byteArray = new Uint8Array(chunk); let decoder = new TextDecoder('utf-8'); let nowResult = JSON.parse(decoder.decode(byteArray)) if (nowResult.text) { console.log(nowResult) finalResult = nowResult.text showAnserAndHighlightCodeStr(finalResult) } if (nowResult.id) { parentID_usesless = nowResult.id; } } catch (e) { } return reader.read().then(processText); }); }, responseType: "stream", onerror: function (err) { console.log(err) showAnserAndHighlightCodeStr("erro:", err) } }) } //https://www.promptboom.com/ //var promptboom_did = generateRandomString(32) let promptboom_did = 'dd633043916550bea93f56e1af08debd' let promptboom_token = '' let promptboom_url = '' async function PRTBOOM() { addMessageChain(messageChain10, {role: "user", content: your_qus})//连续话 const t = Date.now() const r = t + ":" + "question:" + promptboom_token const sign = CryptoJS.SHA256(r).toString(); console.log(sign) let request_json = { 'did': promptboom_did ? promptboom_did : 'dd633043916550bea93f56e1af08debd', 'chatList': messageChain10, 'special': { 'time': t, 'sign': sign, 'referer':'https://www.promptboom.com/', 'path':'https://www.promptboom.com/' } }; let raw_requst_json = { 'data': btoa(unescape(encodeURIComponent(JSON.stringify(request_json)))) }; console.log(raw_requst_json) GM_fetch({ method: "POST", url: promptboom_url ? promptboom_url : 'https://api2.promptboom.com/cfdoctetstream', headers: { "Content-Type": "application/json", "origin": "https://www.promptboom.com", "Referer": "https://www.promptboom.com/", "accept": "*/*" }, data: JSON.stringify(raw_requst_json), responseType: "stream" }).then((stream) => { let result = []; const reader = stream.response.getReader(); reader.read().then(function processText({done, value}) { if (done) { let finalResult = result.join("") try { console.log(finalResult) addMessageChain(messageChain10, { role: "assistant", content: finalResult }) showAnserAndHighlightCodeStr(finalResult) } catch (e) { console.log(e) } return; } try { let d = new TextDecoder("utf8").decode(new Uint8Array(value)); result.push(d.replace(//gi,'')) showAnserAndHighlightCodeStr(result.join("")) } catch (e) { console.log(e) } return reader.read().then(processText); }); },(reason)=>{ console.log(reason) }).catch((ex)=>{ console.log(ex) }); /* let rootDomain = "promptboom.com"; let apiList = [`https://api2.${rootDomain}/cfdoctetstream`, `https://api2.${rootDomain}/cfdoctetstream2`, `https://api2.${rootDomain}/cfdoctetstream3`] apiList.sort(() => Math.random() - 0.5); let apiListBackup = [`https://api2.${rootDomain}/cfdoctetstream4`, `https://api2.${rootDomain}/cfdoctetstream5`, `https://api2.${rootDomain}/cfdoctetstream6`] let finalApiList = apiList.concat(apiListBackup) for (let cfdoctetstream_url of finalApiList) { console.log(cfdoctetstream_url) break; }*/ } let messageChain_anseapp = []; async function ANSEAPP() { let baseURL = "https://forward.openai.muspimerol.site/"; addMessageChain(messageChain_anseapp, {role: "user", content: your_qus})//连续话 GM_fetch({ method: "POST", url: baseURL + "v1/chat/completions", headers: { "Content-Type": "application/json", "authorization": `Bearer undefined`, "Referer": 'https://anse.app.bnu120.space/' }, data: JSON.stringify({ "model": "gpt-3.5-turbo", "messages": messageChain_anseapp, "temperature": 0.7, "max_tokens": 4096, "stream": true }), responseType: "stream" }).then((stream) => { let result = []; let finalResult = []; const reader = stream.response.getReader(); reader.read().then(function processText({done, value}) { if (done) { finalResult = result.join("") addMessageChain(messageChain_anseapp, {role: "assistant", content: finalResult.replace(/muspimerol/gi, "")} )//连续话 showAnserAndHighlightCodeStr(finalResult.replace(/muspimerol/gi, "")) return; } try { let d = new TextDecoder("utf8").decode(new Uint8Array(value)); console.log("raw:", d) let dd = d.replace(/data: /g, "").split("\n\n") console.log("dd:", dd) dd.forEach(item => { try { let delta = JSON.parse(item).choices[0].delta.content result.push(delta) showAnserAndHighlightCodeStr(result.join("").replace(/muspimerol/gi, "")) } catch (e) { } }) } catch (e) { console.log(e) } return reader.read().then(processText); }); },function (err) { console.error(err) }) } //https://chat.sunls.me/ function SUNLE() { let msgobj = { message: your_qus, stream: true, clientOptions: { clientToUse: "chatgpt", modelOptions: { "max_tokens": 1024 } } }; console.log(msgobj) abortXml = GM_xmlhttpRequest({ method: "POST", url: "https://chat2.sunls.me/conversation", headers: { "Content-Type": "application/json", "Referer": "https://chat2.sunls.me/", "origin": "https://chat2.sunls.me", "accept": "application/json, text/plain, */*" }, data: JSON.stringify(msgobj), onloadstart: (stream) => { let result = []; const reader = stream.response.getReader(); // console.log(reader.read) let finalRes; reader.read().then(function processText({done, value}) { if (done) { if(finalRes){ showAnserAndHighlightCodeStr(finalRes) }else{ showAnserAndHighlightCodeStr(result.join("")) } return; } try { // console.log(normalArray) let byteArray = new Uint8Array(value); let decoder = new TextDecoder('utf-8'); let nowResult = decoder.decode(byteArray) if(nowResult.indexOf("DONE") > -1){ let jsonData = nowResult.replace(/event: result/,"") .replace(/data: \[DONE\]/,"") .replace(/data:/,"").trim(); finalRes = JSON.parse(jsonData).response; console.log(JSON.parse(jsonData)) }else{ const regex = /data: "([^"]*)"/; const match = regex.exec(nowResult); console.log(nowResult); // 输出:Hello world result.push(match[1]) showAnserAndHighlightCodeStr(result.join("")) } } catch (e) { } return reader.read().then(processText); }); }, responseType: "stream", onerror: function (err) { console.log(err) showAnserAndHighlightCodeStr("erro:", err) } }) } function TDCHAT(){ abortXml = GM_xmlhttpRequest({ method: "POST", url: "http://wes.zw7.lol/chat.php", headers: { "Content-Type": "application/x-www-form-urlencoded; charset=UTF-8", "Referer": "http://wes.zw7.lol/chat", "accept": "application/json, text/plain, */*" }, data: `id=3.5&key=&role=&title=&text=${encodeURIComponent(your_qus).replace(/%/g, '‰')}&length=${your_qus.length}&stream=1`, onloadstart: (stream) => { let result = []; let finalResult = []; const reader = stream.response.getReader(); reader.read().then(function processText({done, value}) { if (done) { finalResult = result.join("") showAnserAndHighlightCodeStr(finalResult.replace(/tdchat/gi,"")) return; } try { let d = new TextDecoder("utf8").decode(new Uint8Array(value)); console.log("raw:",d) let dd = d.replace(/data: /g, "").split("\n\n") console.log("dd:",dd) dd.forEach(item=>{ try { let delta = JSON.parse(item).choices[0].delta.content result.push(delta) showAnserAndHighlightCodeStr(result.join("").replace(/tdchat/gi,"")) }catch (e) { } }) } catch (e) { console.log(e) } return reader.read().then(processText); }); }, responseType: "stream", onerror: function (err) { console.log(err) } }) } // //23-4-25 function TOYAML() { GM_fetch({ method: "GET", url: "https://toyaml.com/stream?q="+encodeURI(your_qus), headers: { "Content-Type": "application/json", "Referer": "https://toyaml.com/", "accept": "*/*" }, responseType: "stream" }).then((stream) => { let finalResult = []; const reader = stream.response.getReader(); reader.read().then(function processText({done, value}) { if (done) { highlightCodeStr() return; } try { // console.log(normalArray) let byteArray = new Uint8Array(value); let decoder = new TextDecoder('utf-8'); let nowResult = decoder.decode(byteArray) console.log(nowResult) if(!nowResult.match(/答案来自/)){ finalResult.push(nowResult) } showAnserAndHighlightCodeStr(finalResult.join("")) } catch (ex) { console.log(ex) } return reader.read().then(processText); }); }).catch((ex)=>{ console.log(ex) }) } let WebsocketCoolAI; let resultCoolAI = []; let initSocket = function () { // 创建WebSocket连接 const socket = new WebSocket(`wss://sd-wx.cool-js.cloud/socket.io/?apiKey=905733647bb7431b81233e12be12cfaa&url=https%3A%2F%2Fcool-js.com%2Fai%2Fchat%2Findex.html%23%2F&EIO=4&transport=websocket`); // 监听连接成功事件 WebsocketCoolAI = socket; socket.addEventListener('open', (event) => { console.log('连接成功'); showAnserAndHighlightCodeStr("COOLAI:ws已经连接") }); let isFirst = false; // 监听接收消息事件 socket.addEventListener('message', (event) => { console.log('接收到消息:', event.data); let revData = event.data; if (!isFirst) { socket.send("40") isFirst = true setTimeout(() => socket.send("3"), 3000) } if (revData === "3") { socket.send("2"); } if (revData === "2") { socket.send("3"); } if (revData.match(/40/)) { try { webSessionId = JSON.parse(revData.replace(/40/, "").trim()).sid; console.log("webSessionId ", webSessionId) } catch (e) { console.log(e) } } if (revData.match(/42/)) { //收信 try { //42["data",{"type":"text","data":"\u662f"}] let chunk = eval(revData.replace(/42/, "").trim())[1].data; console.log(chunk) resultCoolAI.push(chunk) showAnserAndHighlightCodeStr(resultCoolAI.join("")) } catch (e) { console.log(e) } } }); } if (getGPTMode() === "COOLAI") { setTimeout(initSocket, 1500); } let WebsocketXBOAT; let resultXBOAT = []; let initSocketXBOAT = function () { // 创建WebSocket连接 const socket = new WebSocket(`wss://box.xboat.cc/wsschat`); // 监听连接成功事件 WebsocketXBOAT = socket; socket.addEventListener('open', (event) => { console.log('连接成功'); showAnserAndHighlightCodeStr("WebsocketXBOAT:ws已经连接") }); // 监听接收消息事件 socket.addEventListener('message', (event) => { console.log('接收到消息:', event.data); let revData = event.data; if(!revData.startsWith("/end")){ resultXBOAT.push(revData) } showAnserAndHighlightCodeStr(resultXBOAT.join("")) }); } if (getGPTMode() === "XBOAT") { setTimeout(initSocketXBOAT, 1000); } //默认设置 setTimeout(()=>{ if(localStorage.getItem('GPTMODE')){ const selectEl = document.getElementById('modeSelect'); let optionElements = selectEl.querySelectorAll("option"); for (let op in optionElements) { if(optionElements[op].value === localStorage.getItem('GPTMODE')){ optionElements[op].setAttribute("selected", "selected"); break; } } } if(localStorage.getItem('gpt_font_size')){ document.querySelector("#gptDiv").style.fontSize = localStorage.getItem('gpt_font_size'); } //禁用历史 if(localStorage.getItem('history_disable')){ let dis = localStorage.getItem('history_disable'); history_disable = (dis === 'true' ? true : false); } },1000) })();