Skip to content

Prosopo (Procaptcha)

Prosopo Procaptcha is a decentralized CAPTCHA solution built on blockchain technology. It offers privacy-preserving bot detection by leveraging a decentralized network of human verifiers rather than centralized servers. Procaptcha is used by Web3 applications, decentralized platforms, and privacy-focused websites. The challenge produces a verification token that is submitted with form data for server-side validation.

TypeProxy RequiredDescription
ProsopoTokenYesSolves the challenge using your proxy.
ProsopoTokenProxyLessNoSolves the challenge without a proxy. Recommended for most use cases.
ParameterTypeRequiredDescription
typestringYesProsopoToken or ProsopoTokenProxyLess
websiteURLstringYesThe URL of the page containing the Procaptcha widget
websiteKeystringYesThe site key found in the Procaptcha widget configuration (the siteKey value in the initialization script)

Required when using the ProsopoToken type:

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

With proxy:

{
"clientKey": "YOUR_API_KEY",
"task": {
"type": "ProsopoToken",
"websiteURL": "https://example.com/register",
"websiteKey": "5HGjXJPbERv4F...",
"proxyType": "http",
"proxyAddress": "1.2.3.4",
"proxyPort": 8080,
"proxyLogin": "user",
"proxyPassword": "pass"
}
}
{
"errorId": 0,
"taskId": "550e8400-e29b-41d4-a716-446655440000",
"status": "processing"
}
{
"token": "0x7a9f3b..."
}
FieldTypeDescription
tokenstringThe Procaptcha verification token to submit with the form
  1. Find the Procaptcha site key on the target page. It is typically in the widget element’s attributes or in the JavaScript initialization code as the siteKey parameter.
  2. Submit the task and poll for the solution.
  3. Set the returned token as the value of the Procaptcha response field in the form (usually a hidden input named procaptcha-response).
  4. Submit the form. The server will verify the token through the Prosopo verification API.
import requests
import time
API_KEY = "YOUR_API_KEY"
response = requests.post("https://api.ucaptcha.net/createTask", json={
"clientKey": API_KEY,
"task": {
"type": "ProsopoTokenProxyLess",
"websiteURL": "https://example.com/register",
"websiteKey": "5HGjXJPbERv4F..."
}
})
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 Procaptcha token
form_data = {
"procaptcha-response": token,
"email": "user@example.com",
"password": "securepassword"
}
response = requests.post("https://example.com/register", 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: "ProsopoTokenProxyLess",
websiteURL: "https://example.com/register",
websiteKey: "5HGjXJPbERv4F..."
}
})
}).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": "ProsopoTokenProxyLess",
"websiteURL": "https://example.com/register",
"websiteKey": "5HGjXJPbERv4F..."
}
}'
# 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
  • CapMonster

No backward-compatible aliases. Use ProsopoToken or ProsopoTokenProxyLess directly.