The cURLsolverrManager is a FastAPI application designed to create and manage HTTP sessions based on curl-impersonate (curl_cffi) with extended functionalities. The manager allows users to make GET and POST requests using created sessions, which can optionally be configured with a proxy. The manager also allows users to delete sessions and get a list of all active sessions.
To get the Docker image of cURLsolverrManager from Docker Hub:
docker pull ed1zx/curlsolverr:latestYou can use Docker Compose to manage the application container. Here's a basic docker-compose.yml file for the service:
version: '3'services:
curlsolverr:
image: ed1zx/curlsolverr:latestports:
- "8000:8000"With the above docker-compose.yml file, you can start the application using:
docker-compose upThis will start the cURLsolverrManager application and bind it to port 8000 on your host machine. You can access the application by navigating to http://localhost:8000 in your browser or using any API client.
Once the application is running, you can access the Swagger UI at:
http://localhost:8000/docs
The Swagger UI provides a user-friendly interface to interact with the API, view its documentation, and test out its endpoints.
To create a new session, you can make a POST request to /v1/session/:
constresponse=awaitfetch("/v1/session/",{method: "POST",headers: {"Content-Type": "application/json"},body: JSON.stringify({impersonate: "chrome110",// check :8000/docs ImpersonateSchemaproxy: {// Optionalprotocol: "http",// or "https" or "socks5" or "socks4"url: "your_proxy_url",// or "your_proxy_ip:your_proxy_port"username: "your_username",// Optionalpassword: "your_password"// Optional}})});constdata=awaitresponse.json();console.log(data);// Expected output: { "session": "generated_session_id" }To make a GET or POST request using a session, you can make a POST request to /v1/request/:
constrequestData={method: "GET",// or "POST"url: "http://your_target_url",session: "your_session_id",headers: {// Optional"Header-Name": "Header-Value"},postData: {key: "value"},// Optional for POST// Other optional parameters: returnOnlyCookies};constresponse=awaitfetch("/v1/request/",{method: "POST",headers: {"Content-Type": "application/json"},body: JSON.stringify(requestData)});constdata=awaitresponse.json();console.log(data);// Expected Output:{"url": "https://www.example.com/","status": 200,"headers": {...},"response": "<!DOCTYPE html><html>...</html>","cookies": [{"name": "cookie_name","value": "cookie_value",
...
},
...
],
...
}To delete a session:
constresponse=awaitfetch("/v1/session/your_session_id",{method: "DELETE"});constdata=awaitresponse.json();console.log(data);// Expected output: { "status": "ok" }To get a list of all active sessions:
constresponse=awaitfetch("/v1/session/");constdata=awaitresponse.json();console.log(data);// Expected output: { "sessions": ["session_id_1", "session_id_2", ...] }For requests to /v1/request/, the following parameters are optional:
headers: Custom headers to be added to the request.postData: Data to be sent in a POST request.returnOnlyCookies: If set totrue, only the cookies from the response will be returned.proxy: Proxy settings for the request. Contains URL, username (optional), and password (optional).
For session creation (/v1/session/), the proxy parameter is optional.