ChatGPT降智风险检测✅(优化版)(添加教程版)

ChatGPT会对某些IP进行无提示的服务降级,Plus用户模型会降至4-Mini,此脚本检测账号IP情况用于让你判断是否降智✅。

  1. // ==UserScript==
  2. // @name ChatGPT降智风险检测✅(优化版)(添加教程版)
  3. // @namespace https://github.com/KoriIku/chatgpt-degrade-checker
  4. // @homepage https://github.com/KoriIku/chatgpt-degrade-checker
  5. // @author 修改自KoriIku,然后又由 monkeyji 修改
  6. // @icon data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA2NCA2NCI+PHBhdGggZmlsbD0iIzJjM2U1MCIgZD0iTTMyIDJDMTUuNDMyIDIgMiAxNS40MzIgMiAzMnMxMy40MzIgMzAgMzAgMzAgMzAtMTMuNDMyIDMwLTMwUzQ4LjU2OCAyIDMyIDJ6bTAgNTRjLTEzLjIzMyAwLTI0LTEwLjc2Ny0yNC0yNFMxOC43NjcgOCAzMiA4czI0IDEwLjc2NyAyNCAyNFM0NS4yMzMgNTYgMzIgNTZ6Ii8+PHBhdGggZmlsbD0iIzNkYzJmZiIgZD0iTTMyIDEyYy0xMS4wNDYgMC0yMCA4Ljk1NC0yMCAyMHM4Ljk1NCAyMCAyMCAyMCAyMC04Ljk1NCAyMC0yMFM0My4wNDYgMTIgMzIgMTJ6bTAgMzZjLTguODM3IDAtMTYtNy4xNjMtMTYtMTZzNy4xNjMtMTYgMTYtMTYgMTYgNy4xNjMgMTYgMTZTNDAuODM3IDQ4IDMyIDQ4eiIvPjxwYXRoIGZpbGw9IiMwMGZmN2YiIGQ9Ik0zMiAyMGMtNi42MjcgMC0xMiA1LjM3My0xMiAxMnM1LjM3MyAxMiAxMiAxMiAxMi01LjM3MyAxMi0xMlMzOC42MjcgMjAgMzIgMjB6bTAgMjBjLTQuNDE4IDAtOC0zLjU4Mi04LThzMy41ODItOCA4LTggOCAzLjU4MiA4IDgtMy41ODIgOC04IDh6Ii8+PGNpcmNsZSBmaWxsPSIjZmZmIiBjeD0iMzIiIGN5PSIzMiIgcj0iNCIvPjwvc3ZnPg==
  7. // @version 1.3
  8. // @description ChatGPT会对某些IP进行无提示的服务降级,Plus用户模型会降至4-Mini,此脚本检测账号IP情况用于让你判断是否降智✅。
  9. // @match *://chatgpt.com/*
  10. // @match https://go.gptdsb.com/**
  11. // @match https://gpt.github.cn.com/**
  12. // @match https://go.gptdie.com/**
  13. // @match https://chat.openai.com/**
  14. // @match https://chatgpt.com/**
  15. // @match https://*.oaifree.com/**
  16. // @match https://share.github.cn.com/**
  17. // @match https://cc.plusai.me/**
  18. // @match https://chat.chatgptplus.cn/**
  19. // @match https://chat.rawchat.cc/**
  20. // @match https://chat.sharedchat.cn/**
  21. // @match https://chat.gptdsb.com/**
  22. // @match https://chat.freegpts.org/**
  23. // @match https://gpt.github.cn.com/**
  24. // @match https://chat.aicnn.xyz/**
  25. // @match https://*.xyhelper.com.cn/**
  26. // @match https://oai.aitopk.com/**
  27. // @match https://www.opkfc.com/**
  28. // @match https://bus.hematown.com/**
  29. // @match https://chatgpt.dairoot.cn/**
  30. // @match https://plus.aivvm.com/**
  31. // @match https://sharechat.aischat.xyz/**
  32. // @match https://web.tu-zi.com/**
  33. // @match https://chat1.2233.ai/**
  34. // @match https://2233.ai/**
  35. // @match https://yesiamai.com/**
  36. // @match https://www.azs.ai/**
  37. // @match https://gpt.universalbus.cn/**
  38. // @match https://aichatru.ru/**
  39. // @match https://chatgptchatapp.com/**
  40. // @grant none
  41. // @license AGPLv3
  42. // ==/UserScript==
  43.  
  44. (function() {
  45. 'use strict';
  46.  
  47. // 创建显示框
  48. const displayBox = document.createElement('div');
  49. displayBox.style.position = 'fixed';
  50. displayBox.style.top = '50%';
  51. displayBox.style.right = '20px';
  52. displayBox.style.transform = 'translateY(-50%)';
  53. displayBox.style.width = '350px';
  54. displayBox.style.padding = '10px';
  55. displayBox.style.backgroundColor = 'rgba(0, 0, 0, 0.7)';
  56. displayBox.style.color = '#fff';
  57. displayBox.style.fontSize = '14px';
  58. displayBox.style.borderRadius = '8px';
  59. displayBox.style.boxShadow = '0 4px 8px rgba(0, 0, 0, 0.3)';
  60. displayBox.style.zIndex = '10000';
  61. displayBox.style.transition = 'all 0.3s ease';
  62. displayBox.style.display = 'none';
  63.  
  64. displayBox.innerHTML = `
  65. <div style="margin-bottom: 10px;">
  66. <strong>PoW 信息</strong>
  67. </div>
  68. <div id="content">
  69. PoW难度: <span id="difficulty">N/A</span><span id="difficulty-level" style="margin-left: 3px"></span>
  70. <span id="difficulty-tooltip" style="
  71. cursor: pointer;
  72. color: #fff;
  73. font-size: 12px;
  74. display: inline-block;
  75. width: 14px;
  76. height: 14px;
  77. line-height: 14px;
  78. text-align: center;
  79. border-radius: 50%;
  80. border: 1px solid #fff;
  81. margin-left: 3px;
  82. ">?</span><br>
  83. PoW数值: <span id="pow-value">N/A</span><br>
  84. IP质量: <span id="ip-quality">N/A</span><br>
  85. <span id="persona-container" style="display: none">
  86. 用户类型: <span id="persona">N/A</span></span>
  87. PoW难度” 默认是十六进制<br>
  88. PoW数值” Pow难度 转换后的具体数值<br>
  89. Pow 可以简单等价为信任度,越高越好。<br>
  90. 过低的信任值可能导致模型被降级,例如 o1 模型不思考,4o 模型不识图<br>
  91. <span style="color: #EB4E4A" >建议切换不同的节点并刷新验证,令信任度保持在五位数以上才能降低模型被降智的可能性,最好保持在 20000 以上</span>
  92. </div>
  93. <div style="
  94. margin-top: 12px;
  95. padding-top: 8px;
  96. border-top: 0.5px solid rgba(255, 255, 255, 0.15);
  97. font-size: 10px;
  98. color: rgba(255, 255, 255, 0.5);
  99. text-align: center;
  100. letter-spacing: 0.3px;
  101. ">
  102. ChatGPT Degrade Checker
  103. </div>`;
  104. document.body.appendChild(displayBox);
  105.  
  106. // 创建收缩状态的指示器
  107. const collapsedIndicator = document.createElement('div');
  108. collapsedIndicator.style.position = 'fixed';
  109. collapsedIndicator.style.top = '50%';
  110. collapsedIndicator.style.right = '20px';
  111. collapsedIndicator.style.transform = 'translateY(-50%)';
  112. collapsedIndicator.style.width = '32px';
  113. collapsedIndicator.style.height = '32px';
  114. collapsedIndicator.style.backgroundColor = 'transparent';
  115. collapsedIndicator.style.borderRadius = '50%';
  116. collapsedIndicator.style.cursor = 'pointer';
  117. collapsedIndicator.style.zIndex = '10000';
  118. collapsedIndicator.style.padding = '4px';
  119. collapsedIndicator.style.display = 'flex';
  120. collapsedIndicator.style.alignItems = 'center';
  121. collapsedIndicator.style.justifyContent = 'center';
  122. collapsedIndicator.style.transition = 'all 0.3s ease';
  123.  
  124. // 使用SVG作为指示器
  125. collapsedIndicator.innerHTML = `
  126. <svg id="status-icon" width="32" height="32" viewBox="0 0 64 64" style="transition: all 0.3s ease;">
  127. <defs>
  128. <linearGradient id="gradient" x1="0%" y1="0%" x2="100%" y2="100%">
  129. <stop offset="0%" style="stop-color:#3498db;stop-opacity:1" />
  130. <stop offset="100%" style="stop-color:#2ecc71;stop-opacity:1" />
  131. </linearGradient>
  132. <filter id="glow">
  133. <feGaussianBlur stdDeviation="2" result="coloredBlur"/>
  134. <feMerge>
  135. <feMergeNode in="coloredBlur"/>
  136. <feMergeNode in="SourceGraphic"/>
  137. </feMerge>
  138. </filter>
  139. </defs>
  140. <g id="icon-group" filter="url(#glow)">
  141. <circle cx="32" cy="32" r="28" fill="url(#gradient)" stroke="#fff" stroke-width="2"/>
  142. <circle cx="32" cy="32" r="20" fill="none" stroke="#fff" stroke-width="2" stroke-dasharray="100">
  143. <animateTransform
  144. attributeName="transform"
  145. attributeType="XML"
  146. type="rotate"
  147. from="0 32 32"
  148. to="360 32 32"
  149. dur="8s"
  150. repeatCount="indefinite"/>
  151. </circle>
  152. <circle cx="32" cy="32" r="12" fill="none" stroke="#fff" stroke-width="2">
  153. <animate
  154. attributeName="r"
  155. values="12;14;12"
  156. dur="2s"
  157. repeatCount="indefinite"/>
  158. </circle>
  159. <circle id="center-dot" cx="32" cy="32" r="4" fill="#fff">
  160. <animate
  161. attributeName="r"
  162. values="4;6;4"
  163. dur="2s"
  164. repeatCount="indefinite"/>
  165. </circle>
  166. </g>
  167. </svg>`;
  168. document.body.appendChild(collapsedIndicator);
  169.  
  170. // 鼠标悬停事件
  171. collapsedIndicator.addEventListener('mouseenter', function() {
  172. displayBox.style.display = 'block';
  173. collapsedIndicator.style.opacity = '0';
  174. });
  175.  
  176. displayBox.addEventListener('mouseleave', function() {
  177. displayBox.style.display = 'none';
  178. collapsedIndicator.style.opacity = '1';
  179. });
  180.  
  181. // 创建提示框
  182. const tooltip = document.createElement('div');
  183. tooltip.id = 'tooltip';
  184. tooltip.innerText = '这个值越小,代表PoW难度越高,ChatGPT认为你的IP风险越高。';
  185. tooltip.style.position = 'fixed';
  186. tooltip.style.backgroundColor = 'rgba(0, 0, 0, 0.8)';
  187. tooltip.style.color = '#fff';
  188. tooltip.style.padding = '8px 12px';
  189. tooltip.style.borderRadius = '5px';
  190. tooltip.style.fontSize = '12px';
  191. tooltip.style.visibility = 'hidden';
  192. tooltip.style.zIndex = '10001';
  193. tooltip.style.width = '240px';
  194. tooltip.style.lineHeight = '1.4';
  195. tooltip.style.pointerEvents = 'none';
  196. document.body.appendChild(tooltip);
  197.  
  198. // 显示提示
  199. document.getElementById('difficulty-tooltip').addEventListener('mouseenter', function(event) {
  200. tooltip.style.visibility = 'visible';
  201.  
  202. const tooltipWidth = 240;
  203. const windowWidth = window.innerWidth;
  204. const mouseX = event.clientX;
  205. const mouseY = event.clientY;
  206.  
  207. let leftPosition = mouseX - tooltipWidth - 10;
  208. if (leftPosition < 10) {
  209. leftPosition = mouseX + 20;
  210. }
  211.  
  212. let topPosition = mouseY - 40;
  213.  
  214. tooltip.style.left = `${leftPosition}px`;
  215. tooltip.style.top = `${topPosition}px`;
  216. });
  217.  
  218. // 隐藏提示
  219. document.getElementById('difficulty-tooltip').addEventListener('mouseleave', function() {
  220. tooltip.style.visibility = 'hidden';
  221. });
  222.  
  223. // 更新difficulty指示器
  224. function updateDifficultyIndicator(difficulty) {
  225. const difficultyLevel = document.getElementById('difficulty-level');
  226. const ipQuality = document.getElementById('ip-quality');
  227.  
  228. if (difficulty === 'N/A') {
  229. setIconColors('#888', '#666');
  230. difficultyLevel.innerText = '';
  231. ipQuality.innerHTML = 'N/A';
  232. return;
  233. }
  234.  
  235. const cleanDifficulty = difficulty.replace('0x', '').replace(/^0+/, '');
  236. const hexLength = cleanDifficulty.length;
  237. const hex2num = parseInt(cleanDifficulty, 16); // 将十六进制字符串转换为数字
  238. let color, secondaryColor, textColor, level, qualityText;
  239.  
  240. if (hexLength <= 2) {
  241. color = '#F44336';
  242. secondaryColor = '#d32f2f';
  243. textColor = '#ff6b6b';
  244. level = '(困难)';
  245. qualityText = '高风险';
  246. } else if (hexLength === 3) {
  247. color = '#FFC107';
  248. secondaryColor = '#ffa000';
  249. textColor = '#ffd700';
  250. level = '(中等)';
  251. qualityText = '中等';
  252. } else if (hexLength === 4) {
  253. color = '#8BC34A';
  254. secondaryColor = '#689f38';
  255. textColor = '#9acd32';
  256. level = '(简单)';
  257. qualityText = '良好';
  258. } else {
  259. color = '#4CAF50';
  260. secondaryColor = '#388e3c';
  261. textColor = '#98fb98';
  262. level = '(极易)';
  263. qualityText = '优秀';
  264. }
  265. setIconColors(color, secondaryColor);
  266. difficultyLevel.innerHTML = `<span style="color: ${textColor}">${level}</span>`;
  267. ipQuality.innerHTML = `<span style="color: ${textColor}">${qualityText}</span>`;
  268. document.getElementById('pow-value').innerText = hex2num;
  269. }
  270.  
  271. function setIconColors(primaryColor, secondaryColor) {
  272. const gradient = document.querySelector('#gradient');
  273. gradient.innerHTML = `
  274. <stop offset="0%" style="stop-color:${primaryColor};stop-opacity:1" />
  275. <stop offset="100%" style="stop-color:${secondaryColor};stop-opacity:1" />
  276. `;
  277. }
  278.  
  279. // 拦截 fetch 请求
  280. const originalFetch = window.fetch;
  281. window.fetch = async function(resource, options) {
  282. const response = await originalFetch(resource, options);
  283.  
  284. if ((resource.includes('/backend-api/sentinel/chat-requirements')||resource.includes('backend-anon/sentinel/chat-requirements')) && options.method === 'POST') {
  285. const clonedResponse = response.clone();
  286. clonedResponse.json().then(data => {
  287. const difficulty = data.proofofwork ? data.proofofwork.difficulty : 'N/A';
  288. const persona = data.persona || 'N/A';
  289. document.getElementById('difficulty').innerText = difficulty;
  290.  
  291. const personaContainer = document.getElementById('persona-container');
  292. if (persona && !persona.toLowerCase().includes('free')) {
  293. personaContainer.style.display = 'block';
  294. document.getElementById('persona').innerText = persona;
  295. } else {
  296. personaContainer.style.display = 'none';
  297. }
  298.  
  299. updateDifficultyIndicator(difficulty);
  300. }).catch(e => console.error('解析响应时出错:', e));
  301. }
  302. return response;
  303. };
  304. })();

QingJ © 2025

镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址