### Install and Run Solvearr with Uvicorn Source: https://context7.com/nabil-ak/solvearr/llms.txt This guide covers installing Solvearr using `uv` and running it with `uvicorn`. Ensure Python version 3.13 or higher is installed. ```bash # Install uv curl -LsSf https://astral.sh/uv/install.sh | sh # Clone and install git clone https://github.com/nabilak/solvearr.git cd solvearr uv sync --frozen --no-dev # Start the server uvicorn main:app --host 0.0.0.0 --port 8191 ``` -------------------------------- ### Install uv Package Manager Source: https://github.com/nabil-ak/solvearr/blob/main/README.md Installs uv, a fast Python package installer, using a script. This is a prerequisite for manual installation. ```bash curl -LsSf https://astral.sh/uv/install.sh | sh ``` -------------------------------- ### Install Solvearr Dependencies Source: https://github.com/nabil-ak/solvearr/blob/main/README.md Installs project dependencies using uv, ensuring all required packages are present for running Solvearr manually. ```bash uv sync --frozen --no-dev ``` -------------------------------- ### Solvearr API GET Request Example Source: https://github.com/nabil-ak/solvearr/blob/main/README.md A JSON object representing a GET request to the Solvearr API, specifying the command, target URL, and an optional timeout. ```json { "cmd": "request.get", "url": "https://www.1377x.to/", "maxTimeout": 60000 } ``` -------------------------------- ### Check Python Version Source: https://github.com/nabil-ak/solvearr/blob/main/README.md Verifies if Python is installed on the system. Required for manual installation. ```bash python --version ``` -------------------------------- ### Make a GET Request to Solvearr API Source: https://github.com/nabil-ak/solvearr/blob/main/README.md Demonstrates how to send a POST request to the Solvearr API to perform a GET operation on a Cloudflare-protected URL. ```bash curl -X POST "http://localhost:8000/v1" \ -H "Content-Type: application/json" \ -d '{ "cmd": "request.get", "url": "https://www.1377x.to/", "maxTimeout": 60000 }' ``` -------------------------------- ### Clone Solvearr Repository Source: https://github.com/nabil-ak/solvearr/blob/main/README.md Downloads the Solvearr project files from GitHub. This is part of the manual installation process. ```bash git clone https://github.com/nabilak/solvearr.git cd solvearr ``` -------------------------------- ### Run Solvearr Manually Source: https://github.com/nabil-ak/solvearr/blob/main/README.md Starts the Solvearr application using uvicorn, making it accessible on host 0.0.0.0 and port 8191. ```bash uvicorn main:app --host 0.0.0.0 --port 8191 ``` -------------------------------- ### Solvearr Request with Cookies and Proxy Source: https://context7.com/nabil-ak/solvearr/llms.txt This example demonstrates sending a request with pre-existing cookies and routing traffic through a custom proxy. Use `returnOnlyCookies: true` to suppress the response body and retrieve only the updated cookie jar. ```bash curl -X POST "http://localhost:8191/v1" \ -H "Content-Type: application/json" \ -d '{ "cmd": "request.get", "url": "https://protected-site.com/dashboard", "maxTimeout": 60000, "cookies": [ { "name": "session_id", "value": "abc123xyz" }, { "name": "user_pref", "value": "dark_mode" } ], "proxy": { "url": "http://127.0.0.1:8888" }, "returnOnlyCookies": true }' ``` -------------------------------- ### Perform a GET Request with Solvearr Source: https://context7.com/nabil-ak/solvearr/llms.txt Sends a TLS-fingerprint-spoofed GET request to a target URL. It returns the full HTTP response, including status code, headers, body, cookies, and timing metadata. ```bash curl -X POST "http://localhost:8191/v1" \ -H "Content-Type: application/json" \ -d '{ "cmd": "request.get", "url": "https://www.1377x.to/", "maxTimeout": 60000 }' ``` -------------------------------- ### Run Solvearr with Docker Source: https://github.com/nabil-ak/solvearr/blob/main/README.md Starts Solvearr in detached mode, mapping port 8191 and ensuring it restarts automatically. ```bash docker run -d \ --name=solvearr \ -p 8191:8191 \ --restart unless-stopped \ nabilak/solvearr ``` -------------------------------- ### Solvearr API POST Request Example Source: https://github.com/nabil-ak/solvearr/blob/main/README.md A JSON object for a POST request to the Solvearr API, including the command, URL, POST data, and timeout. ```json { "cmd": "request.post", "url": "https://somesite.com/login", "postData": "username=foo&password=bar", "maxTimeout": 60000 } ``` -------------------------------- ### Example API Response Body Source: https://github.com/nabil-ak/solvearr/blob/main/README.md This JSON structure represents a successful response from the Solvearr API, detailing the solution found, status, and timing information. ```json { "solution": { "url": "https://www.1377x.to/", "status": 200, "headers": { ... }, "response": "...", "cookies": [ ... ], "userAgent": "..." }, "status": "ok", "message": "", "startTimestamp": 1594872947467, "endTimestamp": 1594872949617, "version": "1.0.0" } ``` -------------------------------- ### Proxy Request Source: https://context7.com/nabil-ak/solvearr/llms.txt Sends a TLS-fingerprint-spoofed request (GET or POST) to a target URL, bypassing anti-bot protections. It returns the full HTTP response details. ```APIDOC ## POST /v1 ### Description Sends a TLS-fingerprint-spoofed request (GET or POST) to a target URL, bypassing anti-bot protections. It returns the full HTTP response details, including status code, headers, body, cookies, and timing metadata. ### Method POST ### Endpoint /v1 ### Parameters #### Request Body - **cmd** (string) - Required - The command to execute. Supported values: `request.get`, `request.post`. - **url** (string) - Required - The target URL to send the request to. - **maxTimeout** (integer) - Optional - The maximum time in milliseconds to wait for the request. - **cookies** (array) - Optional - An array of cookie objects to send with the request. Each object should have `name` and `value` properties. - **proxy** (object) - Optional - An object specifying a proxy to use for the request. Must contain a `url` property (e.g., `{"url": "http://127.0.0.1:8888"}`). - **postData** (string) - Optional - Required for `request.post` command. The data to send in the request body, formatted as a URL-encoded string (e.g., `username=myuser&password=mypassword`). - **returnOnlyCookies** (boolean) - Optional - If true, suppresses the response body and returns only the cookies. ### Request Example (GET) ```json { "cmd": "request.get", "url": "https://www.1377x.to/", "maxTimeout": 60000 } ``` ### Request Example (POST) ```json { "cmd": "request.post", "url": "https://somesite.com/login", "postData": "username=myuser&password=mypassword", "maxTimeout": 30000 } ``` ### Request Example (with Cookies and Proxy) ```json { "cmd": "request.get", "url": "https://protected-site.com/dashboard", "maxTimeout": 60000, "cookies": [ { "name": "session_id", "value": "abc123xyz" }, { "name": "user_pref", "value": "dark_mode" } ], "proxy": { "url": "http://127.0.0.1:8888" }, "returnOnlyCookies": true } ``` ### Response #### Success Response (200) - **solution** (object) - Contains the details of the resolved request. - **url** (string) - The final URL after redirects. - **status** (integer) - The HTTP status code of the response. - **headers** (object) - An object containing the response headers. - **response** (string or null) - The response body. Null if `returnOnlyCookies` is true. - **cookies** (array) - An array of cookie objects. - **userAgent** (string) - The user-agent string used for the request. - **status** (string) - The overall status of the operation (e.g., "ok"). - **message** (string) - Any additional messages. - **startTimestamp** (integer) - The timestamp when the request started. - **endTimestamp** (integer) - The timestamp when the request ended. - **version** (string) - The version of Solvearr used. ### Response Example (Standard) ```json { "solution": { "url": "https://www.1377x.to/", "status": 200, "headers": { "content-type": "text/html; charset=UTF-8", ... }, "response": "...", "cookies": [ { "name": "cf_clearance", "value": "abc123...", "domain": ".1377x.to", "path": "/", "expires": 1720000000, "size": 43, "httpOnly": false, "secure": true, "session": false, "sameSite": "None" } ], "userAgent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) ..." }, "status": "ok", "message": "", "startTimestamp": 1594872947467, "endTimestamp": 1594872949617, "version": "1.0.0" } ``` ### Response Example (returnOnlyCookies: true) ```json { "solution": { "url": "https://protected-site.com/dashboard", "status": 200, "headers": { ... }, "response": null, "cookies": [ { "name": "session_id", "value": "abc123xyz", "domain": ".protected-site.com", ... }, { "name": "cf_clearance", "value": "newtoken...", "domain": ".protected-site.com", ... } ], "userAgent": "Mozilla/5.0 ..." }, "status": "ok", "message": "", "startTimestamp": 1594872950000, "endTimestamp": 1594872952000, "version": "1.0.0" } ``` ``` -------------------------------- ### Solvearr API v1 Source: https://github.com/nabil-ak/solvearr/blob/main/README.md The Solvearr API allows you to send requests to bypass Cloudflare protection. It supports both GET and POST methods for accessing URLs. The API is compatible with the FlareSolverr specification. ```APIDOC ## POST /v1 ### Description Sends a request to open a Cloudflare-protected site or perform a POST request. ### Method POST ### Endpoint /v1 ### Parameters #### Request Body - **cmd** (string) - Required - "request.get" or "request.post" - **url** (string) - Required - Target URL to open - **maxTimeout** (integer) - Optional - Timeout in milliseconds (default: 60000) - **cookies** (array) - Optional - List of cookies (objects with name/value) - **returnOnlyCookies** (boolean) - Optional - If true, only cookies are returned - **proxy** (object) - Optional - Proxy settings (e.g., {"url": "http://127.0.0.1:8888"}) - **postData** (string) - Optional - POST data (for "request.post"), must be x-www-form-urlencoded string ### Request Example (GET) ```json { "cmd": "request.get", "url": "https://www.1377x.to/", "maxTimeout": 60000 } ``` ### Request Example (POST) ```json { "cmd": "request.post", "url": "https://somesite.com/login", "postData": "username=foo&password=bar", "maxTimeout": 60000 } ``` ### Response #### Success Response (200) - **status** (string) - Indicates the status of the request. - **message** (string) - A message providing details about the response. - **solution** (array) - An array of objects, where each object contains: - **url** (string) - The URL that was accessed. - **status** (integer) - The HTTP status code of the response. - **headers** (object) - The response headers. - **cookies** (array) - An array of cookies. - **content** (string) - The HTML content of the page. - **cookies** (array) - An array of cookies returned by the server. ``` -------------------------------- ### Index / Ready Check Source: https://context7.com/nabil-ak/solvearr/llms.txt Returns the current version and user-agent string to confirm the service is running and ready to accept requests. ```APIDOC ## GET / ### Description Returns the current version and user-agent string to confirm the service is running and ready to accept requests. ### Method GET ### Endpoint / ### Response #### Success Response (200) - **msg** (string) - Indicates the service is ready. - **version** (string) - The current version of Solvearr. - **userAgent** (string) - The user-agent string impersonated by Solvearr. ### Response Example ```json { "msg": "Solvearr is ready!", "version": "1.0.0", "userAgent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36" } ``` ``` -------------------------------- ### Check Solvearr Service Status Source: https://context7.com/nabil-ak/solvearr/llms.txt Use this endpoint to confirm the service is running and ready to accept requests. It returns the current version and user-agent string. ```bash curl http://localhost:8191/ ``` -------------------------------- ### Configure Prowlarr to Use Solvearr Source: https://context7.com/nabil-ak/solvearr/llms.txt Integrate Solvearr into Prowlarr by adding it as a FlareSolverr-compatible indexer proxy. Point the host URL to your Solvearr instance. ```text Prowlarr Settings: Settings → Indexers → + (Add Proxy) Type: FlareSolverr Host: http://localhost:8191/ Request Timeout: 60 ``` -------------------------------- ### Deploy Solvearr with Docker Compose Source: https://context7.com/nabil-ak/solvearr/llms.txt Use this Docker Compose configuration to deploy Solvearr as a containerized service. It supports multiple architectures and ensures the service restarts automatically. ```yaml version: "3" services: solvearr: image: nabilak/solvearr container_name: solvearr ports: - 8191:8191 restart: unless-stopped ``` -------------------------------- ### Perform a POST Request with Solvearr Source: https://context7.com/nabil-ak/solvearr/llms.txt Sends a TLS-fingerprint-spoofed POST request with form data to a target URL. The `postData` field must be a URL-encoded string. ```bash curl -X POST "http://localhost:8191/v1" \ -H "Content-Type: application/json" \ -d '{ "cmd": "request.post", "url": "https://somesite.com/login", "postData": "username=myuser&password=mypassword", "maxTimeout": 30000 }' ``` -------------------------------- ### Deploy Solvearr with Docker Compose Source: https://github.com/nabil-ak/solvearr/blob/main/README.md Defines a Docker Compose service for Solvearr, specifying the image, container name, port mapping, and restart policy. ```yaml version: "3" services: solvearr: image: nabilak/solvearr container_name: solvearr ports: - 8191:8191 restart: unless-stopped ``` -------------------------------- ### Health Check Source: https://context7.com/nabil-ak/solvearr/llms.txt Returns a simple `{"status": "ok"}` response. Use this endpoint for container health checks, uptime monitors, or load balancer probes. ```APIDOC ## GET /health ### Description Returns a simple `{"status": "ok"}` response. Use this endpoint for container health checks, uptime monitors, or load balancer probes. ### Method GET ### Endpoint /health ### Response #### Success Response (200) - **status** (string) - Indicates the health status, typically "ok". ### Response Example ```json { "status": "ok" } ``` ``` -------------------------------- ### Programmatic Test of Solvearr API Source: https://context7.com/nabil-ak/solvearr/llms.txt Test Solvearr's `/v1` API endpoint programmatically using `curl`. This simulates a request that Prowlarr might make to fetch content from a Cloudflare-protected site. ```bash curl -X POST "http://localhost:8191/v1" \ -H "Content-Type: application/json" \ -d '{ "cmd": "request.get", "url": "https://your-indexer.com/", "maxTimeout": 60000 }' ``` -------------------------------- ### Solvearr Health Check Endpoint Source: https://context7.com/nabil-ak/solvearr/llms.txt This endpoint is suitable for container health checks, uptime monitors, or load balancer probes. It returns a simple 'ok' status. ```bash curl http://localhost:8191/health ``` === COMPLETE CONTENT === This response contains all available snippets from this library. No additional content exists. Do not make further requests.