mirror of
https://github.com/ikechan8370/chatgpt-plugin.git
synced 2025-12-16 21:37:11 +00:00
feat: 必应验证码另一个解决方案
This commit is contained in:
parent
51f786bd44
commit
12a94d8086
4 changed files with 68 additions and 45 deletions
44
apps/chat.js
44
apps/chat.js
|
|
@ -66,7 +66,7 @@ import { SendDiceTool } from '../utils/tools/SendDiceTool.js'
|
||||||
import { SendAvatarTool } from '../utils/tools/SendAvatarTool.js'
|
import { SendAvatarTool } from '../utils/tools/SendAvatarTool.js'
|
||||||
import { SendMessageToSpecificGroupOrUserTool } from '../utils/tools/SendMessageToSpecificGroupOrUserTool.js'
|
import { SendMessageToSpecificGroupOrUserTool } from '../utils/tools/SendMessageToSpecificGroupOrUserTool.js'
|
||||||
import { SetTitleTool } from '../utils/tools/SetTitleTool.js'
|
import { SetTitleTool } from '../utils/tools/SetTitleTool.js'
|
||||||
import { createCaptcha, solveCaptcha } from '../utils/bingCaptcha.js'
|
import { createCaptcha, solveCaptcha, solveCaptchaOneShot } from '../utils/bingCaptcha.js'
|
||||||
|
|
||||||
try {
|
try {
|
||||||
await import('emoji-strip')
|
await import('emoji-strip')
|
||||||
|
|
@ -233,7 +233,7 @@ export class chatgpt extends plugin {
|
||||||
reg: '^#chatgpt删除对话',
|
reg: '^#chatgpt删除对话',
|
||||||
fnc: 'deleteConversation',
|
fnc: 'deleteConversation',
|
||||||
permission: 'master'
|
permission: 'master'
|
||||||
},
|
}
|
||||||
// {
|
// {
|
||||||
// reg: '^#chatgpt必应验证码',
|
// reg: '^#chatgpt必应验证码',
|
||||||
// fnc: 'bingCaptcha'
|
// fnc: 'bingCaptcha'
|
||||||
|
|
@ -1678,30 +1678,22 @@ export class chatgpt extends plugin {
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
logger.error(error)
|
logger.error(error)
|
||||||
const message = error?.message || error?.data?.message || error || '出错了'
|
const message = error?.message || error?.data?.message || error || '出错了'
|
||||||
// if (message && typeof message === 'string' && message.indexOf('CaptchaChallenge') > -1) {
|
if (message && typeof message === 'string' && message.indexOf('CaptchaChallenge') > -1) {
|
||||||
// if (bingToken) {
|
if (bingToken) {
|
||||||
// // let { id, regionId, image } = await createCaptcha(e, bingToken)
|
await e.reply('出现必应验证码,尝试解决中')
|
||||||
// // e.bingCaptchaId = id
|
try {
|
||||||
// // e.token = bingToken
|
let captchaResolveResult = await solveCaptchaOneShot(bingToken)
|
||||||
// // e.regionId = regionId
|
if (captchaResolveResult?.success) {
|
||||||
// // const {
|
await e.reply('验证码已解决')
|
||||||
// // conversationSignature,
|
} else {
|
||||||
// // conversationId,
|
await e.reply('验证码解决失败')
|
||||||
// // clientId
|
}
|
||||||
// // } = error?.conversation
|
} catch (err) {
|
||||||
// // e.bingConversation = {
|
logger.error(err)
|
||||||
// // conversationSignature,
|
await e.reply('验证码解决失败')
|
||||||
// // conversationId,
|
}
|
||||||
// // clientId
|
}
|
||||||
// // }
|
} else
|
||||||
// return {
|
|
||||||
// text: '请在60秒内输入下面图片以通过必应人机验证',
|
|
||||||
// image,
|
|
||||||
// error: true,
|
|
||||||
// token: bingToken
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
// } else
|
|
||||||
if (message && typeof message === 'string' && message.indexOf('限流') > -1) {
|
if (message && typeof message === 'string' && message.indexOf('限流') > -1) {
|
||||||
throttledTokens.push(bingToken)
|
throttledTokens.push(bingToken)
|
||||||
let bingTokens = JSON.parse(await redis.get('CHATGPT:BING_TOKENS'))
|
let bingTokens = JSON.parse(await redis.get('CHATGPT:BING_TOKENS'))
|
||||||
|
|
|
||||||
|
|
@ -465,6 +465,12 @@ export function supportGuoba () {
|
||||||
bottomHelpMessage: '【一般情况无需也不建议开启】默认情况下仅创建对话走反代,对话时仍然直连微软。开启本选项将使对话过程也走反,需反代支持',
|
bottomHelpMessage: '【一般情况无需也不建议开启】默认情况下仅创建对话走反代,对话时仍然直连微软。开启本选项将使对话过程也走反,需反代支持',
|
||||||
component: 'Switch'
|
component: 'Switch'
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
field: 'bingCaptchaOneShotUrl',
|
||||||
|
label: '必应验证码pass服务',
|
||||||
|
bottomHelpMessage: '必应出验证码会自动用该服务绕过',
|
||||||
|
component: 'Input'
|
||||||
|
},
|
||||||
{
|
{
|
||||||
field: 'sydneyMood',
|
field: 'sydneyMood',
|
||||||
label: '情感显示',
|
label: '情感显示',
|
||||||
|
|
|
||||||
|
|
@ -1,9 +1,9 @@
|
||||||
import fetch from 'node-fetch'
|
import fetch from 'node-fetch'
|
||||||
|
|
||||||
// this file is deprecated
|
// this file is deprecated
|
||||||
|
import {Config} from './config.js'
|
||||||
import { Config } from './config.js'
|
|
||||||
import HttpsProxyAgent from 'https-proxy-agent'
|
import HttpsProxyAgent from 'https-proxy-agent'
|
||||||
|
|
||||||
const newFetch = (url, options = {}) => {
|
const newFetch = (url, options = {}) => {
|
||||||
const defaultOptions = Config.proxy
|
const defaultOptions = Config.proxy
|
||||||
? {
|
? {
|
||||||
|
|
@ -60,3 +60,27 @@ export async function solveCaptcha (id, regionId, text, token) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export async function solveCaptchaOneShot (token) {
|
||||||
|
if (!token) {
|
||||||
|
throw new Error('no token')
|
||||||
|
}
|
||||||
|
let solveUrl = Config.bingCaptchaOneShotUrl
|
||||||
|
if (!solveUrl) {
|
||||||
|
throw new Error('no captcha source')
|
||||||
|
}
|
||||||
|
let result = await fetch(solveUrl, {
|
||||||
|
method: 'POST',
|
||||||
|
body: {
|
||||||
|
_U: token
|
||||||
|
}
|
||||||
|
})
|
||||||
|
if (result.status === 200) {
|
||||||
|
return await result.json()
|
||||||
|
} else {
|
||||||
|
return {
|
||||||
|
success: false,
|
||||||
|
error: result.statusText
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
|
||||||
|
|
@ -131,6 +131,7 @@ const defaultConfig = {
|
||||||
serpSource: 'ikechan8370',
|
serpSource: 'ikechan8370',
|
||||||
extraUrl: 'https://cpe.ikechan8370.com',
|
extraUrl: 'https://cpe.ikechan8370.com',
|
||||||
smartMode: false,
|
smartMode: false,
|
||||||
|
bingCaptchaOneShotUrl: 'http://bingcaptcha.ikechan8370.com/bing',
|
||||||
version: 'v2.7.3'
|
version: 'v2.7.3'
|
||||||
}
|
}
|
||||||
const _path = process.cwd()
|
const _path = process.cwd()
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue