Skip to content

Friendly Captcha

Friendly Captcha is a privacy-focused CAPTCHA that uses proof-of-work puzzles instead of image recognition or behavioral analysis. It is commonly used on European websites due to its GDPR-compliant design. The challenge runs a computational puzzle in the user’s browser, and upon completion, generates a solution token that is submitted with the form. Solving Friendly Captcha through the API returns this token directly.

TypeProxy RequiredDescription
FriendlyCaptchaTokenYesSolves the challenge using your proxy. Use when the target site validates the solver’s IP against the submitting IP.
FriendlyCaptchaTokenProxyLessNoSolves the challenge without a proxy. Recommended for most use cases.
ParameterTypeRequiredDescription
typestringYesFriendlyCaptchaToken or FriendlyCaptchaTokenProxyLess
websiteURLstringYesThe URL of the page containing the Friendly Captcha widget
websiteKeystringYesThe site key (puzzle endpoint key) found in the data-sitekey attribute of the Friendly Captcha widget element

Required when using the FriendlyCaptchaToken type:

ParameterTypeRequiredDescription
proxyTypestringYeshttp, socks4, or socks5
proxyAddressstringYesProxy IP or hostname
proxyPortintegerYesProxy port
proxyLoginstringNoProxy username
proxyPasswordstringNoProxy password
{
"clientKey": "YOUR_API_KEY",
"task": {
"type": "FriendlyCaptchaTokenProxyLess",
"websiteURL": "https://example.com/signup",
"websiteKey": "FCMGEMUD2KTDSQ5H"
}
}

With proxy:

{
"clientKey": "YOUR_API_KEY",
"task": {
"type": "FriendlyCaptchaToken",
"websiteURL": "https://example.com/signup",
"websiteKey": "FCMGEMUD2KTDSQ5H",
"proxyType": "http",
"proxyAddress": "1.2.3.4",
"proxyPort": 8080,
"proxyLogin": "user",
"proxyPassword": "pass"
}
}
{
"errorId": 0,
"taskId": "550e8400-e29b-41d4-a716-446655440000",
"status": "processing"
}
{
"token": "PUZZLE_SOLUTION_TOKEN_HERE..."
}
FieldTypeDescription
tokenstringThe solved puzzle token to submit with the form
  1. Locate the Friendly Captcha widget on the target page. The site key is in the data-sitekey attribute of the .frc-captcha element.
  2. Submit the task and poll for the solution.
  3. Insert the returned token as the value of the .frc-captcha-solution hidden input field in the form.
  4. Submit the form as normal. The server will validate the token against the Friendly Captcha API.
import requests
import time
API_KEY = "YOUR_API_KEY"
response = requests.post("https://api.ucaptcha.net/createTask", json={
"clientKey": API_KEY,
"task": {
"type": "FriendlyCaptchaTokenProxyLess",
"websiteURL": "https://example.com/signup",
"websiteKey": "FCMGEMUD2KTDSQ5H"
}
})
task_id = response.json()["taskId"]
while True:
result = requests.post("https://api.ucaptcha.net/getTaskResult", json={
"clientKey": API_KEY,
"taskId": task_id
}).json()
if result["status"] == "ready":
token = result["solution"]["token"]
print("Solution:", token)
# Submit the form with the token
form_data = {
"frc-captcha-solution": token,
"email": "user@example.com"
}
response = requests.post("https://example.com/signup", data=form_data)
print("Status:", response.status_code)
break
elif result["status"] == "failed":
print("Error:", result.get("errorDescription"))
break
time.sleep(5)
const API_KEY = "YOUR_API_KEY";
const { taskId } = await fetch("https://api.ucaptcha.net/createTask", {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify({
clientKey: API_KEY,
task: {
type: "FriendlyCaptchaTokenProxyLess",
websiteURL: "https://example.com/signup",
websiteKey: "FCMGEMUD2KTDSQ5H"
}
})
}).then(r => r.json());
while (true) {
const result = await fetch("https://api.ucaptcha.net/getTaskResult", {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify({ clientKey: API_KEY, taskId })
}).then(r => r.json());
if (result.status === "ready") {
console.log("Solution:", result.solution.token);
break;
} else if (result.status === "failed") {
console.error("Error:", result.errorDescription);
break;
}
await new Promise(r => setTimeout(r, 5000));
}
Terminal window
# Create the task
curl -X POST https://api.ucaptcha.net/createTask \
-H "Content-Type: application/json" \
-d '{
"clientKey": "YOUR_API_KEY",
"task": {
"type": "FriendlyCaptchaTokenProxyLess",
"websiteURL": "https://example.com/signup",
"websiteKey": "FCMGEMUD2KTDSQ5H"
}
}'
# Poll for the result (replace TASK_ID with the returned taskId)
curl -X POST https://api.ucaptcha.net/getTaskResult \
-H "Content-Type: application/json" \
-d '{
"clientKey": "YOUR_API_KEY",
"taskId": "TASK_ID"
}'
  • 2Captcha
  • Anti-Captcha

No backward-compatible aliases. Use FriendlyCaptchaToken or FriendlyCaptchaTokenProxyLess directly.