add udrop

This commit is contained in:
James Feng Cao 2023-05-26 15:48:51 +08:00
parent f536c6eb78
commit d43d3e3dfc
9 changed files with 80 additions and 37 deletions

View file

@ -168,7 +168,7 @@ class Chat {
try {
//let restsrstUrl = 'wss://sydney.bing.com/sydney/ChatHub';
//if (this.chatWithMagic==true)
let restsrstUrl = URLTrue(this.magicUrl.replace('http', 'ws'), "sydney/ChatHub");
let restsrstUrl = this.magicUrl.replace('http', 'ws')+"sydney/ChatHub";
let chatWebSocket = new WebSocket(restsrstUrl);
chatWebSocket.onopen = () => {

View file

@ -16,7 +16,9 @@ async function generateImages(text,requestId,countF){
theUrls.append('q', text);
theUrls.append('iframeid', requestId);
let theUrl = magicUrl+`images/create?${theUrls.toString()}`;
let response = await fetch(theUrl);
let response = await fetch(theUrl,
{"sec-fetch-site": "same-origin",
"referer": "https://www.bing.com/search?q=bingAI"});
let html = (await response.text());
//let cookieID = response.headers.get('cookieID');
@ -40,6 +42,7 @@ async function generateImages(text,requestId,countF){
let ur = urr[1];
ur = ur.replaceAll('&','&');
let imgPageHtmlUrl = magicUrl + `${ur}`;
let options = {"sec-fetch-site":"same-origin", "referer":"https://www.bing.com/images/create?partner=sydney&showselective=1&sude=1&kseed=7000"};
for(let count = 1;count<=20;count++){
if((!!countF)&&(typeof countF =='function')){
countF(count);
@ -47,7 +50,7 @@ async function generateImages(text,requestId,countF){
await sleep(3000);
let imgPageHtml;
try{
imgPageHtml = (await (await fetch(imgPageHtmlUrl)).text());
imgPageHtml = (await (await fetch(imgPageHtmlUrl,options)).text());
}catch(e){
console.error(e);
}

View file

@ -3,25 +3,65 @@ export default {
let url = req.url;
let iSlash = url.indexOf('/',11);
let nUrl = url.substring(iSlash+1);
return goUrl(req, nUrl);
if(nUrl.startsWith("ws"))
return await websocketHandler(req, nUrl);
return await goUrl(req, nUrl);
}
}
function goUrl(request, url) {
async function goUrl(request, url) {
let fp = {
method: request.method,
headers: {}
};
fp.headers = new Headers(request.headers);
for(var i = 2; i < arguments.length-1; i=i+2){
fp.headers[arguments[i]] = arguments[i+1];
}
let reqHeaders = new Headers(request.headers);
let dropHeaders = ["cookie","user-agent","accept","accept-language"];
let he = reqHeaders.entries();
for (let h of he) {
let key = h[0],
value = h[1];
if (dropHeaders.includes(key)) {
fp.headers[key] = value;
}
}
return fetch(url, fp);
return await fetch(url, fp);
}
async function handleSession(req, serverWebSocket, url) {
let isAccept = false;
//let ws = new WebSocket(url);
let resp = await goUrl(req, url);
let ws = resp.webSocket;
if (!ws) {
throw new Error("server didn't accept WebSocket");
}
ws.accept();
serverWebSocket.addEventListener("message", event => {
ws.send(event.data);
});
ws.addEventListener("message", event => {
serverWebSocket.send(event.data)
});
ws.addEventListener("open", event => {
isAccept = true;
serverWebSocket.accept();
})
ws.addEventListener("close", event => {
serverWebSocket.close(event.code, event.reason);
})
ws.addEventListener("error", event => {
if(!isAccept){
serverWebSocket.accept();
}
serverWebSocket.close();
});
serverWebSocket.addEventListener("error", event => {
serverWebSocket.close();
})
serverWebSocket.addEventListener("close",event => {
ws.close(event.code, event.reason);
});
}
async function websocketHandler(req, url){
const [client, server] = Object.values(new WebSocketPair())
await handleSession(req, server, url);
return new Response(null, {
status: 101,
webSocket: client
});
}