Spaces:
Paused
Paused
Update main.py
Browse files
main.py
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
|
|
| 1 |
from fastapi import FastAPI, Request
|
| 2 |
from fastapi.responses import HTMLResponse, StreamingResponse
|
| 3 |
from fastapi.middleware.cors import CORSMiddleware
|
|
@@ -5,7 +6,6 @@ import httpx
|
|
| 5 |
|
| 6 |
app = FastAPI()
|
| 7 |
|
| 8 |
-
# CORS configuration
|
| 9 |
app.add_middleware(
|
| 10 |
CORSMiddleware,
|
| 11 |
allow_origins=["*"],
|
|
@@ -20,20 +20,43 @@ TARGET_URL = "https://agentrouter.org/v1/chat/completions"
|
|
| 20 |
async def proxy_chat(request: Request):
|
| 21 |
body = await request.body()
|
| 22 |
|
|
|
|
|
|
|
|
|
|
| 23 |
headers = {
|
| 24 |
"Authorization": request.headers.get("Authorization", ""),
|
| 25 |
"Content-Type": "application/json",
|
| 26 |
"Originator": "codex_cli_rs",
|
| 27 |
"User-Agent": "codex_cli_rs/0.101.0 (Mac OS 26.0.1; arm64) Apple_Terminal/464",
|
| 28 |
-
"Version": "0.101.0"
|
|
|
|
|
|
|
|
|
|
| 29 |
}
|
| 30 |
|
| 31 |
client = httpx.AsyncClient()
|
| 32 |
|
| 33 |
async def stream_generator():
|
| 34 |
-
|
| 35 |
-
async
|
| 36 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 37 |
|
| 38 |
return StreamingResponse(stream_generator(), media_type="text/event-stream")
|
| 39 |
|
|
|
|
| 1 |
+
import random
|
| 2 |
from fastapi import FastAPI, Request
|
| 3 |
from fastapi.responses import HTMLResponse, StreamingResponse
|
| 4 |
from fastapi.middleware.cors import CORSMiddleware
|
|
|
|
| 6 |
|
| 7 |
app = FastAPI()
|
| 8 |
|
|
|
|
| 9 |
app.add_middleware(
|
| 10 |
CORSMiddleware,
|
| 11 |
allow_origins=["*"],
|
|
|
|
| 20 |
async def proxy_chat(request: Request):
|
| 21 |
body = await request.body()
|
| 22 |
|
| 23 |
+
# 1. IP Spoofing: Cloudflare ko dhoka dene ke liye fake mobile network IP generate kar rahe hain
|
| 24 |
+
fake_ip = f"{random.randint(11, 190)}.{random.randint(1, 255)}.{random.randint(1, 255)}.{random.randint(1, 255)}"
|
| 25 |
+
|
| 26 |
headers = {
|
| 27 |
"Authorization": request.headers.get("Authorization", ""),
|
| 28 |
"Content-Type": "application/json",
|
| 29 |
"Originator": "codex_cli_rs",
|
| 30 |
"User-Agent": "codex_cli_rs/0.101.0 (Mac OS 26.0.1; arm64) Apple_Terminal/464",
|
| 31 |
+
"Version": "0.101.0",
|
| 32 |
+
"X-Forwarded-For": fake_ip,
|
| 33 |
+
"X-Real-IP": fake_ip,
|
| 34 |
+
"CF-Connecting-IP": fake_ip
|
| 35 |
}
|
| 36 |
|
| 37 |
client = httpx.AsyncClient()
|
| 38 |
|
| 39 |
async def stream_generator():
|
| 40 |
+
try:
|
| 41 |
+
async with client.stream("POST", TARGET_URL, headers=headers, content=body, timeout=180.0) as r:
|
| 42 |
+
# 2. Agar AgentRouter HF IP ko block karega, toh yeh block ka text Chat Box mein dikhayega
|
| 43 |
+
if r.status_code != 200:
|
| 44 |
+
error_content = await r.aread()
|
| 45 |
+
safe_error = error_content.decode('utf-8', 'ignore').replace('"', "'").replace('\n', ' ')
|
| 46 |
+
|
| 47 |
+
# Fake AI response banakar bhej rahe hain taake browser crash na ho aur error dikhe
|
| 48 |
+
error_msg = f"🚨 **AgentRouter Error ({r.status_code}):** {safe_error[:300]}... (Note: AgentRouter ne Hugging Face IP ko rok diya hai)"
|
| 49 |
+
yield f'data: {{"choices":[{{"delta":{{"content":"{error_msg}"}}}}]}}\n\n'.encode('utf-8')
|
| 50 |
+
yield b'data: [DONE]\n\n'
|
| 51 |
+
return
|
| 52 |
+
|
| 53 |
+
# 3. Agar 200 OK hai, toh normal AI response bhejo
|
| 54 |
+
async for chunk in r.aiter_raw():
|
| 55 |
+
yield chunk
|
| 56 |
+
except Exception as e:
|
| 57 |
+
# Agar connection drop ho jaye
|
| 58 |
+
yield f'data: {{"choices":[{{"delta":{{"content":"🚨 **Proxy System Error:** {str(e)}"}}}}]}}\n\n'.encode('utf-8')
|
| 59 |
+
yield b'data: [DONE]\n\n'
|
| 60 |
|
| 61 |
return StreamingResponse(stream_generator(), media_type="text/event-stream")
|
| 62 |
|