您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Google、必应、百度、Yandex、360搜索、谷歌镜像、搜狗、b站、F搜、duckduckgo、CSDN侧边栏Chat搜索,集成国内一言,星火,天工,通义AI,ChatGLM,360智脑。即刻体验AI,无需翻墙,无需注册(不可用),无需等待!
当前为
// ==UserScript== // @name chatGPT tools Plus(修改版) // @namespace http://tampermonkey.net/ // @version 2.8.9 // @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 // @require https://cdn.bootcdn.net/ajax/libs/toastr.js/2.1.4/toastr.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 // ==/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.9'; 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($( '<link id="github-markdown-link" rel="stylesheet" href="https://cdn.bootcdn.net/ajax/libs/github-markdown-css/5.2.0/github-markdown-dark.min.css">' )); }else{ $("head").append($( '<link id="github-markdown-link" rel="stylesheet" href="https://cdn.bootcdn.net/ajax/libs/github-markdown-css/5.2.0/github-markdown-light.min.css">' )); } } if(!document.getElementById("highlight-link")){ if(!darkTheme) { //暗黑 $("head").append($( '<link id="highlight-link" rel="stylesheet" href="https://cdn.bootcdn.net/ajax/libs/highlight.js/11.7.0/styles/monokai-sublime.min.css">' )); }else{ $("head").append($( '<link id="highlight-link" rel="stylesheet" href="https://cdn.bootcdn.net/ajax/libs/highlight.js/11.7.0/styles/atom-one-light.min.css">' )); } } if(!document.getElementById("katex-link")){ $("head").append($( '<link id="katex-link" href="https://cdn.bootcdn.net/ajax/libs/KaTeX/0.16.6/katex.css" rel="stylesheet">' )); } //spark-js if(!document.getElementById("spark-js")){ $("head").append($( '<script id="spark-js" src="https://static.geetest.com/g5/gd.js"></script>' )); } //toastr-css if(!document.getElementById("toastr-css")){ $("head").append($( '<link id="toastr-css" href="https://cdn.bootcdn.net/ajax/libs/toastr.js/2.1.4/toastr.min.css" rel="stylesheet">' )); } } setTimeout(addHeadCss) setInterval(addHeadCss,5000) try { console.log( `%c【chatGPT tools Plus】${JSver} 已加载`, 'color: yellow;font-size: large;font-weight: bold;background-color: darkblue;' ); const menu_updateChat_id = GM_registerMenuCommand("更新Chat", function (event) { GM_openInTab("https://gf.qytechs.cn/zh-CN/scripts/459997") }, "updateChat"); const menu_groupNum_id = GM_registerMenuCommand("交流群", function (event) { Toast.info("交流群7:817298021\n交流群6:792365186\n交流群4:745163513\n交流群3:177193765\n交流群2:734403992\n交流群1:710808464\n交流总群:249733992", "QQ交流群", {timeOut: 15000} ) }, "groupNum"); const menu_pubkey_id = GM_registerMenuCommand("更新key", function (event) { Toast.info("正在更新...") setPubkey(); }, "PUBKEY"); //禁用console 未转义警告 hljs.configure({ ignoreUnescapedHTML: true }) //toastr配置 toastr.options = { // "closeButton": false, // "debug": false, // "newestOnTop": false, // "progressBar": false, "positionClass": "toast-top-right", // 提示框位置,这里填类名 // "preventDuplicates": false, // "onclick": null, "showDuration": "300", // 提示框渐显所用时间 "hideDuration": "300", // 提示框隐藏渐隐时间 "timeOut": "3000", // 提示框持续时间 "extendedTimeOut": "1000", "showEasing": "swing", "hideEasing": "linear", "showMethod": "fadeIn", "hideMethod": "fadeOut" } } catch (ex) { console.error(ex) } //toastr 封装 ----start---- const Toast = { warn: function(msg, title, options) { try { toastr.warning(msg, title, options) }catch (e) {} }, info: function(msg, title, options) { try { toastr.info(msg, title, options) }catch (e) {} }, success: function(msg, title, options) { try { toastr.success(msg, title, options) }catch (e) {} }, error: function(msg, title, options) { try { toastr.error(msg, title, options) }catch (e) {} }, }; //toastr 封装 ----end---- //封装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) { Toast.error("获取pubkey失败") return } console.log("pubkey:" + pubkey); //GM_setValue("pubkey", pubkey) localStorage.setItem("pubkey", pubkey) Toast.success("pubkey更新成功:" + pubkey) }) }else if(GPTMODE === "BNU120"){ setTimeout(async () => { bnuInt = (bnuInt + 1) > 6 ? 0 : (bnuInt + 1) try { bnuKey = bnuList[bnuInt].key; if(bnuKey){ Toast.success(`BNU120:当前:${bnuInt},共6。更新成功,KEY:${bnuKey}`) localStorage.setItem("bnuInt", bnuInt) localStorage.setItem("bnuKey", bnuKey) }else { Toast.error("BNU120:更新失败") localStorage.removeItem("bnuInt") localStorage.removeItem("bnuKey") } }catch (e) { Toast.error(`错误了。请重试`) } }); }else { Toast.error("该线路不适用") } } 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 = `<span class="bg s_btn_wr"><input type="button" id="mybtn" value="加载chat" class="bg s_btn"></span>`; $(".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(/<em>/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(/<script[^>]*>.*?<script>/gi, ''); let output = input.replace(/<script/gi, '<script'); //output = output.replace(/<\/script/gi, '</script'); output = output.replace(/<meta/gi, '<meta'); // output = output.replace(/<\/meta/gi, '</meta'); /* output = output.replace(/<>]+?on\\\\w+=.*?>/gi, ''); output = output.replace(/<[^>]*>.*?<iframe>/gi, ''); output = output.replace(/<img[^>]+src=[\\']([^\\']+)[\\'][^>]*>/gi, ''); output = output.replace(/<link rel=[\\']stylesheet[\\'][^>]+>/gi, ''); */ return output; } let rawAns = undefined; let isShowRaw = false; //显示答案并高亮代码函数 function showAnserAndHighlightCodeStr(codeStr) { if(!codeStr) return rawAns = codeStr;//记录原文 try { document.getElementById('gptAnswer').innerHTML = `${katexTohtml(mdConverter(codeStr.replace(/\\n+/g, "\n")))}` } catch (e) { try { document.getElementById('gptAnswer').innerHTML = `${mdConverter(codeStr.replace(/\\n+/g, "\n"))}` }catch (e) { console.log(e) } } highlightCodeStr()//高亮 //添加代码复制按钮 start let preList = document.querySelectorAll("#gptAnswer pre") preList.forEach((pre)=>{ try{ if(!pre.querySelector(".btn-pre-copy")){ //<span class=\"btn-pre-copy\" onclick='preCopy(this)'>复制代码</span> let copyBtn = document.createElement("span"); copyBtn.setAttribute("class","btn-pre-copy"); copyBtn.addEventListener("click",(event)=>{ let _this = event.target console.log(_this) let pre = _this.parentNode; console.log(pre.innerText) _this.innerText = ''; GM_setClipboard(pre.innerText, "text"); _this.innerText = '复制成功' Toast.success("复制成功!") setTimeout(() =>{ _this.innerText = '复制代码' },2000) }) copyBtn.innerText = '复制代码' pre.insertBefore(copyBtn, pre.firstChild) } }catch (e) { console.log(e) } }) //添加代码复制按钮 end } //高亮代码函数 function highlightCodeStr() { let gptAnswerDiv = document.querySelector("#gptAnswer"); for (let i = 0; i <= gptAnswerDiv.getElementsByTagName("code").length - 1; i++) { gptAnswerDiv.getElementsByTagName("code")[i].setAttribute("class", "hljs"); //hljs.highlightAll() } gptAnswerDiv.querySelectorAll('pre code').forEach((el) => { hljs.highlightElement(el); }); } //顶级配置 let webSessionId let autoClick = localStorage.getItem("autoClick") let autoTips = localStorage.getItem("autoTips")? localStorage.getItem("autoTips") :'on'; let isFullScreen = false; let your_qus; let abortXml; let regx = /search.*?\.cf/g; if (window.location.href.indexOf("bing.com") > -1) { GM_add_box_style(0) addBothStyle() keyEvent() appendBox(0).then((res) => { pivElemAddEventAndValue(0) }) //linkToBing_beautification_script() } if (window.location.href.indexOf("google.com") > -1 || window.location.href.match(regx)) { GM_add_box_style(1) addBothStyle() keyEvent() appendBox(1).then((res) => { if(isMobile()){ pivElemAddEventAndValue(11) }else { pivElemAddEventAndValue(1) } }) } if (window.location.href.indexOf("baidu.com\/s") > -1 && !isMobile()) { GM_add_box_style(2) addBothStyle() keyEvent() appendBox(2).then((res) => { pivElemAddEventAndValue(2) }) } else if (window.location.href.indexOf("https:\/\/m.baidu.com") > -1 || (window.location.href.indexOf( "baidu.com") > -1 && isMobile())) { //手机百度 GM_add_box_style(2) addBothStyle() keyEvent() appendBox(6).then((res) => { pivElemAddEventAndValue(2) }) } //俄罗斯yandex if (window.location.href.indexOf("yandex.ru\/search") > -1 || window.location.href.indexOf( "yandex.com\/search") > -1) { GM_add_box_style(1) addBothStyle() keyEvent() appendBox(3).then((res) => { pivElemAddEventAndValue(3) }) } //360so if (window.location.href.indexOf("so.com\/s") > -1) { GM_add_box_style(1) addBothStyle() keyEvent() appendBox(4).then((res) => { if(isMobile()){ pivElemAddEventAndValue(9) }else { pivElemAddEventAndValue(4) } }) } //fsoufsou if (window.location.href.indexOf("fsoufsou.com\/search") > -1) { setTimeout(() => { GM_add_box_style(1) addBothStyle() keyEvent() appendBox(5).then((res) => { pivElemAddEventAndValue(5) }) }, 3000) } //duckduckgo.com if (window.location.href.indexOf("duckduckgo.com\/\?q") > -1) { GM_add_box_style(1) addBothStyle() keyEvent() appendBox(7).then((res) => { pivElemAddEventAndValue(7) }) } //sogou.com if (window.location.href.indexOf("sogou.com") > -1) { GM_add_box_style(1) addBothStyle() keyEvent() appendBox(8).then((res) => { if(isMobile()){ pivElemAddEventAndValue(10) }else{ pivElemAddEventAndValue(8) } }) } //bilibili.com if (window.location.href.includes("bilibili.com")) { GM_add_box_style(1) addBothStyle() keyEvent() appendBox(9).then((res) => { pivElemAddEventAndValue(null) }) } //bilibili.com if (window.location.href.includes("blog.csdn.net")) { GM_add_box_style(1) addBothStyle() keyEvent() appendBox(10).then((res) => { pivElemAddEventAndValue(null) }) } //顶级函数 function uuid() { //uuid 产生 let s = []; let hexDigits = "0123456789abcdef"; for (let i = 0; i < 36; i++) { s[i] = hexDigits.substr(Math.floor(Math.random() * 0x10), 1); } s[14] = "4"; // bits 12-15 of the time_hi_and_version field to 0010 s[19] = hexDigits.substr((s[19] & 0x3) | 0x8, 1); // bits 6-7 of the clock_seq_hi_and_reserved to 01 s[8] = s[13] = s[18] = s[23] = "-"; return s.join(""); } function GM_add_box_style(case_web) { case_web = 2; switch (case_web) { case 2: GM_addStyle(` #gptAnswer{ margin: 10px; border-top: solid; border-bottom: solid; } #gptInput{ border-radius: 20px; flex: 1; padding-left: 10px; height: 35px; border:0; background-color: transparent; font-size: 15px; font-weight: 500; } #button_GPT:hover{ cursor: pointer; } #gptDiv{ width:452px; flex: 1; display: flex; flex-direction: column; height: fit-content; } #gptInputBox{ display:flex; justify-content: space-around; border-radius: 20px; border: 1px solid #c4c7ce; margin-left: 10px; } #button_GPT{ border: 0; background-color: transparent; font-size: 14px; padding: 5px; } #gptStatus{ margin-left: 10px; } #modeSelect { border: 1px solid #c4c7ce; border-radius: 10px; margin: 3px; margin-left: -1px; } .chatSetting{ display: block; text-align: right; margin-top: 10px; margin-right: 8px; margin-bottom: 1px; } .chatHide{ display: none; } #chatSetting{ text-decoration: none !important; } #chatSetting:hover{ cursor: pointer; text-decoration: underline !important; } #website a:nth-child(odd){ color: #ffbb00; } #website a:nth-child(even){ color: #0bbbac; } #website a { border: 1px solid; border-radius: 3px; margin-right: 9px; margin-bottom: 5px; } #website hr { border: none; border-top: 1px dashed #999; margin: 5px 0px 5px 0px; } gptDiv p{ white-space: pre-line; } pre .btn-pre-copy{ text-align: right; display: block; } pre .btn-pre-copy:hover{ cursor: pointer; } .fullScreen{ z-index: 999 !important; position: fixed !important; top: 0 !important; left: 0 !important; right: 0 !important; width: 100% !important; height: 100% !important; bottom: 0 !important; overflow-y: scroll !important; } .bgtransparent{ background-color: transparent !important;; } .floating-button { position: fixed; bottom: 20px; right: 20px; background-color: #007bff; color: #fff; border-radius: 50%; padding: 10px; box-shadow: 0px 2px 5px rgba(0, 0, 0, 0.25); } .floating-button a { text-decoration: none; color: inherit; } `) break; default: Toast.error("参数没设定") } } function do_it() { isShowRaw = false; //设置显示原文 rawAns = undefined;//设置显示原文 document.getElementById('gptAnswer').innerHTML = `<div>加载中<span id="dot"></span></div>`; //自定义模式 let GPTMODE = getGPTMode() if (GPTMODE && GPTMODE === "YeYu") { console.log("当前模YeYu") YeYu() //end if return; } else if (GPTMODE && GPTMODE === "ANZZ") { console.log("当前模式ANZZ") ANZZ(); //end if return; } else if (GPTMODE && GPTMODE === "THEBAI") { console.log("当前模式THEBAI") THEBAI() //end if return; } else if (GPTMODE && GPTMODE === "YQCLOUD") { console.log("当前模式YQCLOUD") YQCLOUD() //end if return; } else if (GPTMODE && GPTMODE === "HAOHUOLA") { console.log("HAOHUOLA") HAOHUOLA(); //end if return; } else if (GPTMODE && GPTMODE === "PIZZA") { console.log("当前模式PIZZA") PIZZA(); //end if return; } else if (GPTMODE && GPTMODE === "AITIANHU") { console.log("当前模式AITIANHU") AITIANHU() //end if return; } else if (GPTMODE && GPTMODE === "TDCHAT") { console.log("当前模式TDCHAT") TDCHAT() //end if return; } else if (GPTMODE && GPTMODE === "WGK") { console.log("当前模式WGK") WGK(); //end if return; } else if (GPTMODE && GPTMODE === "T66") { console.log("T66") T66() return; //end if } else if (GPTMODE && GPTMODE === "AILS") { console.log("AILS") AILS() return; //end if } else if (GPTMODE && GPTMODE === "COOLAI") { console.log("COOLAI") try { resultCoolAI = []; WebsocketCoolAI.send(`42["ask",{"userId":"cool","content":"${your_qus}"}]`) } catch (e) { initSocket() } return; //end if }else if (GPTMODE && GPTMODE === "XBOAT") { console.log("XBOAT") try { resultXBOAT = []; WebsocketXBOAT.send(your_qus) } catch (e) { initSocketXBOAT() } return; //end if } else if (GPTMODE && GPTMODE === "PHIND") { console.log("PHIND") PHIND(); return; //end if } else if (GPTMODE && GPTMODE === "WOBCW") { console.log("WOBCW") WOBCW(); return; //end if } else if (GPTMODE && GPTMODE === "HEHANWANG") { console.log("HEHANWANG") HEHANWANG(); return; //end if } else if (GPTMODE && GPTMODE === "EXTKJ") { console.log("EXTKJ") EXTKJ(); return; //end if } else if (GPTMODE && GPTMODE === "XIAOWENZI") { console.log("XIAOWENZI") XIAOWENZI(); return; //end if } else if (GPTMODE && GPTMODE === "USESLESS") { console.log("USESLESS") USESLESS(); return; //end if } else if (GPTMODE && GPTMODE === "PRTBOOM") { console.log("PRTBOOM") PRTBOOM(); return; //end if }else if (GPTMODE && GPTMODE === "SUNLE") { console.log("SUNLE") SUNLE(); return; //end if }else if (GPTMODE && GPTMODE === "CLEANDX") { console.log("CLEANDX") CLEANDX(); return; //end if }else if (GPTMODE && GPTMODE === "ESO") { console.log("ESO") ESO(); return; //end if }else if (GPTMODE && GPTMODE === "CVEOY") { console.log("CVEOY") CVEOY(); return; //end if }else if (GPTMODE && GPTMODE === "HZIT") { console.log("HZIT") HZIT(); return; //end if }else if (GPTMODE && GPTMODE === "TOYAML") { console.log("TOYAML") TOYAML(); return; //end if }else if (GPTMODE && GPTMODE === "NBAI") { console.log("NBAI") NBAI(); return; //end if }else if (GPTMODE && GPTMODE === "XEASY") { console.log("XEASY") XEASY(); return; //end if }else if (GPTMODE && GPTMODE === "newBing") { console.log("newBing") newBing(); return; //end if }else if (GPTMODE && GPTMODE === "BNU120") { console.log("BNU120:",bnuInt) BNU120(); return; //end if }else if (GPTMODE && GPTMODE === "DOG2") { console.log("DOG2") DOG2(); return; //end if }else if (GPTMODE && GPTMODE === "LEMURCHAT") { console.log("LEMURCHAT") LEMURCHAT(); return; //end if }else if (GPTMODE && GPTMODE === "CHAT1") { console.log("CHAT1") CHAT1(); return; //end if }else if (GPTMODE && GPTMODE === "CYTSEE") { console.log("CYTSEE") CYTSEE(); return; //end if }else if (GPTMODE && GPTMODE === "CHATWEB1") { console.log("CHATWEB1") CHATWEB1() return; //end if }else if (GPTMODE && GPTMODE === "GEEKR") { console.log("GEEKR") GEEKR() return; //end if }else if (GPTMODE && GPTMODE === "ZHULEI") { console.log("ZHULEI") ZHULEI() return; //end if }else if (GPTMODE && GPTMODE === "CHATDDD") { console.log("CHATDDD") CHATDDD() return; //end if }else if (GPTMODE && GPTMODE === "OPENAI" || GPTMODE === "OPENAI-3.5") { console.log("OPENAI-3.5") OPENAI("text-davinci-002-render-sha") return; //end if }else if (GPTMODE && GPTMODE === "OPENAI-4.0") { console.log("OPENAI-4.0") OPENAI("gpt-4") return; //end if }else if (GPTMODE && GPTMODE === "TONGYI") { console.log("TONGYI") TONGYI() return; //end if }else if (GPTMODE && GPTMODE === "SPARK") { console.log("SPARK") SPARK() return; //end if }else if (GPTMODE && GPTMODE === "TIANGONG") { console.log("TIANGONG") TIANGONG() return; //end if }else if (GPTMODE && GPTMODE === "YIYAN") { console.log("YIYAN") YIYAN() return; //end if }else if (GPTMODE && GPTMODE === "GPTPLUS") { console.log("GPTPLUS") GPTPLUS() return; //end if }else if (GPTMODE && GPTMODE === "ANSEAPP") { console.log("ANSEAPP") ANSEAPP() return; //end if }else if (GPTMODE && GPTMODE === "ChatGLM") { console.log("ChatGLM") ChatGLM() return; //end if }else if (GPTMODE && GPTMODE === "ChatGO") { console.log("ChatGO") ChatGO() return; //end if }else if (GPTMODE && GPTMODE === "Zhinao360") { console.log("Zhinao360") Zhinao360() return; //end if }else if (GPTMODE && GPTMODE === "MixerBox") { console.log("MixerBox") MixerBox() return; //end if }else if (GPTMODE && GPTMODE === "OhMyGPT") { console.log("OhMyGPT") OhMyGPT() return; //end if } console.log("默认线路:") AIGCFUN(); } //默认线路 function AIGCFUN() { Toast.info("该线路较慢,请稍后...") const now = Date.now(); console.log(now); generateSignature({ t: now, m: your_qus || "" }).then(sign => { console.log(sign) addMessageChain(messageChain1, {role: "user", content: your_qus})//连续话 GM_fetch({ method: "POST", url: "https://api.aigcfun.com/api/v1/text?key=" + getPubkey(), headers: { "Content-Type": "application/json", "Referer": "https://aigcfun.com/", "origin": "https://aigcfun.com" }, data: JSON.stringify({ messages: messageChain1, tokensLength: your_qus.length + 10, model: "gpt-3.5-turbo-16k" }), responseType: "text", }).then(function (res) { if (res.status === 200) { try { console.log('成功....') console.log(res) let rest = JSON.parse(res.responseText).choices[0].text console.log(rest) showAnserAndHighlightCodeStr(rest); addMessageChain(messageChain1, { role: "assistant", content: rest }) } catch (e) { Toast.error("未知错误!") } } else { Toast.error('访问失败了') } },function (reason){ Toast.error(`出错了:${reason.status},${reason.statusText}`) }); }); } function creatBox() { return new Promise((resolve) => { let divE = document.createElement('div'); let divId = document.createAttribute("id"); //创建属性 divId.value = 'gptDiv'; //设置属性值 divE.setAttributeNode(divId); //给div添加属性 let pE = document.createElement('p'); let pClass = document.createAttribute('class'); pClass.value = 'textClass'; pE.setAttributeNode(pClass) let pText = document.createTextNode(""); pE.appendChild(pText); divE.appendChild(pE); divE.classList.add("gpt-container"); divE.classList.add("markdown-body"); divE.innerHTML = ` <div id="gptInputBox"> <input autocomplete="off" placeholder="若用不了,请更新KEY或切换线路" id="gptInput" list="suggestions" type=text><button id="button_GPT" ><svg width="15px" height="15px" focusable="false" viewBox="0 0 24 24"><path fill="#34a853" d="M10 2v2a6 6 0 0 1 6 6h2a8 8 0 0 0-8-8"></path><path fill="#ea4335" d="M10 4V2a8 8 0 0 0-8 8h2c0-3.3 2.7-6 6-6"></path><path fill="#fbbc04" d="M4 10H2a8 8 0 0 0 8 8v-2c-3.3 0-6-2.69-6-6"></path><path fill="#4285f4" d="M22 20.59l-5.69-5.69A7.96 7.96 0 0 0 18 10h-2a6 6 0 0 1-6 6v2c1.85 0 3.52-.64 4.88-1.68l5.69 5.69L22 20.59"></path></svg>搜索</button> <datalist id="suggestions"> </datalist> </div> <div class="chatSetting"><a id="chatSetting"><svg fill="#909399" width="15px" height="15px" focusable="false" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M13.85 22.25h-3.7c-.74 0-1.36-.54-1.45-1.27l-.27-1.89c-.27-.14-.53-.29-.79-.46l-1.8.72c-.7.26-1.47-.03-1.81-.65L2.2 15.53c-.35-.66-.2-1.44.36-1.88l1.53-1.19c-.01-.15-.02-.3-.02-.46 0-.15.01-.31.02-.46l-1.52-1.19c-.59-.45-.74-1.26-.37-1.88l1.85-3.19c.34-.62 1.11-.9 1.79-.63l1.81.73c.26-.17.52-.32.78-.46l.27-1.91c.09-.7.71-1.25 1.44-1.25h3.7c.74 0 1.36.54 1.45 1.27l.27 1.89c.27.14.53.29.79.46l1.8-.72c.71-.26 1.48.03 1.82.65l1.84 3.18c.36.66.2 1.44-.36 1.88l-1.52 1.19c.01.15.02.3.02.46s-.01.31-.02.46l1.52 1.19c.56.45.72 1.23.37 1.86l-1.86 3.22c-.34.62-1.11.9-1.8.63l-1.8-.72c-.26.17-.52.32-.78.46l-.27 1.91c-.1.68-.72 1.22-1.46 1.22zm-3.23-2h2.76l.37-2.55.53-.22c.44-.18.88-.44 1.34-.78l.45-.34 2.38.96 1.38-2.4-2.03-1.58.07-.56c.03-.26.06-.51.06-.78s-.03-.53-.06-.78l-.07-.56 2.03-1.58-1.39-2.4-2.39.96-.45-.35c-.42-.32-.87-.58-1.33-.77l-.52-.22-.37-2.55h-2.76l-.37 2.55-.53.21c-.44.19-.88.44-1.34.79l-.45.33-2.38-.95-1.39 2.39 2.03 1.58-.07.56a7 7 0 0 0-.06.79c0 .26.02.53.06.78l.07.56-2.03 1.58 1.38 2.4 2.39-.96.45.35c.43.33.86.58 1.33.77l.53.22.38 2.55z"></path><circle cx="12" cy="12" r="3.5" fill="#909399"></circle></svg>设置</a></div> <div id=gptCueBox> <p class="chatHide" id="gptStatus"> <select id="modeSelect"> <option value="Default">默认线路[兼容]</option> <option value="YeYu">自定义key</option> <option value="newBing">New Bing</option> <option value="OPENAI-3.5">OPENAI-3.5</option> <option value="OPENAI-4.0">OPENAI-4.0</option> <option value="TONGYI">通义千问</option> <option value="YIYAN">百度文心</option> <option value="SPARK">讯飞星火</option> <option value="TIANGONG">天工AI</option> <option value="ChatGLM">ChatGLM</option> <option value="Zhinao360">360智脑</option> <option value="GPTPLUS">GPTPLUS</option> <option value="ChatGO">ChatGO</option> <option value="MixerBox">MixerBox</option> <option value="XBOAT">XBOAT[兼容]</option> <option value="ANZZ">ANZZ</option> <option value="THEBAI">THEBAI[科学]</option> <option value="YQCLOUD">YQCLOUD</option> <option value="HAOHUOLA">HAOHUOLA</option> <option value="BNU120">BNU120</option> <option value="ANSEAPP">ANSEAPP</option> <option value="DOG2">DOG2</option> <option value="PIZZA">PIZZA[兼容]</option> <option value="AITIANHU">AITIANHU</option> <option value="TDCHAT">TDCHAT</option> <option value="GEEKR">GEEKR</option> <option value="LEMURCHAT">狐猴内置</option> <option value="CHAT1">CHAT1</option> <option value="OhMyGPT">OhMyGPT</option> <option value="CHATWEB1">CHATWEB1</option> <option value="CYTSEE">CYTSEE</option> <option value="WGK">WGK</option> <option value="NBAI">NBAI</option> <option value="T66">T66</option> <option value="ZHULEI">ZHULEI</option> <option value="CHATDDD">CHATDDD[x]</option> <option value="XEASY">XEASY</option> <option value="AILS">AILS</option> <option value="COOLAI">COOLAI[x]</option> <option value="PHIND">PHIND</option> <option value="WOBCW">WOBCW</option> <option value="EXTKJ">EXTKJ[国内]</option> <option value="HEHANWANG">HEHANWANG[x]</option> <option value="XIAOWENZI">XIAOWENZI</option> <option value="USESLESS">USESLESS</option> <option value="PRTBOOM">PRTBOOM</option> <option value="SUNLE">SUNLE</option> <option value="CLEANDX">CLEANDX</option> <option value="ESO">ESO</option> <option value="CVEOY">CVEOY</option> <option value="HZIT">HZIT[兼容]</option> <option value="TOYAML">TOYAML</option> </select> 部分线路需要科学上网</p> <p class="chatHide" id="warn" style="margin: 10px" ><a id="updatePubkey" style="color: #4e6ef2;" href="javascript:void(0)"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" role="img" class=" iconify iconify--ri" width="1em" height="1em" viewBox="0 0 24 24"><path fill="currentColor" d="M18.537 19.567A9.961 9.961 0 0 1 12 22C6.477 22 2 17.523 2 12S6.477 2 12 2s10 4.477 10 10c0 2.136-.67 4.116-1.81 5.74L17 12h3a8 8 0 1 0-2.46 5.772l.997 1.795Z"></path></svg>更新KEY</a>:适用于默认、自定义、BNU120线路</p> <p class="chatHide" id="autoClickP" style="margin: 10px" ><a id="autoClick" style="color: #4e6ef2;" href="javascript:void(0)"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" role="img" class="text-lg iconify iconify--ri" width="1em" height="1em" viewBox="0 0 24 24"><path fill="currentColor" d="M15 4H5v16h14V8h-4V4ZM3 2.992C3 2.444 3.447 2 3.998 2H16l5 5v13.992A1 1 0 0 1 20.007 22H3.993A1 1 0 0 1 3 21.008V2.992Zm9 8.508a2.5 2.5 0 1 1 0-5a2.5 2.5 0 0 1 0 5ZM7.527 17a4.5 4.5 0 0 1 8.945 0H7.527Z"></path></svg>自动点击开关</a>:用于设置搜索是否自动点击</p> <p class="chatHide" id="darkThemeP" style="margin: 10px" ><a id="darkTheme" style="color: #4e6ef2;" href="javascript:void(0)"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" role="img" class=" iconify iconify--ri" width="1em" height="1em" viewBox="0 0 24 24"><path fill="currentColor" d="M12 21.997c-5.523 0-10-4.478-10-10c0-5.523 4.477-10 10-10s10 4.477 10 10c0 5.522-4.477 10-10 10Zm0-2a8 8 0 1 0 0-16a8 8 0 0 0 0 16Zm0-2v-12a6 6 0 0 1 0 12Z"></path></svg>暗黑模式开关</a>:用于设置暗黑/白天</p> <p class="chatHide" id="autoTipsP" style="margin: 10px"><a id="autoTips" href="javascript:void(0)"><svg withd="15" height="15" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"> <path d="M12,2c-4.97,0-9,4.03-9,9s4.03,9,9,9s9-4.03,9-9S16.97,2,12,2z M12,18c-3.86,0-7-3.14-7-7s3.14-7,7-7s7,3.14,7,7S15.86,18,12,18z" fill="#fff" stroke="#000"></path> <circle cx="12" cy="12" r="5" fill="#ffd700"></circle> <path d="M12,17v1a1,1,0,0,1-2,0V17" stroke="#000" stroke-linecap="round" stroke-linejoin="round"></path> <path d="M13,14.5h-2a.5.5,0,0,1-.5-.5v-1a.5.5,0,0,1,.5-.5h2a.5.5,0,0,1,.5.5v1A.5.5,0,0,1,13,14.5Z" fill="#fff" stroke="#000"></path> </svg>自动提示开关</a>:用于设置是否开启提示</p> <div class="chatHide" id="website" style="margin-left: 10px; "> <hr> <a target="_blank" href="https://yeyu1024.xyz/gpt.html?random=${Math.random()}&from=js&ver=${JSver}">网页版</a> <a target="_blank" href="https://yiyan.baidu.com/">文心一言</a> <a target="_blank" href="https://qianwen.aliyun.com/">通义千问</a> <a target="_blank" href="https://www.tiangong.cn/">天工AI</a> <a target="_blank" href="https://xinghuo.xfyun.cn/">讯飞星火</a> <hr> <a target="_blank" href="https://chat.openai.com/chat">Open AI</a> <a target="_blank" href="https://www.bing.com/search?q=Bing+AI&showconv=1">必应</a> <a target="_blank" href="https://bard.google.com/">Google Bard</a> <a target="_blank" href="https://slack.com/apps/A04KGS7N9A8-claude">Claude</a> <a target="_blank" href="https://chatglm.cn/chat">ChatGLM</a> <hr> <a target="_blank" href="https://chat.360.cn/">360智脑</a> <a target="_blank" href="https://poe.com/">Poe</a> <a target="_blank" href="https://gf.qytechs.cn/scripts/459997">更新</a> <a target="_blank" href="https://yeyu1024.xyz/zhichi.png?id=yeyu">爱发电</a> <a target="_blank" href="https://yeyu1024.xyz/zfb.html?from=js&ver=${JSver}">领红包</a> <hr> </div> <article id="gptAnswer" class="markdown-body"><div id="gptAnswer_inner">版本: ${JSver} 已启动,部分线路需要科学上网,更换线路请点击"设置"。当前线路: ${getGPTMode() || "Default"};当前自动点击状态: ${localStorage.getItem("autoClick") || "关闭"}<div></article> </div> <span class="speak" style="margin-right: 10px;text-align: right"> <a id="speakAnser" style="cursor: pointer" href="javascript:void(0)" > <svg width="20" height="20" viewBox="0 0 17 16"> <path d="M9 16.5v-9l6 4.5-6 4.5z" fill="#909399"></path> <path d="M0 0h24v24H0z" fill="none"></path> </svg>朗读</a> <a id="copyAns" style="cursor: pointer" href="javascript:void(0)" > <svg width="12" height="12" data-v-13fede38="" t="1679666016648" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="6241" class="icon"><path data-v-13fede38="" d="M661.333333 234.666667A64 64 0 0 1 725.333333 298.666667v597.333333a64 64 0 0 1-64 64h-469.333333A64 64 0 0 1 128 896V298.666667a64 64 0 0 1 64-64z m-21.333333 85.333333H213.333333v554.666667h426.666667v-554.666667z m191.829333-256a64 64 0 0 1 63.744 57.856l0.256 6.144v575.701333a42.666667 42.666667 0 0 1-85.034666 4.992l-0.298667-4.992V149.333333H384a42.666667 42.666667 0 0 1-42.368-37.674666L341.333333 106.666667a42.666667 42.666667 0 0 1 37.674667-42.368L384 64h447.829333z" fill="#909399" p-id="6242"></path></svg> 复制</a> <a id="rawAns" style="cursor: pointer" href="javascript:void(0)" > <svg width="13" height="13" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"> <circle cx="12" cy="12" r="8" stroke="#909399" stroke-width="4" fill="none"></circle> </svg>原文</a> <a id="stopAns" style="cursor: pointer" href="javascript:void(0)"> <svg width="13" height="13" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"> <path fill="#909399" d="M12 2c-5.5 0-10 4.5-10 10s4.5 10 10 10 10-4.5 10-10-4.5-10-10-10zm6.7 15.3c-.2.2-.5.2-.7 0L12 12.7l-6.1 4.6c-.2.2-.5.2-.7 0-.2-.2-.2-.5 0-.7l6.1-4.6-6.1-4.6c-.2-.2-.2-.5 0-.7s.5-.2.7 0L12 11.3l6.1-4.6c.2-.2.5-.2.7 0 .2.2.2.5 0 .7l-6.1 4.6 6.1 4.6c.2.2.2.5 0 .7z"></path> </svg>中断</a> <a id="fullScreen" style="cursor: pointer" href="javascript:void(0)"> <svg width="13" height="13" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"> <rect x="3" y="4" width="18" height="14" rx="2" ry="2" stroke="black" fill="#909399"/> <line x1="3" y1="8" x2="21" y2="8" stroke="black" stroke-width="2"/> <line x1="3" y1="16" x2="21" y2="16" stroke="black" stroke-width="2"/> </svg>全屏</a> <a id="hideGptDiv" style="cursor: pointer" href="javascript:void(0)"> <svg width="13" height="13" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"> <circle cx="12" cy="12" r="10" fill="#909399"></circle> <circle cx="12" cy="12" r="5" fill="#fff"></circle> </svg>隐藏</a> </span>`; resolve(divE) }) } let speakAudio; let isPlayend = true; async function pivElemAddEventAndValue(append_case) { let search_content try { if (append_case === 11) {//手机google search_content = document.querySelector("#tsf input").value } if (append_case === 10) {//手机sogou search_content = document.querySelector("input#keyword").value } if (append_case === 9) {//手机360 search_content = document.querySelector("input#q").value } if (append_case === 8) { search_content = document.querySelector("input#upquery").value } if (append_case === 7) { search_content = document.querySelector("#search_form input").value } 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) { try { search_content = document.querySelector( "#tsf > div:nth-child(1) > div.A8SBwf > div.RNNXgb > div > div.a4bIc > input:nth-child(3)" ).value } catch (e) { search_content = document.querySelector("textarea").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; } } } catch (e) { console.log(e) } document.getElementById("gptInput").value = search_content || '' document.getElementById('button_GPT').addEventListener('click', () => { your_qus = document.getElementById("gptInput").value //字体设置 if(your_qus.startsWith("/font-size:")){ let fontSize = your_qus.substring("/font-size:".length) document.querySelector("#gptDiv").style.fontSize = fontSize; localStorage.setItem("gpt_font_size",fontSize) Toast.success(`字体设置成功:${fontSize}`) return } //禁用历史记录 if(your_qus.startsWith("/history_disable:")){ let dis = your_qus.substring("/history_disable:".length) history_disable = (dis === 'true' ? true : false); localStorage.setItem("history_disable", dis) Toast.success(`禁用历史记录设置成功:${history_disable}`) return } do_it() }) //搜索建议 document.getElementById('gptInput').addEventListener('keyup', () => { console.log("autoTips:",autoTips) if(autoTips !== 'on') return let current; let word = document.getElementById('gptInput').value; if(!word) return; if(current){ current.abort(); } console.log(word) current = GM_xmlhttpRequest({ method: "GET", url: "https://www.baidu.com/sugrec?&prod=pc&wd="+encodeURIComponent(word), responseType: "text", onload:(r) => { //console.log(r) if (r.status === 200) { //console.log(r); let dataList = JSON.parse(r.responseText).g; const su = document.querySelector('#suggestions'); su.innerHTML = ''; dataList && dataList.forEach(v => { const optionElement = document.createElement('option'); optionElement.value = v.q; optionElement.innerText = v.q; su.appendChild(optionElement); }); } } }); }) document.getElementById('updatePubkey').addEventListener('click', () => { Toast.info("正在更新,请稍后...") setPubkey() }) document.getElementById('autoClick').addEventListener('click', () => { if(autoClick){ localStorage.removeItem("autoClick") autoClick = undefined; Toast.error("自动点击已经关闭") }else{ localStorage.setItem("autoClick", "开启") autoClick = "开启" Toast.success("自动点击已经开启") } }) document.getElementById('autoTips').addEventListener('click', () => { if(autoTips === 'on'){ //关闭 localStorage.setItem("autoTips", "off") autoTips = "off" Toast.error("自动提示已关") }else{ //开启 localStorage.setItem("autoTips", "on") autoTips = "on" Toast.success("自动提示已开启") } }) document.getElementById('darkTheme').addEventListener('click', () => { try{ document.getElementById("github-markdown-link").remove() document.getElementById("highlight-link").remove() }catch (e) { console.error(e) } if(darkTheme){ localStorage.removeItem("darkTheme") darkTheme = undefined; Toast.success("暗黑已经开启") }else{ localStorage.setItem("darkTheme", "关闭") darkTheme = "关闭" Toast.error("暗黑已经关闭") } }) //朗读 document.getElementById('speakAnser').addEventListener('click', () => { let ans = document.querySelector("#gptAnswer"); if(!isPlayend){ Toast.success('已暂停播放!'); speakAudio.pause(); isPlayend = true; return; }else { Toast.warn('音频已停止,正在重新播放!') } if(ans){ // let speakText = encodeURIComponent(ans.innerText); let speakText = ans.innerText; //new sogou api let f = JSON.stringify({ curTime: Date.now(), rate: "0.8", spokenDialect: "zh-CHS", text: speakText }) let sParam = CryptoJS.AES.encrypt(f.replace(/^"|"$/g, ""), CryptoJS.enc.Utf8.parse("76350b1840ff9832eb6244ac6d444366"), { "iv": CryptoJS.enc.Utf8.parse(atob("AAAAAAAAAAAAAAAAAAAAAA==") || "76350b1840ff9832eb6244ac6d444366"), "mode": CryptoJS.mode.CBC, "pad": CryptoJS.pad.Pkcs7 }).toString(); speakAudio = new Audio(`https://fanyi.sogou.com/openapi/external/getWebTTS?S-AppId=102356845&S-Param=${encodeURIComponent(sParam)}`); speakAudio.play() isPlayend = false; speakAudio.addEventListener("ended",function() { isPlayend = true; Toast.success('音频已播放完毕!'); }) } }) //原文切换 document.getElementById('rawAns').addEventListener('click', (ev) => { let ans = document.querySelector("#gptAnswer"); if(!rawAns) { Toast.error("原文无内容") return }; if(!isShowRaw){ ans.innerText = rawAns; isShowRaw = true; Toast.success("已为你显示原文") }else{ showAnserAndHighlightCodeStr(rawAns) isShowRaw = false; Toast.success("已为你显示非原文") } }) //中断回答 document.getElementById('stopAns').addEventListener('click', (ev) => { try{ if(abortXml){ abortXml.abort(); abortXml = undefined; }else { Toast.error("无法中断!") } }catch(ex){ console.error("中断失败:",ex) Toast.error("中断失败!") } }) //全屏 document.getElementById('fullScreen').addEventListener('click', (ev) => { try{ if(!isFullScreen){ document.getElementById("gptDiv").classList.add("fullScreen") isFullScreen = true; }else { document.getElementById("gptDiv").classList.remove("fullScreen") isFullScreen = false; } }catch(ex){ console.error("ex:",ex) Toast.error("未知异常!") } }) //隐藏 document.getElementById('hideGptDiv').addEventListener('click', (ev) => { try{ $("body").append(`<div class="floating-button"><a href="javascript:void(0)">显示</a></div>`) $(".floating-button a").click(function() { $("#gptDiv").show(); $(".floating-button").remove() }); $("#gptDiv").hide(); }catch(ex){ console.error("ex:",ex) Toast.error("未知异常!") } }) //复制答案 document.getElementById('copyAns').addEventListener('click', (ev) => { let ans = document.querySelector("#gptAnswer"); if(isShowRaw){ GM_setClipboard(rawAns, "text"); }else{ let cps = document.querySelectorAll(".btn-pre-copy"); for (let cp of cps){ cp.innerText = '' } GM_setClipboard(ans.innerText, "text"); for (let cp of cps){ cp.innerText = '复制代码' } } Toast.success("复制成功!") }) document.getElementById('modeSelect').addEventListener('change', () => { const selectEl = document.getElementById('modeSelect'); const selectedValue = selectEl.options[selectEl.selectedIndex].value; localStorage.setItem('GPTMODE', selectedValue); if (selectedValue === 'COOLAI') { initSocket(); } if (selectedValue === 'XBOAT') { initSocketXBOAT(); } Toast.success(`切换成功,当前线路:${selectedValue}`) }); let chatSetting = false; document.getElementById('chatSetting').addEventListener('click', () => { if(!chatSetting){ //显示内容 try{ document.querySelector("#gptStatus").classList.remove("chatHide") document.querySelector("#warn").classList.remove("chatHide") document.querySelector("#autoClickP").classList.remove("chatHide") document.querySelector("#darkThemeP").classList.remove("chatHide") document.querySelector("#website").classList.remove("chatHide") document.querySelector("#autoTipsP").classList.remove("chatHide") }catch (e) { console.log(e) } chatSetting = true; }else{ //隐藏 try{ document.querySelector("#gptStatus").classList.add("chatHide") document.querySelector("#warn").classList.add("chatHide") document.querySelector("#autoClickP").classList.add("chatHide") document.querySelector("#darkThemeP").classList.add("chatHide") document.querySelector("#website").classList.add("chatHide") document.querySelector("#autoTipsP").classList.add("chatHide") }catch (e) { console.log(e) } chatSetting = false; } }) } async function appendBox(append_case) { return new Promise((resolve, reject) => { creatBox().then((divE) => { let resetWidth = (width)=>{ try { if(width){ document.querySelector("#gptDiv").style.setProperty("width",width); return } document.querySelector("#gptDiv").style.setProperty("width", "100%") /*document.querySelector("#gptInput").setAttribute("class", "se-input adjust-input")*/ } catch (e) { console.error(e) } } switch (append_case) { case 0: //bing if (divE) { if(isMobile()){ //手机bing document.getElementById('b_results').prepend(divE) resetWidth(); }else{ document.getElementById('b_context').prepend(divE) } } break; case 1: //google if(isMobile()){ //手机google document.querySelector("div#msc").after(divE); resetWidth(); }else if (document.getElementsByClassName('TQc1id ')[0]) { document.getElementsByClassName('TQc1id ')[0].prepend(divE); } else { //other 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(isMobile()){ //手机360 document.getElementById("search-box").appendChild(divE); resetWidth(); }else{ if (document.getElementById('side')) { document.getElementById('side').prepend(divE) } } break; case 5: //fsoufsou if(isMobile()){ //手机fsou let frow = document.querySelectorAll(".flex-row")[3] if (frow.children!==undefined ) { frow.children.item(0).prepend(divE) } resetWidth() }else{ let frow = document.querySelectorAll(".flex-row")[2] if (frow.children!==undefined && frow.children.length === 2) { frow.children.item(1).prepend(divE) } else { frow.innerHTML = frow.innerHTML + `<div><div class="wiki-container" style="margin-left: 124px!important;padding: 15px!important;">${divE.innerHTML}</div></div>` } } break; case 6: //手机百度 if (document.getElementById('page-bd')) { document.getElementById('page-bd').prepend(divE) //调整css resetWidth(); } break; case 7: //duckduckgo if(isMobile()){ //手机dockgo document.querySelector('form#search_form').after(divE) resetWidth(); }else{ if (document.querySelector('[data-area="sidebar"]')) { document.querySelector('[data-area="sidebar"]').prepend(divE) } } break; case 8: //sogou if(isMobile()){ //手机搜狗 document.querySelector('form#searchform').after(divE) resetWidth(); }else{ if (document.querySelector('div.right')) { document.querySelector('div.right').prepend(divE) } } break; case 9: //bilibili if (document.querySelector('div#danmukuBox')) { document.querySelector('div#danmukuBox').children.item(0).prepend(divE) resetWidth(); } break; case 10: //csdn let asideDiv = document.querySelector("aside.blog_container_aside div") if (asideDiv) { asideDiv.after(divE) let t = asideDiv.offsetTop + asideDiv.offsetHeight + 5; const screenHeight = window.screen.height; document.querySelector("#gptDiv").setAttribute("style", `position: fixed;top: ${t}px;left: 0px;z-index: 9999;width:410px;`) //滚动条 document.querySelector("#gptAnswer").setAttribute("style", `height: ${screenHeight/5}px;overflow-y:scroll`) } break; default: if (divE) { console.log(`啥情况${divE}`) } } }).catch((err) => { throw new Error(err) }).finally(()=>{ if(autoClick){ setTimeout(() => { document.getElementById("button_GPT").click(); //自动点击 }, 1500) } }) resolve("finished") }) } //焦点函数 function isBlur() { let myInput = document.getElementById('gptInput'); if (myInput === document.activeElement) { return 1 } else { return 0 } } function keyEvent() { document.onkeydown = function (e) { let keyNum = window.event ? e.keyCode : e.which; if (13 === keyNum) { if (isBlur()) { document.getElementById('button_GPT').click() } else { console.log("失焦不执行") } } } } function addBothStyle() { GM_addStyle(` .gpt-container { box-sizing: border-box; height: -webkit-min-content; height: min-content; width: 455px; margin-top: 8px; margin-bottom: 8px; border: 1px solid #dfe1e5; border-radius: 8px; overflow: hidden; padding: 15px; background-color:#fcfcfc } #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 Uint8ArrayToString(fileData) { let dataString = ""; for (let 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) { let converter = new showdown.Converter(); //增加拓展table converter.setOption('tables', true); //启用表格选项。从showdown 1.2.0版开始,表支持已作为可选功能移入核心拓展,showdown.table.min.js扩展已被弃用 converter.setOption('openLinksInNewWindow',true) //链接在新窗口打开 converter.setOption('strikethrough', true) //删除线 converter.setOption('emoji', true) //开启emoji /*** * original: John Gruber 规范中的原始 Markdown 风格 * vanilla:对决基础风味(v1.3.1 起) * github: GitHub 风格的 Markdown,或 GFM */ showdown.setFlavor('github'); return converter.makeHtml(rawData); } //实时监控百度,360按钮消失 setInterval(() => { //百度 if (window.location.href.indexOf("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) }) } //bilibli if (window.location.href.indexOf("bilibili.com\/video") > -1 && !document.getElementById("gptDiv")) { GM_add_box_style(1) addBothStyle() keyEvent() appendBox(9).then((res) => { pivElemAddEventAndValue(null) }) } }, 2000) function generateRandomString(length) { let result = ''; let characters = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789'; let charactersLength = characters.length; for (let i = 0; i < length; i++) { result += characters.charAt(Math.floor(Math.random() * charactersLength)); } return result; } let parentID_68686; //https://t66.ltd/#/chat/1002 function T66() { let ops = {}; if (parentID_68686) { ops = {parentMessageId: parentID_68686}; } console.log(ops) let finalResult = []; GM_fetch({ method: "POST", url: "https://api.t-chat.cn:1500/api/chat-process", headers: { "Content-Type": "application/json", "Referer": "https://t66.ltd/", "origin": "https://t66.ltd", "X-Forwarded-For": generateRandomIP(), "accept": "application/json, text/plain, */*" }, data: JSON.stringify({ "prompt": your_qus, "options": ops, "config": { "temperature": 0.5, "topP": 1, "apiType": 0, "model": "gpt-3.5-turbo-16k", "maxContextCount": 5, "online": false }, "systemMessage": "You are ChatGPT, a large language model trained by OpenAI. Follow the user's instructions carefully. Respond using markdown." }), responseType: "stream" }).then((stream) => { const reader = stream.response.getReader(); // console.log(reader.read) reader.read().then(function processText({done, value}) { if (done) { return; } try { // console.log(normalArray) let byteArray = new Uint8Array(value); let decoder = new TextDecoder('utf-8'); let d = decoder.decode(byteArray); console.log(d) let dd = d.split("-^&^-"); if(dd.length === 2){ let nowResult = JSON.parse(dd[0]) if (nowResult.text) { finalResult.push(dd[1]) showAnserAndHighlightCodeStr(finalResult.join("")) } if (nowResult.id) { parentID_68686 = nowResult.id; } }else{ finalResult.push(d) showAnserAndHighlightCodeStr(finalResult.join("")) } /*let jsonLines = d.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_68686 = nowResult.id; }*/ } catch (e) { console.log(e) } return reader.read().then(processText); }); }, (reason)=>{ console.log(reason) Toast.error("未知异常!") } ).catch(ex => { console.log(ex) }) } //2023年5月6日 let parentID_chatWeb1; function CHATWEB1() { let ops = {}; if (parentID_chatWeb1) { ops = {parentMessageId: parentID_chatWeb1}; } console.log(ops) let finalResult = []; GM_fetch({ method: "POST", url: "https://b6bot1.skybyte.me/api/chat-process",//https://bots.skybyte.me/ headers: { "Content-Type": "application/json", "Referer": "https://b6bot1.skybyte.me/", "origin": "https://b6bot1.skybyte.me", "accept": "application/json, text/plain, */*" }, data: JSON.stringify({ "prompt": your_qus, "options": ops, "systemMessage": "You are ChatGPT, a large language model trained by OpenAI. Follow the user's instructions carefully. Respond using markdown.", "temperature": 0.8, "top_p": 1 }), responseType: "stream" }).then((stream) => { const reader = stream.response.getReader(); // console.log(reader.read) reader.read().then(function processText({done, value}) { if (done) { return; } try { // console.log(normalArray) let byteArray = new Uint8Array(value); 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) } if (nowResult.id) { parentID_chatWeb1 = nowResult.id; } } catch (e) { } return reader.read().then(processText); }); }, (reason)=>{ console.log(reason) Toast.error("未知异常!") } ).catch(ex => { console.log(ex) }) } //2023年5月18日 http://home.cutim.top/ https://gpt.gogpt.site/#/chat/1002 let parentID_gptplus; function getGPTPLUSkey() { let nn = Math.floor(new Date().getTime() / 1e3); const fD = e=>{ let t = CryptoJS.enc.Utf8.parse(e) , o = CryptoJS.AES.encrypt(t, '14487141bvirvvG', { mode: CryptoJS.mode.ECB, padding: CryptoJS.pad.Pkcs7 }); return o.toString() } return fD(nn); } function GPTPLUS() { let ops = {}; if (parentID_gptplus) { ops = {parentMessageId: parentID_gptplus}; } GM_fetch({ method: "POST", url: "https://api.gptplus.one/chat-process", headers: { "Content-Type": "application/json", "Referer": "https://gpt.gogpt.site/", "origin": "https://gpt.gogpt.site", "accept": "application/json, text/plain, */*" }, data: JSON.stringify({ secret: getGPTPLUSkey(), top_p: 1, prompt: your_qus, systemMessage: "You are ChatGPT, the version is GPT3.5, 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) { 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_gptplus = nowResult.id; } } catch (e) { } return reader.read().then(processText); }); },function (err) { console.log(err) Toast.error("未知异常!") }) } let messageChain2 = [];//AILS let messageChain4 = [];//ESO let messageChain6 = [];//HZIT let messageChain8 = [];//XIAOWENZI let messageChain9 = [];//bnu120 let messageChain10 = [];//PRTBOOM let messageChain1 = [ { role: "system", content: "请以markdown的形式返回答案" } ];//default AIGCFUN function addMessageChain(messageChain, element,maxLength) { maxLength = maxLength || 6; if (messageChain.length >= maxLength) { messageChain.shift(); } messageChain.push(element); console.log(messageChain,maxLength) return messageChain; } function formattedDate() { const now = new Date(); const year = now.getFullYear(); const month = now.getMonth() + 1; const day = now.getDate(); const formattedMonth = month < 10 ? `0${month}` : month; const formattedDay = day < 10 ? `0${day}` : day; return `${year}-${formattedMonth}-${formattedDay}`; } let ails_clientv; let ails_signKey = 'WI,2rU#_r:r~aF4aJ36[.Z(/8Rv93Rf'; function AILS() { let vtime = function converTimestamp(t) { const e = parseInt(t) , n = e % 10 , r = n % 2 === 0 ? n + 1 : n; return (e - n + r).toString() } let now = vtime(new Date().getTime()); const pk = `${ails_signKey}:${your_qus.length}`;//查看js的generateSignature函数中的key let Baseurl = "https://api.caipacity.com/" generateSignatureWithPkey({ t: now, m: your_qus || "", pkey: pk }).then(sign => { addMessageChain(messageChain2, {role: "user", content: your_qus})//连续话 console.log(sign) GM_fetch({ method: "POST", url: Baseurl + "v1/chat/completions?full=false", headers: { "Content-Type": "application/json", "authorization": "Bearer free", "client-id": uuidv4(), "client-v": ails_clientv, "Referer": Baseurl, "origin": "https://ai.ls", "X-Forwarded-For": generateRandomIP(), "accept": "application/json" }, data: JSON.stringify({ model: "gpt-3.5-turbo-16k", messages: messageChain2, stream: true, t: `${now}`, d: formattedDate(), s: sign, temperature:0.6 }), 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("") try { console.log(finalResult) addMessageChain(messageChain2, { role: "assistant", content: finalResult }) showAnserAndHighlightCodeStr(finalResult) } catch (e) { console.log(e) } return; } try { let d = new TextDecoder("utf8").decode(new Uint8Array(value)); console.log(d) /*d.split("\n").forEach(item=>{ try { let chunk = JSON.parse(item.replace(/data:/,"").trim()) .choices[0].delta.content; result.push(chunk) }catch (ex){} })*/ result.push(d) showAnserAndHighlightCodeStr(result.join("")) } catch (e) { console.log(e) } return reader.read().then(processText); }); },(reason)=>{ console.log(reason) Toast.error("未知错误!") }).catch((ex)=>{ console.log(ex) }); }); } //23.5.2 function DOG2() { GM_fetch({ method: "POST", url: "https://2dog.51mskd.com/doggy/guest-test", headers: { "Content-Type": "application/json", "Authorization": "Bearer null", "X-Forwarded-For": generateRandomIP(), "Referer": "https://2dog.51mskd.com/", "origin": "https://2dog.51mskd.com", "accept": "application/json" }, data: JSON.stringify({ "question": your_qus, "type": "chat", "is_guest": true, "model": "gpt-3.5-turbo" }), responseType: "stream" }).then((stream) => { let result = []; let finalResult; let errorStr; const reader = stream.response.getReader(); reader.read().then(function processText({done, value}) { if (done) { finalResult = result.join("") try { if(result.length === 0){ showAnserAndHighlightCodeStr(errorStr) }else{ showAnserAndHighlightCodeStr(finalResult) } } catch (e) { console.log(e) } return; } try { let d = new TextDecoder("utf8").decode(new Uint8Array(value)); console.log(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("")) if(d.includes("error#")){ errorStr = d } } catch (e) { console.log(e) } return reader.read().then(processText); }); },(reason)=>{ console.log(reason) Toast.error("未知错误!") }).catch((ex)=>{ console.log(ex) Toast.error("未知错误!") }); } let messageChain11 = []//xeasy function XEASY() { let now = Date.now(); const pk = {}.PUBLIC_SECRET_KEY;//查看js的generateSignature函数中的key let Baseurl = "https://chat19.xeasy.me/" generateSignatureWithPkey({ t: now, m: your_qus || "", pkey: pk }).then(sign => { addMessageChain(messageChain11, {role: "user", content: your_qus})//连续话 console.log(sign) GM_fetch({ method: "POST", url: Baseurl + "api/generate", headers: { "Content-Type": "application/json", // "Authorization": "Bearer null", "Referer": Baseurl, "accept": "application/json, text/plain, */*" }, data: JSON.stringify({ messages: messageChain11, time: now, pass: null, sign: sign, 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(messageChain11, { 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); }); },(reason)=>{ Toast.error("未知错误!") console.log(reason) }).catch((ex)=>{ Toast.error("未知错误!") console.log(ex) }); }); } let messageChain_zhulei = []; let zhulei_count = 0; function ZHULEI() { addMessageChain(messageChain_zhulei, {role: "user", content: your_qus})//连续话 zhulei_count++; GM_fetch({ method: "POST", url: "https://chathub.zhulei.xyz/api", headers: { "Content-Type": "application/json", "cookie": `BBBBB=${zhulei_count}`, "Referer": "https://chathub.zhulei.xyz/", "accept": "application/json, text/plain, */*" }, data: JSON.stringify({ messages: messageChain_zhulei, model: "gpt-3.5-turbo", password: "", temperature: 0.6 }), }).then((r) => { if (r.status === 200) { console.log(r); if(messageChain_zhulei.length > 0){ messageChain_zhulei[messageChain_zhulei.length - 1].id = Date.now(); } addMessageChain(messageChain_zhulei,{"role":"assistant","content":r.responseText,"id":Date.now()}) showAnserAndHighlightCodeStr(r.responseText) } },(reason)=>{ Toast.error("未知错误!") console.log(reason) }).catch((ex)=>{ Toast.error("未知错误!") console.log(ex) }); } async function delay(ms) { return new Promise(resolve => setTimeout(resolve, ms)); } //fix 2023年6月15日 async function HZIT() { let baseURL = "https://20220508.6bbs.cn/"; addMessageChain(messageChain6, {role: "user", content: your_qus})//连续话 let res = await GM_fetch({ method: "POST", url: baseURL + "api/chat-stream", headers: { "Content-Type": "application/json", "accept": "*/*", "token": "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", "origin": "https://20220508.6bbs.cn", "path": "v1/chat/completions", "Referer": baseURL }, data: JSON.stringify({ messages: messageChain6, stream: true, model: "gpt-3.5-turbo", temperature: 1, text: your_qus, presence_penalty: 0 }) }); if (res.status === 200) { console.log('成功....') console.log(res) let rest = JSON.parse(res.responseText).data; console.log(rest) for (let i = 0; i < 25; i++) { console.log("hzit",i) let rr = await GM_fetch({ method: "POST", url: baseURL + "api/getOne", headers: { "Content-Type": "application/json", "accept": "*/*", "token": "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", "origin": "https://20220508.6bbs.cn", "path": "v1/chat/completions", "Referer": baseURL }, data: JSON.stringify({ id: rest }) }); if (rr.status === 200) { console.log(rr) let result = JSON.parse(rr.responseText).data; if(!result) { await delay(3000) continue; } if(!result.resTime){ showAnserAndHighlightCodeStr(result.res || result) await delay(3000) continue } showAnserAndHighlightCodeStr(result.res || result) addMessageChain(messageChain6, { role: "assistant", content: result.res || result }) break; }else { console.log(res) Toast.error('访问失败了!') } } } else { console.log(res) Toast.error('访问失败了!') } } //https://chat.geekr.dev/ 2023年5月11日 async function GEEKR() { let baseURL = "https://chat.geekr.dev/"; let res = await GM_fetch({ method: "POST", url: baseURL + "chat", headers: { "Content-Type": "multipart/form-data; boundary=----WebKitFormBoundaryunS2PBTi514UmKrN", "accept": "*/*", "Referer": baseURL }, data: `------WebKitFormBoundaryunS2PBTi514UmKrN\r\nContent-Disposition: form-data; name=\"prompt\"\r\n\r\n${your_qus}\r\n------WebKitFormBoundaryunS2PBTi514UmKrN\r\nContent-Disposition: form-data; name=\"regen\"\r\n\r\nfalse\r\n------WebKitFormBoundaryunS2PBTi514UmKrN--\r\n` }); if (res.status === 200) { console.log('成功....') console.log(res) let chat_id = JSON.parse(res.responseText).chat_id; console.log("chat_id",chat_id) GM_fetch({ method: "GET", url: `https://chat.geekr.dev/stream?chat_id=${chat_id}&api_key=`, headers: { "Referer": "https://chat.geekr.dev/", "accept": "text/event-stream" }, 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("") 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") 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); }); },function (err) { console.log(err) Toast.error("未知错误!") }).catch((ex)=>{ console.log(ex) Toast.error("未知错误!") }) } else { console.log(res) Toast.error('访问失败了') } } //取某个cookie的值 function getCookieValue(cookies, cookieName) { let name = cookieName + "="; let cookieArray = cookies.split(';'); for(let i = 0; i < cookieArray.length; i++) { let cookie = cookieArray[i]; while (cookie.charAt(0) === ' ') { cookie = cookie.substring(1); } if (cookie.indexOf(name) === 0) { return cookie.substring(name.length, cookie.length); } } return ""; } //取header的cookie function getCookies(headers) { let cookieArray = headers.split('\r\n'); cookieArray.forEach(item => { if(item.startsWith('set-cookie')){ return item; } }) return ""; } //狐猴内置 2023年5月12日 function LEMURCHAT() { let baseURL = "http://lemurchat.anfans.cn/"; GM_fetch({ method: "POST", url: baseURL + "api/chat/conversation-trial", headers: { "Content-Type": "application/json", "User-Agent": "Mozilla/5.0 (Linux; Android 9; Redmi 4 Prime) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/110.0.0.0 Mobile Safari/537.36" }, data: `{"messages":"[{\\"content\\":\\"\\",\\"id\\":\\"LEMUR_AI_SYSTEM_SETTING\\",\\"isSensitive\\":false,\\"needCheck\\":false,\\"role\\":\\"system\\"},{\\"content\\":\\"${your_qus}\\",\\"isSensitive\\":false,\\"needCheck\\":true,\\"role\\":\\"user\\"}]"}`, //data: `{"messages":"[{\\"content\\":\\"\\",\\"id\\":\\"LEMUR_AI_SYSTEM_SETTING\\",\\"isSensitive\\":false,\\"needCheck\\":false,\\"role\\":\\"system\\"},{\\"content\\":\\"你好\\",\\"isSensitive\\":false,\\"needCheck\\":true,\\"role\\":\\"user\\"}]"}`, responseType: "stream" }).then((stream)=>{ const reader = stream.response.getReader(); let result = []; reader.read().then(function processText({done, value}) { if (done) { 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 = /content\\":\\"(.*?)\\"/gi.exec(item)[1] result.push(delta.replace(/\\\\n/g,"\n")) showAnserAndHighlightCodeStr(result.join("")) }catch (e) { } }) } catch (e) { console.log(e) } return reader.read().then(processText); }); },function (err) { console.log(err) Toast.error("未知错误!") }).catch((ex)=>{ console.log(ex) Toast.error("未知错误!") }); } //2023年5月4日 https://chatgpt.cytsee.com/ https://chatgpt01.peo.icu/ let messageChain_cytsee = [] function CYTSEE() { let baseURL = "https://www.cytsee.com/"; addMessageChain(messageChain_cytsee, {role: "user", content: your_qus})//连续话 let sendData = JSON.stringify({ messages: messageChain_cytsee, justStream: true, stream: true, model: "gpt-3.5-turbo", temperature: 1, presence_penalty: 0 }); let hmac = CryptoJS.HmacSHA256(sendData, "981028"); let signature = hmac.toString(CryptoJS.enc.Hex); GM_fetch({ method: "POST", url: baseURL + "api/generateStream", headers: { "Content-Type": "application/json", "accept": "*/*", "sign": signature, "Referer": "https://saosao.cytsee.com/", "origin": "https://saosao.cytsee.com" }, data: sendData, responseType: "stream" }).then((stream)=>{ const reader = stream.response.getReader(); let result = []; reader.read().then(function processText({done, value}) { if (done) { addMessageChain(messageChain_cytsee, { role: "assistant", content: result.join("") }); return; } try { // console.log(normalArray) let byteArray = new Uint8Array(value); let decoder = new TextDecoder('utf-8'); console.log(decoder.decode(byteArray)) result.push(decoder.decode(byteArray)) showAnserAndHighlightCodeStr(result.join("")) } catch (e) { console.log(e) } return reader.read().then(processText); }); },function (err) { console.log(err) Toast.error("未知错误!") }).catch((ex)=>{ console.log(ex) Toast.error("未知错误!") }); } let userId_wgk = "#/chat/" + Date.now(); function WGK() { console.log(userId_wgk) abortXml = GM_xmlhttpRequest({ method: "POST", url: "https://chat2.wuguokai.cn/api/chat-process", headers: { "Content-Type": "application/json", // "Authorization": "Bearer null", "Referer": "https://chat.wuguokai.cn/", "accept": "application/json, text/plain, */*" }, data: JSON.stringify({ prompt: your_qus, userId: userId_wgk, options: {} }), onloadstart: (stream) => { let finalResult = [] const reader = stream.response.getReader(); reader.read().then(function processText({done, value}) { if (done) { showAnserAndHighlightCodeStr(finalResult.join("").replace(/fx.*?ai/gi,"")) return; } try { // console.log(normalArray) let byteArray = new Uint8Array(value); let decoder = new TextDecoder('utf-8'); let nowResult = decoder.decode(byteArray) finalResult.push(nowResult.replace(/fxopenai/gi,"")) showAnserAndHighlightCodeStr(finalResult.join("")) } catch (e) { console.log(e) } return reader.read().then(processText); }); }, responseType: "stream", onerror: function (err) { console.log(err) Toast.error("未知错误!") } }) } let userId_yqcloud = "#/chat/" + Date.now(); function YQCLOUD() { console.log(userId_yqcloud) abortXml = GM_xmlhttpRequest({ method: "POST", //url: "https://cbjtestapi.binjie.site:7777/api/generateStream", url: "https://api.aichatos.cloud/api/generateStream", headers: { "Content-Type": "application/json", "Referer": "https://chat6.aichatos.com/", "origin": "https://chat6.aichatos.com", "accept": "application/json, text/plain, */*" }, data: JSON.stringify({ prompt: your_qus, apikey: "", system: "", withoutContext: false, userId: userId_yqcloud, network: true }), onloadstart: (stream) => { let result = []; const reader = stream.response.getReader(); reader.read().then(function processText({done, value}) { if (done) { let finalResult = result.join("") showAnserAndHighlightCodeStr(finalResult) return; } let d = new TextDecoder("utf8").decode(new Uint8Array(value)); result.push(d) try { console.log(result.join("")) showAnserAndHighlightCodeStr(result.join("")) } catch (e) { console.log(e) } return reader.read().then(processText); }); }, responseType: "stream", onerror: function (err) { console.log(err) Toast.error("未知错误!") } }) } let parentID_thebai; function THEBAI() { let ops = {}; if (parentID_thebai) { ops = {parentMessageId: parentID_thebai}; } console.log(ops) abortXml = GM_xmlhttpRequest({ method: "POST", url: "https://chatbot.theb.ai/api/chat-process", headers: { "Content-Type": "application/json", "Referer": "https://chatbot.theb.ai/", "accept": "application/json, text/plain, */*" }, data: JSON.stringify({ prompt: your_qus, options: ops }), onloadstart: (stream) => { const reader = stream.response.getReader(); reader.read().then(function processText({done, value}) { if (done) { return; } try { let byteArray = new Uint8Array(value); let decoder = new TextDecoder('utf-8'); let d = decoder.decode(byteArray); console.log(d) d.split("\n").forEach(item=>{ try { let jsonObj = JSON.parse(item.trim()) if (jsonObj.text) { // console.warn(jsonObj) showAnserAndHighlightCodeStr(jsonObj.text) } if (jsonObj.id) { parentID_thebai = jsonObj.id; } }catch (ex){ } }) } catch (e) { console.error(e) } return reader.read().then(processText); }); }, responseType: "stream", onerror: function (err) { console.log(err) Toast.error("未知错误!") } }) } let conversationId_haohuola; let tokens_haohuola = ['null']; let tk_haohuola; setTimeout(async () => { //if(getGPTMode() !== 'HAOHUOLA') return let rr = await GM_fetch({ method: "GET", url: `https://yeyu1024.xyz/chat/haohula.json?r=${Math.random()}` }); if (rr.status === 200) { console.log(rr) let result = JSON.parse(rr.responseText); tokens_haohuola = result.haohula.token; try { tokens_haohuola && (tk_haohuola = tokens_haohuola[Math.floor(Math.random() * tokens_haohuola.length)]); console.log("tk_haohuola:", tk_haohuola) } catch (e) { console.error(e) } //AILS ails_clientv = result.ails.clientv ails_signKey = result.ails.signKey console.log("ails_clientv:",ails_clientv) console.log("ails_signKey:",ails_signKey) //eso eso_access_code = result.eso.accesscode console.log("eso_access_code:",eso_access_code) //ptrboom promptboom_did = result.ptrboom.did promptboom_token = result.ptrboom.token promptboom_url = result.ptrboom.url console.log("promptboom_did:",promptboom_did) console.log("promptboom_url:",promptboom_url) //extkj extkj_key = result.extkj.key extkj_auth = result.extkj.auth console.log("extkj_key:",extkj_key) console.log("extkj_auth:",extkj_auth) //bnuList bnuList = result.bnu.list console.log("bnuList:",bnuList) setTimeout(async () => { bnuKey = bnuList[bnuInt].key; }); //pizaa pizzaSecret = result.pizza.secret console.log("pizzaSecret:",pizzaSecret) //xiaowenzi xwz_token = result.xiaowenzi.token xwz_url = result.xiaowenzi.url console.log("xwz_token:",xwz_token) console.log("xwz_url:",xwz_url) } else { console.error(rr) } }) // 2023年5月13日 function HAOHUOLA() { let ops = { prompt: your_qus }; if (conversationId_haohuola) { ops.conversationId = conversationId_haohuola; } console.log(ops) let finalResult = []; GM_httpRequest({ method: "POST", url: "https://wetabchat.haohuola.com/api/chat/conversation", headers: { "I-App":"hitab", "I-Branch":"zh", "I-Lang":"zh-CN", "I-Platform":"chrome", "I-Version":"1.0.43", "Content-Type": "application/json;charset=UTF-8", "Authorization": `Bearer ${tk_haohuola}`, "Referer": "https://wetabchat.haohuola.com/api/chat/conversation", "origin": "chrome-extension://aikflfpejipbpjdlfabpgclhblkpaafo", "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/113.0.0.0 Safari/537.36" }, data: JSON.stringify(ops), responseType: "stream" },(stream) => { const reader = stream.response.getReader(); // console.log(reader.read) reader.read().then(function processText({done, value}) { if (done) { return; } try { let byteArray = new Uint8Array(value); let decoder = new TextDecoder('utf-8'); //console.log(decoder.decode(byteArray)) let items = decoder.decode(byteArray).split(/_.*?_/); console.log(items) items.forEach((item) =>{ try{ let dataVal = JSON.parse(item) if (dataVal.data && dataVal.message !== 'stream done') { finalResult.push(dataVal.data) showAnserAndHighlightCodeStr(finalResult.join("")) } if (dataVal.data && dataVal.message === 'stream done') { conversationId_haohuola = JSON.parse(dataVal.data).conversationId; } }catch (e) { } }) } catch (e) { // console.log(e) } return reader.read().then(processText); }); }) } let parentID_chat1; //fix 2023年5月26日 1.1ai.fun function CHAT1() { let ops = {}; if (parentID_chat1) { ops = {parentMessageId: parentID_chat1}; } console.log(ops) let finalResult = []; GM_httpRequest({ method: "POST", url: "https://chatapicn.a3r.fun/api/chat-process", headers: { "Content-Type": "application/json", "Referer": "https://2chat.c3r.ink/", "accept": "application/json, text/plain, */*" }, data: JSON.stringify({ prompt: your_qus, options: ops, regenerate: false, roomId: 1002, uuid: Date.now(), systemMessage:"You are ChatGPT, a large language model trained by OpenAI. Follow the user's instructions carefully. Respond using markdown.", top_p:1, temperature:0.8 }), responseType: "stream" },(stream) => { const reader = stream.response.getReader(); // console.log(reader.read) reader.read().then(function processText({done, value}) { if (done) { return; } try { // console.log(normalArray) let byteArray = new Uint8Array(value); 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_chat1 = nowResult.id; } } catch (e) { console.log(e) } return reader.read().then(processText); }); }) } let parentID_nbai; //XIAJIE https://f6.xjai.cc/#/chat/1002 function NBAI() { let ops = {}; if (parentID_nbai) { ops = {parentMessageId: parentID_nbai}; } console.log(ops) GM_fetch({ method: "POST", url: "https://154.40.59.105:3006/api/chat-process", headers: { "Content-Type": "application/json", "Referer": "https://f1.nbai.live/", "accept": "application/json, text/plain, */*", }, data: JSON.stringify({ prompt: your_qus, 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) { return; } try { let byteArray = new Uint8Array(value); let decoder = new TextDecoder('utf-8'); let dstr = decoder.decode(byteArray) if(dstr.includes("role")){ parentID_nbai = /\"parentMessageId\":\"(.*?)\"/gi.exec(dstr)[1] }else{ console.log(dstr) result.push(dstr) finalResult = result.join("") showAnserAndHighlightCodeStr(finalResult) } } catch (e) { console.log(e) } return reader.read().then(processText); },(err)=> { console.log(err) Toast.error("未知错误!") }).catch((ex)=>{ console.log(ex) Toast.error("未知错误!") }) }) } let bingSocket; let bing_sourceAttributions; let bing_result; function initBingSocket() { let socket = new WebSocket(`wss://sydney.bing.com/sydney/ChatHub`); // 监听连接成功事件 socket.addEventListener('open', (event) => { console.log('initBingSocket 连接成功'); bingSocket = socket; showAnserAndHighlightCodeStr("BingSocket:已连接,请勿重新点击,结果返回较慢请耐心等待,若长时间没反应则不可用。注意:本线路为new bing官网线路。若要使用线路,则需要科学上网和登录(不可用)微软账号:[BING AI](https://cn.bing.com/search?q=Bing+AI&showconv=1&FORM=hpcodx)") }); // 监听接收消息事件 socket.addEventListener('message', (event) => { console.log('initBingSocket 接收到消息:', event.data); let revData = event.data; try{ let rr = revData.replace(String.fromCharCode(0x1e),""); try{ let ref = '\n' if(rr.startsWith('{"type":2')){ console.warn("bing_sourceAttributions foreach") bing_sourceAttributions && bing_sourceAttributions.forEach((sb,index) =>{ try{ ref += `${index}.[${sb.providerDisplayName}](${sb.seeMoreUrl})\n\n` }catch (e) {console.error("sb", e)} }) showAnserAndHighlightCodeStr(bing_result + ref); } }catch (ex) { /*console.error("bing_sourceAttributions ex ", JSON.parse(rr))*/ } let ans = JSON.parse(rr).arguments[0].messages[0].text; bing_result = (ans ? ans : bing_result) console.log(bing_result) showAnserAndHighlightCodeStr(bing_result) if(conversationId){ isStartOfSession = false; } if(JSON.parse(rr).arguments[0].messages[0].sourceAttributions){ let sb = JSON.parse(rr).arguments[0].messages[0].sourceAttributions; bing_sourceAttributions = sb.length > 0 ? sb : bing_sourceAttributions; console.warn('bing_sourceAttributions',bing_sourceAttributions) } }catch (e) { } /*if(revData.includes("allowReconnect")){ isStartOfSession = true; }*/ }); } //setTimeout(initBingSocket,1000) let isStartOfSession = true; let conversationId; let clientId; let conversationSignature; let invocationId = 0; let toneStyle = 'fast'; async function newBing() { setTimeout(initBingSocket) await delay(2000) const genRanHex = (size) => [...Array(size)].map(() => Math.floor(Math.random() * 16).toString(16)).join('') if(isStartOfSession){ console.log("isStartOfSession:",isStartOfSession) let req1 = await GM_fetch({ method: "GET", url: "https://www.bing.com/turing/conversation/create" }) let r = req1.responseText; console.log(r) conversationId = JSON.parse(r).conversationId; clientId = JSON.parse(r).clientId; conversationSignature = JSON.parse(r).conversationSignature; } if (bingSocket.readyState === 1) { // 发送协议和版本号 const protocol = {protocol: "json", version: 1}; bingSocket.send(JSON.stringify(protocol) + String.fromCharCode(0x1e)); await delay(1000) // 发送请求类型 const type = {type: 6}; bingSocket.send(JSON.stringify(type) + String.fromCharCode(0x1e)); await delay(500) //发送提问 if(!isStartOfSession){ invocationId += 1; } let toneOption if (toneStyle === 'creative') { toneOption = 'h3imaginative' } else if (toneStyle === 'precise') { toneOption = 'h3precise' } else if (toneStyle === 'fast') { // new "Balanced" mode, allegedly GPT-3.5 turbo toneOption = 'galileo' } else { // old "Balanced" mode toneOption = 'harmonyv3' } const msg = { "arguments": [{ "conversationId": conversationId, "sliceIds": ["222dtappid", "225cricinfo", "224locals0"], "optionsSets": [ 'nlu_direct_response_filter', 'deepleo', 'disable_emoji_spoken_text', 'responsible_ai_policy_235', 'enablemm', toneOption, 'dtappid', 'cricinfo', 'cricinfov2', 'dv3sugg', 'nojbfedge', ], "traceId": genRanHex(32), "source": "cib", "isStartOfSession": isStartOfSession, "message": { "author": "user", "text": your_qus, "messageType": "Chat" }, "conversationSignature": conversationSignature, "participant": { "id": clientId } }], "invocationId": `${invocationId}`, "target": "chat", "type": 4 } bingSocket.send(JSON.stringify(msg) + String.fromCharCode(0x1e)); /* if(isStartOfSession){ isStartOfSession = false; }*/ } } function uuidv4() { let d = new Date().getTime(); // get current timestamp in ms (to ensure UUID uniqueness) let uuid = 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (c) { let r = (d + Math.random() * 16) % 16 | 0 // generate random nibble d = Math.floor(d / 16) // correspond each UUID digit to unique 4-bit chunks of timestamp return (c === 'x' ? r : (r & 0x3 | 0x8)).toString(16) // generate random hexadecimal digit }) return uuid } //OPENAI fix 2023年6月16 //let messageChain_openai = []; let openai_conversation_id ; let openai_parent_message_id ; let history_disable = false ; async function OPENAI(GPTModel){ // addMessageChain(messageChain_openai,{ // "role": "user", // "id": uuidv4(), // "content": { // "content_type": "text", // "parts": [ // your_qus // ] // }, // "metadata":{} // },20) showAnserAndHighlightCodeStr(`此线路为OpenAI官网线路:${GPTModel},使用前确定有访问权限且登录(不可用)账号:[OPENAI官网](https://chat.openai.com/)`) let req1 = await GM_fetch({ method: "GET", url: "https://chat.openai.com/api/auth/session" }) let r = req1.responseText; console.log(r) let accessToken; try{ accessToken = JSON.parse(r).accessToken; }catch (e) { showAnserAndHighlightCodeStr("验证出错,请确认有权限访问OPENAI官网[OPENAI](https://chat.openai.com/)") } if(!accessToken){ showAnserAndHighlightCodeStr("验证出错,请确认有权限OPENAI官网[OPENAI](https://chat.openai.com/)") } let paramObj = { action: "next", messages: [{ "author": { "role": "user" }, "id": uuidv4(), "content": { "content_type": "text", "parts": [ your_qus ] }, "metadata":{} }], model: GPTModel, parent_message_id: openai_parent_message_id ? openai_parent_message_id : uuidv4(), // max_tokens: 4000, arkose_token: null, history_and_training_disabled: history_disable, timezone_offset_min: new Date().getTimezoneOffset() } if(openai_conversation_id){ try { Reflect.set(paramObj,"conversation_id", openai_conversation_id) }catch (ex) { console.error(ex) } } console.log(paramObj) let sendData = JSON.stringify(paramObj) GM_fetch({ method: 'POST', url: 'https://chat.openai.com/backend-api/conversation', headers: { 'Content-Type': 'application/json', Authorization: 'Bearer ' + accessToken, 'origin': 'https://chat.openai.com', 'Referer': 'https://chat.openai.com/', }, responseType: "stream", data: sendData }).then((stream)=> { let reader = stream.response.getReader() let answer; reader.read().then(function processText({done, value}) { if (done) { console.log("===done==") // addMessageChain(messageChain_openai,{ // "role": "assistant", // "id": uuidv4(), // "content": { // "content_type": "text", // "parts": [ // answer // ] // }, // "metadata":{} // }, 20) return } try{ let responseItem = String.fromCharCode(...Array.from(value)) console.log(responseItem) let items = responseItem.split('\n\n') if (items.length > 2) { let lastItem = items.slice(-3, -2)[0] if (lastItem.startsWith('data: [DONE]')) { responseItem = items.slice(-4, -3)[0] } else { responseItem = lastItem } } if (responseItem.startsWith('data: {')) { answer = JSON.parse(responseItem.slice(6)).message.content.parts[0] showAnserAndHighlightCodeStr(answer) if(JSON.parse(responseItem.slice(6)).conversation_id){ openai_conversation_id = JSON.parse(responseItem.slice(6)).conversation_id openai_parent_message_id = JSON.parse(responseItem.slice(6)).message.id } } else if (responseItem.startsWith('data: [DONE]')) { // return } }catch (e) { console.error(e) } return reader.read().then(processText) },function (reason) { console.log(reason) Toast.error("未知错误!") }).catch((ex)=>{ console.log(ex) Toast.error("未知错误!") }) }) } let csrfToken; async function setCsrfToken(){ let req1 = await GM_fetch({ method: "GET", url: "https://qianwen.aliyun.com/chat", headers: { "origin":"https://qianwen.aliyun.com", "referer":"https://qianwen.aliyun.com/chat" } }) let r = req1.responseText; console.log(r); try{ csrfToken = /\w{8}-\w{4}-\w{4}-\w{4}-\w{12}/g.exec(r)[0]; console.log("csrfToken:",csrfToken) }catch (e) { Toast.error("csrfToken获取失败") } } setTimeout(()=>{ if(getGPTMode()==="TONGYI"){ setCsrfToken() } }) let tongyi_first = true; let tongyi_sessionId; //通义千问 2023年5月13日 async function TONGYI(){ if(tongyi_first){ let req1 = await GM_fetch({ method: "POST", url: "https://qianwen.aliyun.com/addSession", headers: { "origin":"https://qianwen.aliyun.com/", "referer":"https://qianwen.aliyun.com/chat", "Content-Type": "application/json", "x-xsrf-token": csrfToken }, data:JSON.stringify({ "firstQuery": your_qus }) }) let r = req1.responseText; //console.log(r); try{ tongyi_sessionId = JSON.parse(r).data.sessionId; tongyi_first = false; }catch (e) { tongyi_first = true; showAnserAndHighlightCodeStr("出错,请确认已登录(不可用)通义官网[通义](https://qianwen.aliyun.com/chat)") setTimeout(setCsrfToken) } } let sendData = JSON.stringify({ "action": "next", "msgId": generateRandomString(32), "parentMsgId": "0", "contents": [ { "contentType": "text", "content": your_qus } ], "timeout": 17, "openSearch": false, "sessionId": tongyi_sessionId, "model": "" }) GM_fetch({ method: 'POST', url: 'https://qianwen.aliyun.com/conversation', headers: { "origin":"https://qianwen.aliyun.com/", "referer":"https://qianwen.aliyun.com/chat", "Content-Type": "application/json", "accept": "text/event-stream", "x-xsrf-token": csrfToken }, responseType: "stream", data: sendData }).then((stream)=> { let reader = stream.response.getReader() let answer; reader.read().then(function processText({done, value}) { if (done) { console.log("===done==") return } let responseItem = new TextDecoder("utf-8").decode(value) //console.log(responseItem) responseItem.split("\n").forEach(item=>{ try { let content = JSON.parse(item.replace(/data: /gi,"").trim()).content[0]; console.log(content) showAnserAndHighlightCodeStr(content) }catch (ex){} }) return reader.read().then(processText) },function (reason) { console.log(reason) Toast.error("未知错误!") }).catch((ex)=>{ console.log(ex) Toast.error("未知错误!") }) }) } //星火相关====start===== let sp_appId; let sp_fd = String(+new Date()).slice(-6);//a = (a = String(+new Date)).substring(a.length - 6) let sp_chatId; let sp_GtToken; async function init_sp_appId() { //get https://xinghuo.xfyun.cn/chat //script defer="defer" src="/static/js/main.04f3ec36.js"></script> 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) Toast.error("出错了,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) Toast.error("出错了,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) Toast.error("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) Toast.error("未知错误!") }).catch((ex)=>{ console.log(ex) Toast.error("未知错误!") }) }) } //星火相关====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) { Toast.error("未知错误!") console.log(reason) }).catch((ex)=>{ Toast.error("未知错误!") 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) { 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) { Toast.error("未知错误!") console.log(reason) }).catch((ex)=>{ Toast.error("未知错误!") 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) Toast.error("未知错误!") }).catch((ex)=>{ Toast.error("未知错误!") 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) Toast.error("未知错误!") }).catch((ex)=>{ console.log(ex) Toast.error("未知错误!") }) } 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) Toast.error("未知错误!") }).catch((ex)=>{ console.log(ex) Toast.error("未知错误!") }) } 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-16k","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) Toast.error("未知错误!") }).catch((ex)=>{ console.log(ex) Toast.error("未知错误!") }) } 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","</br>")) 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) Toast.error('访问失败了') } }, 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","</br>")) 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", onerror: function (err) { console.log(err) Toast.error("未知错误!") } }); } 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 = `<div>some err happends,errinfo :<br>${err.messages}</div>` } }); } 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) Toast.error("未知错误!") } }) }//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) { 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) Toast.error("未知错误!") } }) } 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) Toast.error("未知错误!") } }) } 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) { 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) Toast.error("未知错误!") }).catch((ex)=>{ console.log(ex) Toast.error("未知错误!") }); } 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-16k", "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) Toast.error("未知错误!") }).catch((ex)=>{ console.log(ex) Toast.error("未知错误!") }); }); } //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-16k", 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) Toast.error("未知错误!") } }); } //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) Toast.error("未知错误!") } return; } try { let d = new TextDecoder("utf8").decode(new Uint8Array(value)); if(d.match(/[email protected]/gi)){ d = d.replace(/[email protected]/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) Toast.error("未知错误!") } }); } 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) Toast.error("未知错误!") } }) } //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(messageChain8, { role: "assistant", content: finalResult }) showAnserAndHighlightCodeStr(finalResult) } catch (e) { console.log(e) Toast.error("未知错误!") } 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) Toast.error("未知错误!") }).catch((ex)=>{ console.log(ex) Toast.error("未知错误!") }) } //获取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) Toast.error("未知错误!") 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")){ Toast.info(`请到设置更新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) Toast.error("未知错误!") }).catch((ex)=>{ console.log(ex) Toast.error("未知错误!") }); }); } 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")){ Toast.error(`无效或过期,请到设置更新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) Toast.error("未知错误!" + reason.message) }).catch((ex)=>{ console.log(ex) Toast.error("未知错误!" + 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) Toast.error("未知错误!" + err.message) } }); } 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) { 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) Toast.error("未知错误!" + err.message) } }) } //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(/<strong.*?<\/strong>/gi,'')) showAnserAndHighlightCodeStr(result.join("")) } catch (e) { console.log(e) } return reader.read().then(processText); }); },(reason)=>{ console.log(reason) Toast.error("未知错误!" + reason.message) }).catch((ex)=>{ console.log(ex) Toast.error("未知错误!" + ex.message) }); /* 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-16k", "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) Toast.error("未知错误!" + err.message) }) } //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) Toast.error("未知错误!" + err.message) } }) } 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) Toast.error("未知错误!" + err.message) } }) } // //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) { 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) Toast.error("未知错误!" + ex.message) }) } 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('连接成功'); Toast.success("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('连接成功'); Toast.success("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) })();
QingJ © 2025
镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址