Back to Documentation

TLS Bypass

Make HTTP requests with TLS fingerprinting and bypass protections

TLS Bypass API

The TLS Bypass endpoint allows you to make HTTP requests with customized TLS fingerprints, helping you bypass anti-bot protections.

Endpoint

POST https://castlebreaker.cc/tls

Authentication

Requires X-API-Key header with your API key.

Request Parameters

ParameterTypeRequiredDescription
urlstringYesThe target URL to make the request to
methodstringYesHTTP method: GET, POST, PUT, DELETE, etc.
tls_configstringNoTLS configuration: CLOUDFLARE, AKAMAI, or CUSTOM (default: CUSTOM)
headersobjectNoCustom HTTP headers to include in the request
bodystringNoRequest body for POST/PUT requests
timeoutnumberNoRequest timeout in seconds (default: 30)

TLS Configuration Options

CLOUDFLARE

Mimics Cloudflare's TLS fingerprint. Best for sites behind Cloudflare protection.

AKAMAI

Mimics Akamai's TLS fingerprint. Optimized for Akamai-protected endpoints.

CUSTOM

Our proprietary TLS fingerprint. Works for most general use cases.

Example Requests

Basic GET Request

curl -X POST "https://castlebreaker.cc/tls" \
  -H "X-API-Key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "url": "https://api.example.com/data",
    "method": "GET",
    "tls_config": "CUSTOM"
  }'

POST Request with Headers

curl -X POST "https://castlebreaker.cc/tls" \
  -H "X-API-Key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "url": "https://api.example.com/submit",
    "method": "POST",
    "tls_config": "CLOUDFLARE",
    "headers": {
      "Content-Type": "application/json",
      "User-Agent": "Custom-Agent/1.0"
    },
    "body": "{\"data\": \"value\"}"
  }'

With Cloudflare Protection

curl -X POST "https://castlebreaker.cc/tls" \
  -H "X-API-Key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "url": "https://protected-site.com/api",
    "method": "GET",
    "tls_config": "CLOUDFLARE"
  }'

Response Format

Success Response

{
  "status": true,
  "msg": "Success",
  "data": {
    "response": {
      "status": true,
      "status_code": 200,
      "text": "Response body content",
      "headers": {
        "content-type": "application/json",
        "server": "nginx"
      },
      "tls": {
        "ja3": "771,4865-4866-4867-49195-49199-49196-49200-52393-52392-49171-49172-156-157-47-53,0-23-65281-10-11-35-16-5-13-18-51-45-43-27-17513,29-23-24,0",
        "ja3_hash": "e7d705a3286e19ea42f587b344ee6865",
        "akamai": "1:65536,2:0,3:1000,4:6291456,6:262144|15663105|0|m,a,s,p",
        "akamai_hash": "90224459f8bf70b7d0a8797eb916dbc9"
      }
    }
  }
}

Error Response

{
  "status": false,
  "msg": "Error message description",
  "error": "TIMEOUT"
}

Error Codes

Error CodeDescription
INVALID_URLThe provided URL is malformed or invalid
TIMEOUTRequest exceeded the timeout limit
CONNECTION_ERRORFailed to establish connection to target
TLS_ERRORTLS handshake failed
RATE_LIMITToo many requests, please slow down
INSUFFICIENT_CREDITSNot enough credits in account

TLS Fingerprint Details

The response includes detailed TLS fingerprint information:

  • JA3 Hash: Client TLS fingerprint identifier
  • Akamai Hash: Akamai-specific fingerprint
  • Full JA3 String: Complete TLS parameters used

This allows you to verify the TLS configuration being used and track fingerprint consistency.

Pricing

  • $0.002 per request (0.2ยข)
  • Billed per successful request
  • Failed requests are not charged

Best Practices

  1. Choose the Right Config: Use CLOUDFLARE for Cloudflare-protected sites, AKAMAI for Akamai protection
  2. Handle Timeouts: Set appropriate timeout values based on expected response time
  3. Retry Logic: Implement exponential backoff for transient errors
  4. Header Matching: Include appropriate headers that match the target site's expectations

Python Example

import requests

API_KEY = "your_api_key"
headers = {"X-API-Key": API_KEY, "Content-Type": "application/json"}

payload = {
    "url": "https://httpbin.org/get",
    "method": "GET",
    "tls_config": "CUSTOM"
}

response = requests.post(
    "https://castlebreaker.cc/tls",
    headers=headers,
    json=payload
)

data = response.json()
if data.get("status"):
    print("Success!")
    print("Response:", data["data"]["response"]["text"])
    print("JA3 Hash:", data["data"]["response"]["tls"]["ja3_hash"])
else:
    print("Error:", data.get("msg"))

Node.js Example

const fetch = require('node-fetch');

const API_KEY = 'your_api_key';

const payload = {
  url: 'https://httpbin.org/get',
  method: 'GET',
  tls_config: 'CUSTOM'
};

fetch('https://castlebreaker.cc/tls', {
  method: 'POST',
  headers: {
    'X-API-Key': API_KEY,
    'Content-Type': 'application/json'
  },
  body: JSON.stringify(payload)
})
  .then(res => res.json())
  .then(data => {
    if (data.status) {
      console.log('Success!');
      console.log('Response:', data.data.response.text);
      console.log('JA3 Hash:', data.data.response.tls.ja3_hash);
    } else {
      console.log('Error:', data.msg);
    }
  });

Need more help? Check out our Error Handling Guide or Python Examples.