Home
Softono
datadome_generator

datadome_generator

Open source MIT Go
47
Stars
7
Forks
0
Issues
2
Watchers
1 week
Last Commit

About datadome_generator

Go API that generates DataDome payloads to bypass bot protection on sites like Footlocker. Built with Gin + MongoDB, supports DataDome up to v4.19.0

Platforms

Web Self-hosted

Languages

Go

Links

DataDome Generator

A high-performance HTTP service, written in Go, that generates valid DataDome payloads to solve and bypass DataDome's bot-protection challenges. It exposes a small, API-key-authenticated REST API for generating payloads and managing user quotas, backed by MongoDB.

Last supported DataDome version: 4.19.0

If you prefer a managed solution, CapSolver is a viable alternative.

[!WARNING] This project is provided for educational and research purposes only. You are responsible for ensuring your use complies with the terms of service of any site you interact with and with all applicable laws.

Features

  • Payload generation — produces the ch and le jsData payloads required to pass DataDome challenges.
  • API-key authentication — every request is authenticated; admin keys gate user management.
  • Usage quotas — per-user solve limits with the ability to query remaining solves.
  • User management — register, ban, and inspect users via dedicated endpoints.
  • MongoDB-backed — persistent storage for users, keys, and quotas.
  • Structured logging — powered by zap.
  • Docker-ready — ships with a Dockerfile for containerized deployment.

Tech Stack

Component Technology
Language Go 1.20
HTTP router Gin
Database MongoDB
Logging zap
Config godotenv

Getting Started

Prerequisites

  • Go 1.20 or newer
  • A running MongoDB instance
  • A timezone API key (used for accurate payload timestamps)

Configuration

Create a .env file based on .env.example:

MONGO_URI=            # MongoDB connection string
ADDRESS=              # Address the server listens on (e.g. :8080)
TIMEZONE_API_KEY=     # API key for the timezone provider
RELEASE_MODE=         # "true" to run Gin in release mode
ADMIN_API_KEY=        # Master key for admin-only endpoints

Installation

# Clone the repository
git clone https://github.com/combo23/datadome_generator.git
cd datadome_generator

# Install dependencies
go get .

# Build
go build .

# Run
./datadome_generator

Docker

docker build -t datadome-generator .
docker run --env-file .env -p 8080:8080 datadome-generator

API Reference

All endpoints (except /status) require an X-api-key header. Admin-only endpoints require a valid admin API key.

Health Check

Check whether the service is running.

GET /status

Response

{
  "status": "alive"
}

Generate DataDome Payload

Generate the ch and le payloads for a target site. The ch payload is posted first, followed by le.

POST /datadome

Headers

Header Required Description
X-api-key Yes Your API key.

Request body

{
  "site": "tickets.mancity.com",
  "user-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/119.0.0.0 Safari/537.36",
  "cid": "xxxxx",
  "responsePage": "origin",
  "IP": "your_ip",
  "referer": "https://tickets.mancity.com/en-GB/categories/Men's%20Tickets"
}

Response

{
  "ch": "jsData=...",
  "le": "jsData=..."
}

Register User

Create a new user and issue an API key. Admin only.

POST /register

Headers

Header Required Description
X-api-key Yes Admin API key.

Request body

{
  "name": "@user_name",
  "solves": 5000
}

Response

{
  "status": "success",
  "api_key": "XXXXXX"
}

Ban User

Revoke a user's access by their API key. Admin only.

POST /ban?apikey=<user_api_key>

Query parameters

Parameter Required Description
apikey Yes API key of the user to ban.

Headers

Header Required Description
X-api-key Yes Admin API key.

Response

{
  "status": "success"
}

Get Remaining Solves

Fetch the number of solves remaining for a given API key.

GET /solves?apikey=<user_api_key>

Query parameters

Parameter Required Description
apikey Yes API key to check the remaining solves for.

Response

{
  "solves": 1000
}

Testing

go test ./...

License

This project is licensed under the terms of the LICENSE file included in this repository.