A production-ready Flask service for solving Roblox FunCaptcha challenges with integrated decryption utilities. Deployed on Render.
Features: - ✅ Blob extraction from Arkose Labs - ✅ FunCaptcha solving (regular, suppressed, PoW) - ✅ TGuess data decryption - ✅ BDA data decryption - ✅ RESTful API with async task processing - ✅ Health checks and statistics - ✅ Render-ready deployment
# Clone repository
git clone https://github.com/YOUR_USERNAME/funcaptcha-solver.git
cd funcaptcha-solver
# Install dependencies
pip install -r requirements.txt
# Run locally
python app.py
Visit: http://localhost:8080/health
bash
gunicorn app:app --bind 0.0.0.0:$PORT --workers 4 --worker-class sync --timeout 60├── app.py # Main Flask application (v3.0 integrated)
├── requirements.txt # Python dependencies
├── arkose.js # Required: JavaScript encryption
├── webgl.json # Optional: WebGL configuration
├── Procfile # Render configuration
├── runtime.txt # Python version (3.11.6)
├── .gitignore # Git ignore patterns
├── README.md # This file
├── RENDER_DEPLOYMENT.md # Render setup guide
├── SETUP_CHECKLIST.md # Step-by-step checklist
├── API_REFERENCE.md # Complete API documentation
└── LICENSE # Your license
All decryption functionality from decrypt_tguess.py and decrypt_bda.py is now built into app.py:
# TGuess Decryption
POST /decrypt/tguess
{
"encrypted_data": "...",
"session_token": "..."
}
# BDA Decryption
POST /decrypt/bda
{
"bda_data": "...",
"user_agent": "..."
}
Arkose.generate_key_pbkdf() - For tguess decryptionArkose.generate_other_key_pbkdf() - For tguess key generationDecryptionUtils.decrypt_tguess() - Standalone tguess decryptionDecryptionUtils.decrypt_bda() - Standalone BDA decryptionNew counter in health/stats endpoints:
{
"decrypted": 42
}
# Check service health
curl https://your-app.onrender.com/health
# Extract blob
curl -X POST https://your-app.onrender.com/extract/blob \
-H "Content-Type: application/json" \
-d '{"preset": "roblox_login"}'
# Create solve task
curl -X POST https://your-app.onrender.com/unified/solve \
-H "Content-Type: application/json" \
-d '{"preset": "roblox_login"}'
# View statistics
curl https://your-app.onrender.com/stats
GET /health - Service statusGET /stats - Detailed statisticsPOST /extract/blob - Extract blob from ArkosePOST /solve/create - Create solve taskGET /solve/status/{task_id} - Check task statusPOST /unified/solve - Extract + Solve in one requestPOST /decrypt/tguess - Decrypt tguess dataPOST /decrypt/bda - Decrypt BDA dataPOST /funcaptcha/createTaskPOST /funcaptcha/getTaskconst axios = require('axios');
async function solveCaptcha() {
const res = await axios.post('https://your-app.onrender.com/unified/solve', {
preset: 'roblox_login'
});
const taskId = res.data.task_id;
// Poll for result
let result;
while (true) {
const status = await axios.get(
`https://your-app.onrender.com/solve/status/${taskId}`
);
if (status.data.status === 'completed') {
result = status.data;
break;
}
await new Promise(r => setTimeout(r, 500));
}
return result.token;
}
import requests
import time
def solve_captcha():
resp = requests.post('https://your-app.onrender.com/unified/solve', json={
'preset': 'roblox_login'
})
task_id = resp.json()['task_id']
while True:
status = requests.get(
f'https://your-app.onrender.com/solve/status/{task_id}'
)
if status.json()['status'] == 'completed':
return status.json()['token']
time.sleep(0.5)
const res = await axios.post('https://your-app.onrender.com/decrypt/tguess', {
encrypted_data: '{"ct":"...","iv":"...","s":"..."}',
session_token: 'session_token_here'
});
console.log('Decrypted:', res.data.data);
Create GitHub Repository
bash
git init
git add .
git commit -m "Unified FunCaptcha Solver v3.0"
git push origin main
Connect to Render
Connect your GitHub repository
Configure
pip install -r requirements.txtgunicorn app:app --bind 0.0.0.0:$PORT --workers 4 --worker-class sync --timeout 60Environment: DEBUG=False
Deploy
# Install dependencies
pip install -r requirements.txt
# Run Flask development server
python app.py
# Or use Gunicorn
gunicorn app:app --bind 0.0.0.0:8080 --workers 4
See requirements.txt for full list.
arkose.js is in repository rootgit ls-files | grep arkose.jsgit add arkose.js && git commit -m "Add arkose.js" && git push/health endpoint--timeout 120--workers 2/stats endpointcurl https://your-app.onrender.com/health
Response includes: - Service status - Version - Arkose.js loaded status - Statistics (solved, errors, etc.)
curl https://your-app.onrender.com/stats
Tracks: - Total solved - Failures - Suppressed solved - PoW solved - Decrypted (new) - Errors
[Your License Here]
/health for service statusStatus: Production Ready ✅
Version: 3.0.0
Last Updated: December 2024
Created: With ❤️ for Roblox automation
| Link | Description |
|---|---|
| API Reference | Complete endpoint documentation |
| Setup Guide | Step-by-step deployment checklist |
| Render Guide | Render.com deployment guide |
| Health Check | Service status |
| Statistics | Service statistics |
$ claude mcp add FUNCAPTCHAV3 \
-- python -m otcore.mcp_server <graph>