Spaces:
Sleeping
Sleeping
File size: 1,550 Bytes
6337686 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 |
'use server'
import { NextApiRequest, NextApiResponse } from 'next'
import { fetch, debug } from '@/lib/isomorphic'
import { createHeaders, randomIP } from '@/lib/utils'
import { sleep } from '@/lib/bots/bing/utils'
const API_ENDPOINT = 'https://www.bing.com/turing/conversation/create'
// const API_ENDPOINT = 'https://edgeservices.bing.com/edgesvc/turing/conversation/create';
export default async function handler(req: NextApiRequest, res: NextApiResponse) {
try {
let count = 0
let { BING_IP, ...cookies } = req.cookies
do {
const headers = createHeaders({
...cookies,
BING_IP: BING_IP || randomIP(),
})
const response = await fetch(API_ENDPOINT, { method: 'GET', headers })
if (response.status === 200) {
res.setHeader('set-cookie', [headers.cookie, `BING_IP=${headers['x-forwarded-for']}`]
.map(cookie => `${cookie}; Max-Age=${86400 * 30}; Path=/; SameSite=None; Secure`))
debug('headers', headers)
res.writeHead(200, {
'Content-Type': 'application/json',
})
res.end(await response.text())
break;
}
BING_IP = ''
await sleep(1000)
debug('loop', count)
} while(count++ < 10)
res.end(JSON.stringify({
result: {
value: 'TryLater',
message: `Please try again after a while`
}
}))
} catch (e) {
console.log('error', e)
return res.end(JSON.stringify({
result: {
value: 'UnauthorizedRequest',
message: `${e}`
}
}))
}
}
|