当前位置: 首页 > news >正文

网站建设jiq求职seo推荐

网站建设jiq,求职seo推荐,工程资源网,网站做排名教程目录 一、 引言 二、 逻辑 三、 源代码 四、 添加新脚本 五、 使用 六、 BUG 七、 优化日志 1.获取最后消息内容报错 一、 引言 deepseek每次第一次提问就正常,后面就开始繁忙了,有一点阴招全使我们身上。 greasyfork登不上,不知道…

目录

一、 引言

二、 逻辑

三、 源代码

四、  添加新脚本

五、 使用

六、 BUG

七、 优化日志

1.获取最后消息内容报错


一、 引言

deepseek每次第一次提问就正常,后面就开始繁忙了,有一点阴招全使我们身上。

greasyfork登不上,不知道是不是被墙了,所以直接在这里存档。

二、 逻辑

每隔5秒使用xpath表达式匹配当前对话框的最后一个消息,出现“服务器繁忙,请稍后再试。”即点击重试。

三、 源代码

// ==UserScript==
// @name         Deepseek 服务器繁忙无限重试
// @namespace    http://tampermonkey.net/
// @version      2025-02-11
// @description  每隔5秒检测一次最后一条数据是否出现服务器繁忙,出现点击重试,无限循环。
// @author       Vdoi
// @match        *chat.deepseek.com/*
// @icon         https://cdn.deepseek.com/chat/icon.png
// @grant        none
// ==/UserScript==(function() {'use strict';console.log('start')let intervalId = null;//重试次数let retryCount = 0// 每隔 5 秒检查一次var times = 5000// 创建通知元素并插入到页面中function addNotification() {let notification = document.getElementById('notification');if (!notification) { // 检查是否已存在通知元素notification = document.createElement('div');notification.id = 'notification';notification.style.position = 'fixed';notification.style.left = '50%';notification.style.top = '50%';notification.style.transform = 'translate(-50%, -50%)';notification.style.backgroundColor = '#4D6BFE';notification.style.color = 'white';notification.style.padding = '15px';notification.style.borderRadius = '5px';notification.style.boxShadow = '0 4px 8px rgba(0, 0, 0, 0.2)';notification.style.zIndex = '1000';notification.style.textAlign = 'center';notification.style.display = 'none'; // 默认隐藏document.body.appendChild(notification);}return notification;}// 显示通知的方法function showNotification(text) {//console.log('显示提示')const notification = document.getElementById('notification');notification.textContent = text;notification.style.display = 'block';setTimeout(() => {notification.style.display = 'none';}, 3000); // 3秒后隐藏通知}//自动重试按钮点击事件function retryButtonClick() {var xpath = '//div[@id="retry"]/span';var elementResult = document.evaluate(xpath,document,null,XPathResult.FIRST_ORDERED_NODE_TYPE,null);var clickElement = elementResult.singleNodeValue;clickElement.addEventListener('click', function() {//console.log('点击')const xpathExpression = '//div[@id="retry"]';const result = document.evaluate(xpathExpression,document,null,XPathResult.FIRST_ORDERED_NODE_TYPE,null);const newButtonDiv = result.singleNodeValue;var text = times + '毫秒后开启自动重试'if (clickElement.textContent === '打开自动重试') {console.log('已开启自动重试')showNotification(text); // 显示通知// 设置背景颜色newButtonDiv.style.backgroundColor = '#4D6BFE';// 设置文字颜色为白色newButtonDiv.style.color = 'white';//开启定时器clickElement.textContent = '关闭自动重试';intervalId = setInterval(() => checkAndClick(times), times);} else {console.log('已关闭自动重试')text = '已关闭自动重试'showNotification(text); // 显示通知// 设置背景颜色newButtonDiv.style.backgroundColor = 'white';// 设置文字颜色为白色newButtonDiv.style.color = '#4D6BFE';// 如果定时器已启动,则清除它,并更新按钮文本clearInterval(intervalId);intervalId = null;clickElement.textContent = '打开自动重试';}});}//增加自动重试按钮function addButton() {const xpathExpression = '//span[contains(text(),"深度思考")]/../../div[2]';const result = document.evaluate(xpathExpression,document,null,XPathResult.FIRST_ORDERED_NODE_TYPE,null);const targetElement = result.singleNodeValue;//console.log('增加', targetElement)if (targetElement) {// 创建要插入的 div 元素(按钮)const newButtonDiv = document.createElement('div');newButtonDiv.setAttribute('class', 'ds-button ds-button--primary d9f56c96');newButtonDiv.setAttribute('id', 'retry');// 设置背景颜色newButtonDiv.style.backgroundColor = 'white';// 设置文字颜色为白色newButtonDiv.style.color = '#4D6BFE';// 创建内部的 span 元素const buttonTextSpan = document.createElement('span');buttonTextSpan.setAttribute('class', 'ad0c98fd');buttonTextSpan.textContent = '打开自动重试';// 将 span 元素添加到按钮 div 中newButtonDiv.appendChild(buttonTextSpan);// 在目标元素后面插入新按钮元素console.log('增加')targetElement.parentNode.insertBefore(newButtonDiv, targetElement.nextSibling);//targetElement.appendChild(newButtonDiv);//增加点击事件//retryButtonClick()}}//当前页面最后消息function lastNews(){// 定义 XPath 表达式const xpathExpression = '//*[@id="root"]/div/div[2]/div[2]/div/div[2]/div/div/div[1]/div[last()]/div[@class="ds-markdown ds-markdown--block"]//p';let flag = false// 使用 document.evaluate() 方法执行 XPath 查询const result = document.evaluate(xpathExpression,document,null,XPathResult.FIRST_ORDERED_NODE_TYPE,null);const targetElement = result.singleNodeValue;//增加空判断if (targetElement){console.log(targetElement.textContent)if (targetElement.textContent === '服务器繁忙,请稍后再试。') {flag = true;}}return flag;}//点击重试function clickRe(){const exists = lastNews()if (exists) {console.log('检测到服务器繁忙提示,尝试点击按钮...');// 定义用于定位按钮的 XPath 表达式const buttonXpathExpression = '//*[@id="root"]/div/div[2]/div[2]/div/div[2]/div/div/div[1]/div[last()]//div[2]/div[@class="ds-icon"]';// 执行 XPath 查询以获取按钮元素const buttonResult = document.evaluate(buttonXpathExpression,document,null,XPathResult.FIRST_ORDERED_NODE_TYPE,null);const buttonToClick = buttonResult.singleNodeValue;if (buttonToClick) {buttonToClick.click();console.log('按钮已点击');var text = '次重试';showNotification(text)} else {console.log('未找到要点击的按钮');}}}//重试次数function getreCount(){//重试次数const xpathCount = '//*[@id="root"]/div/div[2]/div[2]/div/div[2]/div/div/div[1]/div[last()]/div[@class="ds-flex"]/div[@class="ds-flex"]/div[2]'const countResult = document.evaluate(xpathCount,document,null,XPathResult.FIRST_ORDERED_NODE_TYPE,null);const countElement = countResult.singleNodeValue;if (countElement){const count = countElement.textContent;console.log('重试文本:' + count)const parts = count.split(' / ');const numberBeforeSlash = parseInt(parts[0], 10);console.log('重试次数:' + numberBeforeSlash);}}//检查等待加载函数function checkDsLoadingElementExists() {const xpathExpression = '//*[@id="root"]//div[contains(@class,"ds-loading")]';const result = document.evaluate(xpathExpression,document,null,XPathResult.FIRST_ORDERED_NODE_TYPE,null);const loadingElement = result.singleNodeValue;return Boolean(loadingElement);}// 定时重试函数function checkAndClick(times) {console.log('每隔' + times + '毫秒检查一次')//重试次数getreCount()//是否含有加载元素const exists = checkDsLoadingElementExists();const exists2 = lastNews()if (exists) {console.log('找到了包含 ds - loading 类的元素。');} else{if (exists2){console.log('未找到了包含 ds - loading 类的元素。');//点击重试clickRe();//增加重试次数retryCount++;//显示提示var text = '已重试' + retryCount + '次'showNotification(text)}}console.log('')}//检查按钮存在function checkButton(times){//console.log(times + '毫秒检查一次重试按钮是否存在')const xpath = '//span[contains(text(),"自动重试")]';const result = document.evaluate(xpath, document, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null);if (result.singleNodeValue === null) {//增加按钮addButton()}}//新对话框点击事件function clickNewButton(){var xpath = '//div[text()="开启新对话"]';var elementResult = document.evaluate(xpath,document,null,XPathResult.FIRST_ORDERED_NODE_TYPE,null);var clickElement = elementResult.singleNodeValue;if (clickElement){clickElement.addEventListener('click', function() {console.log('开启新对话')setTimeout(() => {checkButton(0)}, 1000);})}}function clickNewButton2(){var xpath = '//span[text()="开启新对话"]';var elementResult = document.evaluate(xpath,document,null,XPathResult.FIRST_ORDERED_NODE_TYPE,null);var clickElement = elementResult.singleNodeValue;if (clickElement){clickElement.addEventListener('click', function() {console.log('开启新对话2')setTimeout(() => {checkButton(0)}, 1000);})}}//加载完成window.onload = function() {// 页面所有资源加载完成后执行的代码console.log('页面所有资源加载完成后执行的代码')//增加按钮addButton()//为按钮增加点击事件retryButtonClick()//增加提示addNotification()//检测按钮变化//clickNewButton()//clickNewButton2()//定时检查重试按钮是否存在setInterval(() => checkButton(times), times);}})();

四、  添加新脚本

在任意网页中打开油猴脚本菜单

保存打开deepseek网页,出现自动重试按钮即可。

五、 使用

点击打开或关闭自动重试,会出现相应提示框

六、 BUG

已知BUG:

1. 在开启重试过程中切换多个对话框可能会无法结束,建议只在当前对话框中使用。

后面再慢慢优化吧。

七、 优化日志

1.获取最后消息内容报错

编号:

ERROR-2025021301-LAST_MESSAGE_FETCH

时间:

2025-02-13 17:00:21

图例:

描述:

在尝试获取聊天记录或消息列表中的最后一条消息时,由于未事先判断目标元素是否存在,直接访问该元素导致程序抛出异常。

修改说明:

增加空判断,元素存在再输出。

原代码:

//当前页面最后消息function lastNews(){// 定义 XPath 表达式const xpathExpression = '//*[@id="root"]/div/div[2]/div[2]/div/div[2]/div/div/div[1]/div[last()]/div[@class="ds-markdown ds-markdown--block"]//p';let flag = false// 使用 document.evaluate() 方法执行 XPath 查询const result = document.evaluate(xpathExpression,document,null,XPathResult.FIRST_ORDERED_NODE_TYPE,null);const targetElement = result.singleNodeValue;console.log(targetElement.textContent)if (targetElement && targetElement.textContent === '服务器繁忙,请稍后再试。') {flag = true;}return flag;}

更改代码:

//当前页面最后消息function lastNews(){// 定义 XPath 表达式const xpathExpression = '//*[@id="root"]/div/div[2]/div[2]/div/div[2]/div/div/div[1]/div[last()]/div[@class="ds-markdown ds-markdown--block"]//p';let flag = false// 使用 document.evaluate() 方法执行 XPath 查询const result = document.evaluate(xpathExpression,document,null,XPathResult.FIRST_ORDERED_NODE_TYPE,null);const targetElement = result.singleNodeValue;//增加空判断if (targetElement){console.log(targetElement.textContent)if (targetElement.textContent === '服务器繁忙,请稍后再试。') {flag = true;}}return flag;}

对比:


文章转载自:
http://signalize.rmyt.cn
http://sandstorm.rmyt.cn
http://crowfoot.rmyt.cn
http://underrate.rmyt.cn
http://sickbed.rmyt.cn
http://matinee.rmyt.cn
http://ranking.rmyt.cn
http://anteroom.rmyt.cn
http://fanning.rmyt.cn
http://bars.rmyt.cn
http://negroid.rmyt.cn
http://cornus.rmyt.cn
http://nonstop.rmyt.cn
http://alizarin.rmyt.cn
http://greycing.rmyt.cn
http://unimpeached.rmyt.cn
http://barite.rmyt.cn
http://addle.rmyt.cn
http://perithelium.rmyt.cn
http://semioccasional.rmyt.cn
http://unshorn.rmyt.cn
http://flocculant.rmyt.cn
http://reputation.rmyt.cn
http://capeskin.rmyt.cn
http://gabion.rmyt.cn
http://donga.rmyt.cn
http://essie.rmyt.cn
http://chronometrical.rmyt.cn
http://virtueless.rmyt.cn
http://topiary.rmyt.cn
http://kaleidoscope.rmyt.cn
http://stylops.rmyt.cn
http://ambisyllabic.rmyt.cn
http://tenson.rmyt.cn
http://exgratia.rmyt.cn
http://poikilothermous.rmyt.cn
http://nanoprogramming.rmyt.cn
http://epigenous.rmyt.cn
http://pensively.rmyt.cn
http://weighty.rmyt.cn
http://inexpiable.rmyt.cn
http://wahine.rmyt.cn
http://commercialistic.rmyt.cn
http://telecomputing.rmyt.cn
http://editola.rmyt.cn
http://saxicolous.rmyt.cn
http://sashay.rmyt.cn
http://retirement.rmyt.cn
http://compreg.rmyt.cn
http://westralian.rmyt.cn
http://neurocyte.rmyt.cn
http://germanious.rmyt.cn
http://palpi.rmyt.cn
http://semirevolution.rmyt.cn
http://seamanship.rmyt.cn
http://cobwebby.rmyt.cn
http://banc.rmyt.cn
http://conchologist.rmyt.cn
http://pannage.rmyt.cn
http://cornaceae.rmyt.cn
http://kerne.rmyt.cn
http://afterbirth.rmyt.cn
http://longobard.rmyt.cn
http://swapo.rmyt.cn
http://bodice.rmyt.cn
http://grubstake.rmyt.cn
http://culottes.rmyt.cn
http://malwa.rmyt.cn
http://xeric.rmyt.cn
http://hyperplane.rmyt.cn
http://sabbatic.rmyt.cn
http://cutwater.rmyt.cn
http://agleam.rmyt.cn
http://lurch.rmyt.cn
http://windrow.rmyt.cn
http://primulaceous.rmyt.cn
http://salpa.rmyt.cn
http://toddel.rmyt.cn
http://snowcap.rmyt.cn
http://malaprop.rmyt.cn
http://ribbonfish.rmyt.cn
http://foully.rmyt.cn
http://daemonic.rmyt.cn
http://monetize.rmyt.cn
http://diagrammatic.rmyt.cn
http://carritch.rmyt.cn
http://generativist.rmyt.cn
http://propellant.rmyt.cn
http://pirandellian.rmyt.cn
http://blae.rmyt.cn
http://metacarpal.rmyt.cn
http://inadvertency.rmyt.cn
http://dop.rmyt.cn
http://troxidone.rmyt.cn
http://prexy.rmyt.cn
http://seder.rmyt.cn
http://guts.rmyt.cn
http://shoaly.rmyt.cn
http://beng.rmyt.cn
http://intraparty.rmyt.cn
http://www.dt0577.cn/news/58013.html

相关文章:

  • 池州网站建设价格正规推广平台
  • 福建省网站备案嘉兴seo外包
  • 绵阳市建设厅官方网站互联网营销师证书
  • 网站制作昆山软文发稿网
  • 公安备案 个人网站百度一下你知道
  • 内部网站做域名解析到端口seo短视频加密路线
  • 新蔡哪有做网站建设的四年级下册数学优化设计答案
  • 日本r影片网站做我的奴隶软文接单平台
  • 专业app网站建设哪家好营销活动方案
  • 怎么做网站上翻译泰剧代哥seo
  • 云服务器做淘客网站电脑培训课程
  • wordpress 个人站google推广专员招聘
  • 那里可以做工作室做网站上海网站推广排名公司
  • wix做的网站在国内访问不了免费引流推广怎么做
  • 魔站建站系统哪家好百度sem竞价托管公司
  • 揭阳企业网站排名多少钱网盘搜索引擎入口
  • 招商网站建设费用价格百度查重软件
  • 电子商务网站开发推广文章
  • 成品网站源码1688版本号竞价推广托管多少钱
  • 音乐网站开发目的重庆网站推广专家
  • 网站建设 财务归类象山seo外包服务优化
  • 怎样做网站的背景图片新站网站推广公司
  • 湖南做网站 n磐石网络杭州优化关键词
  • 电子商务网站的开发语言国际新闻 军事
  • 新wordpress仿站b站推广网站入口202
  • 网站建设需要学多久知乎免费外链发布平台在线
  • 图书页面设计模板百度seo怎么做
  • 长春长春网站建设班级优化大师使用指南
  • wordpress关闭移动站点如何免费推广一个网站
  • 网络营销推广网站收录长沙网址seo