DeepSeek,这一令人瞩目的工具,近期备受热议。然而,你是否曾遭遇过这样的困境:满怀期待地想要尝试,却因某些问题而受阻?或许,你对此已司空见惯,但别担心,本文将为你提供解决方案。![]()
你永远不知道下一次尝试是成功,还是需要继续等待。近期DeepSeek访问压力巨大,手动重试变得效率低下。在网页端,每次点击“重试”按钮后,都需要等待长达30秒才能再次尝试。现在,有一个超实用的脚本可以帮助你实现DeepSeek的自动重试,让你解放双手,不再需要等待。![]()
第一步、安装油猴(Tampermonkey)插件。
你可以通过访问以下链接来安装油猴插件:
https://www.tampermonkey.net/index.php?src=a&locale=zh_CN
安装完成后,你就可以开始使用它来帮助你实现DeepSeek的自动重试功能,从而节省时间和精力。
在这堆浏览器选项中,选择你正在使用的浏览器。对于Chrome和Edge浏览器,你可以直接从商店进行安装;而Firefox则可以从其附加组件市场进行安装。
完成油猴插件的安装后,点击浏览器中的油猴插件图标,通常是一个带有俩眼睛的logo。接着,打开“自动重试”脚本的安装地址:
https://greasyfork.org/zh-CN/scripts/526067-deepseek%E8%87%AA%E5%8A%A8%E9%87%8D%E8%AF%95
最后,点击安装按钮即可。![]()
安装界面随即弹出,只需点击黄色边框内的【安装】按钮即可完成安装。![]()
第三步、访问DeepSeek官网并启动脚本。
DeepSeek的官方网址为:https://chat.deepseek.com/。在完成安装并确认脚本已启用后,您可以访问该官网。请确保页面上显示的“自动重试”功能已开启,以确保脚本能够正常运行。![]()
第四步、无需额外操作,直接与DeepSeek进行交互。
在启动DeepSeek并确保自动重试功能开启后,您无需进行任何脚本安装的操作。只需在对话框中向DeepSeek发送消息,即可享受其提供的服务。![]()
若DeepSeek显示“服务器繁忙”的提示,别担心,我们的脚本会自动为你点击刷新按钮,直至成功获取结果。一切都已搞定,是不是很方便?
此外,我们提供的脚本源码供您学习研究,让您在享受服务的同时,也能深入了解其背后的技术细节。
此外,我们提供的脚本还包含一系列参数配置,如最大重试次数、最小延迟时间、最大延迟时间以及防抖延迟时间等,供您根据实际需求进行灵活调整。同时,脚本中的状态管理部分也进行了详细定义,确保在服务器繁忙时能够自动进行刷新操作,直至成功获取结果。
,isRetrying
false
,isPaused
false
,activeNotification
null
,debounceTimer
null
,lastRetryTime
null
,observer
:null
// 创建提示元素
function
createNotification
(message, temporary = true) {
// 如果当前已有活动通知且不是临时通知,则直接返回
if (state.activeNotification && !temporary) {
return state.activeNotification;
}
// 创建通知元素const notification = document.createElement('div');// 设置通知元素的样式notification.style.cssText = ` position: fixed; top: 20px; right: 20px; background: rgba(0, 0, 0, 0.8); color: white; padding: 10px 20px; border-radius: 5px; z-index: 9999; transition: opacity 0.3s;`;// 如果不是临时通知,则添加关闭按钮if (!temporary) { const closeButton = document.createElement('span'); closeButton.innerHTML = '×'; closeButton.style.cssText = ` margin-left: 10px; cursor: pointer; font-weight: bold; `; closeButton.onclick = function() { notification.remove(); state.activeNotification = null; state.retryCount = 0; // 这里似乎缺少了某些逻辑,根据上下文可能需要进一步补充或修正。state.isPaused = false
notification.appendChild(closeButton)
notification.textContent = message
document.body.appendChild(notification)
if (!temporary) {
state.activeNotification = notification
}
return notification
// 查找重试按钮
function findRetryButton(container) {
if (!container) return null
const btns = Array.from(container.querySelectorAll('.ds-icon-button'))return btns.find(btn => { const svg = btn.querySelector('svg') return svg && svg.querySelector('')})// 创建 MutationObserver 来监控页面变化
function setupObserver() {
if (state.observer) state.observer.disconnect()
state.observer = new MutationObserver(mutations => { for (const mutation of mutations) { if (mutation.type === 'childList' || mutation.type === 'characterData') { autoRetry() // 这里似乎缺少了某些逻辑,根据上下文可能需要进一步补充或修正。// 监控整个聊天区域
const chatArea = document.querySelector('.f72b0bab')
if (chatArea) {
state.observer.observe(chatArea, {
childList: true,
subtree: true,
characterData: true
})
}
// 检查服务器繁忙状态
function checkBusyStatus() {
// 此处应添加具体的检查逻辑
}
// 检查频率限制
const rateLimitElements = document.querySelectorAll('.ds-toast__content')
for (const el of rateLimitElements) {
if (el.textContent && el.textContent.includes(CONFIG.RATE_LIMIT_TEXT)) {
state.isPaused = true
createNotification('检测到频率过快,请稍后再试')
return null
}
}
// 查找所有 f9bf7997 类的元素
const elements = document.querySelectorAll('.f9bf7997')
for (const el of elements) {
// 在每个元素中查找服务器繁忙消息
const busyMessage = el.querySelector('.ds-markdown.ds-markdown--block p')
// 此处应添加对 busyMessage 的进一步处理逻辑
busyMessage && busyMessage.textContent.trim() === CONFIG.BUSY_TEXT
如果找到服务器繁忙消息,返回包含该消息的元素
return el
如果没有找到服务器繁忙消息,返回 null
自动重试主函数
function autoRetry() {
if (state.isPaused) return
const busyContainer = checkBusyStatus()if (busyContainer) { const now = Date.now() if (!state.isRetrying && now - state.lastRetryTime >= CONFIG.DEBOUNCE_DELAY) { state.retryCount++ state.isRetrying = true state.lastRetryTime = now } const retryButton = findRetryButton(busyContainer) if (retryButton) { if (state.retryCount >= CONFIG.MAX_RETRIES) { createNotification('已达到最大重试次数,DeepSeek可能当前算力不足') return false } else { const notification = createNotification(`检测到服务器繁忙,即将自动重试。已重试${state.retryCount}次,最多可重试${CONFIG.MAX_RETRIES}次。`) } }}随机延迟函数(此处应添加具体的延迟逻辑)
在自动重试主函数中,我们首先检查是否存在服务器繁忙消息。如果存在,我们会进一步判断是否满足自动重试的条件。在满足条件的情况下,我们会增加重试计数,并设置相关的状态标志。随后,我们会查找并获取重试按钮元素。如果找到了重试按钮,我们会根据当前的重试次数和最大重试次数进行相应的处理,包括创建通知提醒用户当前的重试状态。此外,在自动重试的过程中,我们还需要实现一个随机延迟函数,以确保在每次重试之间有一定的时间间隔,避免过于频繁的重试对服务器造成过大负担。这个随机延迟函数的具体实现逻辑将在后续进行添加。
在自动重试的过程中,我们首先需要清除之前可能存在的防抖动定时器。之后,我们设置一个新的定时器,用于在达到最小延迟时间后执行一系列操作。这些操作包括记录日志、自动点击重试按钮,以及隐藏通知等。具体来说,当找到重试按钮时,我们会使用dispatchEvent方法模拟点击事件,同时确保该事件具有适当的属性,如bubbles和cancelable。另外,为了确保通知在适当的时候被隐藏,我们还会使用setTimeout来延迟调用notification.remove方法。
300state.isRetrying = false
delay
else
console.log('在服务器繁忙消息所在元素中未找到重试按钮')
state.isRetrying = false
// 初始化
function init() {
// 设置 MutationObserver
setupObserver()
// 页面加载完成后检查一次
autoRetry()
// 定期检查作为备份机制
setInterval(autoRetry, CONFIG.CHECK_INTERVAL)
// 监听页面变化重新设置 observer
const bodyObserver = new MutationObserver((mutations) => {
if (!document.querySelector('.f72b0bab')) {
setupObserver()
}
})
bodyObserver.observe(document.body, { childList: true, subtree: true })
}
// 启动脚本
init()
特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.