Spaces:
Sleeping
Sleeping
| from fastapi import FastAPI, HTTPException, Path, Response, Request | |
| from fastapi.middleware.cors import CORSMiddleware | |
| import httpx | |
| app = FastAPI() | |
| # Add CORS middleware | |
| app.add_middleware( | |
| CORSMiddleware, | |
| allow_origins=["*"], | |
| allow_credentials=True, | |
| allow_methods=["*"], | |
| allow_headers=["*"], | |
| ) | |
| async def proxy(url: str = Path(..., title="The URL to be proxied", description="The entire URL to be proxied")): | |
| headers = { | |
| 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36' | |
| } | |
| # Ensure the URL has a valid format | |
| if not url.startswith(('http://', 'https://')): | |
| raise HTTPException(status_code=400, detail="Invalid URL format") | |
| async with httpx.AsyncClient() as client: | |
| try: | |
| response = await client.get(url, headers=headers) | |
| return Response(content=response.content, media_type=response.headers.get('Content-Type')) | |
| except httpx.RequestError as e: | |
| raise HTTPException(status_code=500, detail=f"Error fetching URL: {e}") | |
| if __name__ == "__main__": | |
| import uvicorn | |
| uvicorn.run(app, host="0.0.0.0", port=8000) | |