Um das Problem zu lösen, bestimmte Regionen können nicht direkt api.openai.com und so weiter großes Modell API, oder weil der Agent leckt Informationen, die zu Konto-Sperrung, vor der Verwendung von CF-Proxy, kann Ihre IP-Leck, jetzt gibt es eine sicherere Lösung.
1. gehen Sie zunächst auf die offizielle Website von deno, um ein Konto zu registrieren
2. ein Projekt erstellen
Gehen Sie auf https://dash.deno.com/account/projects und klicken Sie auf "Neuer Spielplatz".
3. fügen Sie den Code ein und speichern Sie ihn
import { serve } from "https://deno.land/std/http/server.ts"; const apiMapping = { '/discord': 'https://discord.com/api', '/telegram': 'https://api.telegram.org', '/openai': 'https://api.openai.com', '/claude': 'https://api.anthropic.com', '/gemini': 'https://generativelanguage.googleapis.com', '/meta': 'https://www.meta.ai/api', '/groq': 'https://api.groq.com/openai', '/xai': 'https://api.x.ai', '/cohere': 'https://api.cohere.ai', '/huggingface': 'https://api-inference.huggingface.co', '/together': 'https://api.together.xyz', '/novita': 'https://api.novita.ai', '/portkey': 'https://api.portkey.ai', '/fireworks': 'https://api.fireworks.ai', '/openrouter': 'https://openrouter.ai/api' }; serve(async (request) => { const url = new URL(request.url); const pathname = url.pathname; if (pathname === '/' || pathname === '/index.html') { return new Response('Service is running!', { status: 200, headers: { 'Content-Type': 'text/html' } }); } if (pathname === '/robots.txt') { return new Response('User-agent: *\nDisallow: /', { status: 200, headers: { 'Content-Type': 'text/plain' } }); } const [prefix, rest] = extractPrefixAndRest(pathname, Object.keys(apiMapping)); if (!prefix) { return new Response('Not Found', { status: 404 }); } const targetUrl = `${apiMapping[prefix]}${rest}`; try { const headers = new Headers(); const allowedHeaders = ['accept', 'content-type', 'authorization']; for (const [key, value] of request.headers.entries()) { if (allowedHeaders.includes(key.toLowerCase())) { headers.set(key, value); } } const response = await fetch(targetUrl, { method: request.method, headers: headers, body: request.body }); const responseHeaders = new Headers(response.headers); responseHeaders.set('X-Content-Type-Options', 'nosniff'); responseHeaders.set('X-Frame-Options', 'DENY'); responseHeaders.set('Referrer-Policy', 'no-referrer'); return new Response(response.body, { status: response.status, headers: responseHeaders }); } catch (error) { console.error('Failed to fetch:', error); return new Response('Internal Server Error', { status: 500 }); } }); function extractPrefixAndRest(pathname, prefixes) { for (const prefix of prefixes) { if (pathname.startsWith(prefix)) { return [prefix, pathname.slice(prefix.length)]; } } return [null, null]; }
4. die Verwendung
Der Standarddomänenname lautet https://hungry-lamb-22.deno.dev/.
Interviewshttps://hungry-lamb-22.deno.dev/xai
ist dasselbe wie der Besuch https://api.x.ai/
Entsprechend dem Format im Code können Sie eine neue große Modellanforderungsadresse hinzufügen
5. benutzerdefinierter Domänenname
Gehen Sie zu Einstellungen und binden Sie Ihren eigenen Domänennamen
Gemeinsame Proxy-Adresse