UNLOCK API

مرجع API لحل الكابتشا

صيغتان للطلبات وحساب واحد. استخدم طرق JSON (createTask وgetTaskResult وgetBalance) أو طرق النماذج الكلاسيكية (in.php وres.php). كلتاهما تستخدم مفتاح API من صفحة حسابك والرصيد نفسه.

الأساسيات

العنوان الأساسي
https://unlock-api.com
مفتاح API
32 حرفًا، تجده في صفحة حسابك. أرسله كـ clientKey (JSON) أو key (in.php وres.php).
الصيغة
طرق JSON: طلب POST بجسم JSON. in.php وres.php: حقول نموذج عبر GET أو POST، وأضف json=1 لتحصل على ردود JSON.
الحدود
1,200 طلب في الدقيقة لكل حساب، بما فيها طلبات التحقق من النتيجة. انتظر نحو 5 ثوانٍ بعد إنشاء المهمة، ثم تحقق كل 5 ثوانٍ.
المهلة
المهمة التي لا تُحل خلال 5 دقائق تفشل بالخطأ ERROR_CAPTCHA_UNSOLVABLE ويعود مبلغها إلى الرصيد.
الفوترة
يُخصم سعر المهمة عند إنشائها. المهام الفاشلة تُسترد تلقائيًا.

البدء السريع

حل reCAPTCHA v2 باستخدام طرق JSON. استبدل YOUR_API_KEY بمفتاحك.

import time, requests

API = "https://unlock-api.com"
KEY = "YOUR_API_KEY"

task = requests.post(f"{API}/createTask", json={
  "clientKey": KEY,
  "task": {
      "type": "RecaptchaV2TaskProxyless",
      "websiteURL": "https://example.com/login",
      "websiteKey": "6LcR_RsTAAAAAFJR_5ZdbQd0SMxL7yIDmSXH1-lo"
    }
}).json()
if task["errorId"]:
    raise SystemExit(task["errorCode"])

while True:
    time.sleep(5)
    r = requests.post(f"{API}/getTaskResult", json={"clientKey": KEY, "taskId": task["taskId"]}).json()
    if r["errorId"]:
        raise SystemExit(r["errorCode"])   # failed tasks are refunded
    if r["status"] == "ready":
        print(r["solution"]["gRecaptchaResponse"])
        break

طرق JSON

POST /createTask إنشاء مهمة

الجسم: clientKey وكائن task. نوع المهمة يحدد بقية الحقول، راجع أنواع المهام. الرد: errorId 0 مع taskId، أو errorId 1 مع errorCode.

POST https://unlock-api.com/createTask
{"clientKey":"YOUR_API_KEY","task":{"type":"TurnstileTaskProxyless","websiteURL":"https://example.com","websiteKey":"0x4AAAAAAAC3DHQFLr1GavRN"}}

{"errorId":0,"taskId":1001}
{"errorId":1,"errorCode":"ERROR_ZERO_BALANCE","errorDescription":"..."}

POST /getTaskResult جلب النتيجة

الجسم: clientKey وtaskId. أثناء تنفيذ المهمة: status processing. عند الانتهاء: status ready مع solution وcost. المهمة الفاشلة ترد بـ errorId 1 مع errorCode الخاص بها.

POST https://unlock-api.com/getTaskResult
{"clientKey":"YOUR_API_KEY","taskId":1001}

{"errorId":0,"status":"processing"}
{"errorId":0,"status":"ready","solution":{"token":"0.zrSnRHO7h0..."},"cost":"0.0012","createTime":1791640000,"endTime":1791640011,"solveCount":1}

POST /getBalance جلب الرصيد

الجسم: clientKey. الرد: balance بالدولار الأمريكي.

{"clientKey":"YOUR_API_KEY"}

{"errorId":0,"balance":42.5}

الإبلاغ عن إجابة خاطئة

تقبل reportIncorrectRecaptcha وreportIncorrectImageCaptcha القيمتين clientKey وtaskId وترد بـ success. هي مقبولة للتوافق مع المكتبات الموجودة، والبلاغ لا يغيّر الرسوم.

طرق النماذج (in.php وres.php)

إرسال مهمة: in.php

الحقول: key وmethod وحقول نوع الكابتشا. الرد: OK|ID، أو مع json=1 {"status":1,"request":"ID"}. تعود الأخطاء بأسمائها، مثل ERROR_ZERO_BALANCE.

POST https://unlock-api.com/in.php
key=YOUR_API_KEY&method=hcaptcha&sitekey=SITE_KEY&pageurl=https://example.com&json=1

OK|1001
{"status":1,"request":"1001"}

جلب الإجابة: res.php

يعيد action=get&id=ID القيمة OK|ANSWER عند الحل وCAPCHA_NOT_READY أثناء العمل. يضيف action=get2 التكلفة. يتحقق ids=ID1,ID2 من حتى 100 مهمة دفعة واحدة. يعيد action=getbalance الرصيد. الطريقتان action=reportbad وreportgood مقبولتان.

GET https://unlock-api.com/res.php?key=YOUR_API_KEY&action=get&id=1001
CAPCHA_NOT_READY
OK|P1_eyJ0eXAiOiJKV1Qi...

GET https://unlock-api.com/res.php?key=YOUR_API_KEY&action=getbalance
42.5

طرق إضافية

POST /getToken الإنشاء والانتظار: getToken

الجسم نفسه كما في createTask. ينتظر الاستدعاء حتى 50 ثانية ويعيد الرد نفسه كما في getTaskResult. إذا كانت المهمة ما زالت قيد التنفيذ، يكون الرد status processing مع taskId، فتابع التحقق عبر getTaskResult.

POST https://unlock-api.com/getToken
{"clientKey":"YOUR_API_KEY","task":{"type":"TurnstileTaskProxyless","websiteURL":"https://example.com","websiteKey":"0x4AAAA..."}}

{"errorId":0,"taskId":1001,"status":"ready","solution":{"token":"0.zrSnRHO7h0..."},"cost":"0.000725"}

إشعارات النتيجة (callback)

أضف callbackUrl إلى createTask (أو pingback إلى in.php) وستُرسل النتيجة إليه عند انتهاء المهمة: جسم JSON مثل getTaskResult مع taskId، أو في in.php جسم نموذج id=…&code=…. تُستدعى العناوين العامة فقط، مرة واحدة، بمهلة 5 ثوانٍ، وتبقى النتيجة متاحة أيضًا عبر التحقق الدوري.

{"clientKey":"YOUR_API_KEY","callbackUrl":"https://your.server/captcha-result","task":{...}}

POST https://your.server/captcha-result
{"errorId":0,"taskId":1001,"status":"ready","solution":{...},"cost":"0.0005"}

الإحصاءات

يعيد getQueueStats عدد المهام المنتظرة وقيد الحل الآن ومتوسط وقت الحل في الساعة الأخيرة. يعيد getSpendingStats حجم مهامك وإنفاقك لكل ساعة خلال يوم UTC واحد (date بتوقيت unix). يعيد test الجسم الذي يستلمه كما هو.

POST https://unlock-api.com/getQueueStats     {"clientKey":"..."}  ->  {"errorId":0,"waiting":3,"solving":12,"speed":6.4,"total":15}
POST https://unlock-api.com/getSpendingStats  {"clientKey":"...","date":1791590400}  ->  {"errorId":0,"data":[{"dateFrom":...,"volume":120,"money":0.06},...]}
POST https://unlock-api.com/test              {"anything":1}  ->  {"errorId":0,"received":{"anything":1}}

قائمة عناوين IP المسموحة

إذا حددت قائمة عناوين IP مسموحة في صفحة الحساب، تحصل الطلبات من عناوين أخرى على الخطأ ERROR_IP_NOT_ALLOWED.

أنواع المهام

لكل نوع اسم بدون بروكسي واسم مع بروكسي (بحذف Proxyless). تُطابق الأسماء بغض النظر عن حالة الأحرف وبالتهجئات التي تستخدمها واجهات API أخرى للحل. مهام البروكسي تحتاج أيضًا إلى proxyType (http أو socks4 أو socks5) وproxyAddress وproxyPort، أو سلسلة بروكسي واحدة مثل http://user:[email protected]:8080. الحقول الاختيارية غير المذكورة هنا تُمرر إلى الحل كما أُرسلت.

reCAPTCHA v2

التفاصيل

RecaptchaV2TaskProxylessRecaptchaV2Task

الحقول

websiteURL (مطلوب)websiteKey (مطلوب)

reCAPTCHA v2 Enterprise

التفاصيل

RecaptchaV2EnterpriseTaskProxylessRecaptchaV2EnterpriseTask

الحقول

websiteURL (مطلوب)websiteKey (مطلوب)

reCAPTCHA v3

التفاصيل

RecaptchaV3TaskProxylessRecaptchaV3Task

الحقول

websiteURL (مطلوب)websiteKey (مطلوب)

Cloudflare Turnstile

التفاصيل

TurnstileTaskProxylessTurnstileTask

الحقول

websiteURL (مطلوب)websiteKey (مطلوب)

GeeTest v3 / v4

التفاصيل

GeeTestTaskProxylessGeeTestTask

الحقول

websiteURL (مطلوب)

FunCaptcha (Arkose Labs)

التفاصيل

FunCaptchaTaskProxylessFunCaptchaTask

الحقول

websiteURL (مطلوب)websitePublicKey (مطلوب)

Amazon AWS WAF

التفاصيل

AmazonTaskProxylessAmazonTask

الحقول

websiteURL (مطلوب)websiteKey (مطلوب)

MtCaptchaTaskProxylessMtCaptchaTask

الحقول

websiteURL (مطلوب)websiteKey (مطلوب)

Friendly Captcha

التفاصيل

FriendlyCaptchaTaskProxylessFriendlyCaptchaTask

الحقول

websiteURL (مطلوب)websiteKey (مطلوب)

Lemin Cropped Captcha

التفاصيل

LeminTaskProxylessLeminTask

الحقول

websiteURL (مطلوب)captchaId (مطلوب)divId (مطلوب)

DataDomeSliderTask

الحقول

websiteURL (مطلوب)captchaUrl (مطلوب)userAgent (مطلوب)

KeyCaptchaTaskProxylessKeyCaptchaTask

الحقول

websiteURL (مطلوب)s_s_c_user_id (مطلوب)s_s_c_session_id (مطلوب)s_s_c_web_server_sign (مطلوب)s_s_c_web_server_sign2 (مطلوب)

Capy Puzzle

التفاصيل

CapyTaskProxylessCapyTask

الحقول

websiteURL (مطلوب)websiteKey (مطلوب)

صفحة تحدي Cloudflare

التفاصيل

AntiCloudflareTask

الحقول

websiteURL (مطلوب)

CutCaptchaTaskProxylessCutCaptchaTask

الحقول

websiteURL (مطلوب)

AntiCyberSiAraTaskProxylessAntiCyberSiAraTask

الحقول

websiteURL (مطلوب)

AtbCaptchaTaskProxylessAtbCaptchaTask

الحقول

websiteURL (مطلوب)

Tencent Captcha

التفاصيل

TencentTaskProxylessTencentTask

الحقول

websiteURL (مطلوب)

Prosopo Procaptcha

التفاصيل

ProsopoTaskProxylessProsopoTask

الحقول

websiteURL (مطلوب)websiteKey (مطلوب)

CaptchaFoxTaskProxylessCaptchaFoxTask

الحقول

websiteURL (مطلوب)websiteKey (مطلوب)

AltchaTaskProxylessAltchaTask

الحقول

websiteURL (مطلوب)

NetEase Yidun

التفاصيل

YidunTaskProxylessYidunTask

الحقول

websiteURL (مطلوب)websiteKey (مطلوب)

Yandex SmartCaptcha

التفاصيل

YandexSmartCaptchaTaskProxylessYandexSmartCaptchaTask

الحقول

websiteURL (مطلوب)websiteKey (مطلوب)

VKCaptchaTaskProxylessVKCaptchaTask

الحقول

websiteURL (مطلوب)

Binance Captcha

التفاصيل

BinanceTaskProxylessBinanceTask

الحقول

websiteURL (مطلوب)websiteKey (مطلوب)

مهمة مخصصة (Imperva وTemu وغيرها)

التفاصيل

CustomTask

الحقول

class (مطلوب)

تحويل الصورة إلى نص

التفاصيل

ImageToTextTask

الحقول

body (مطلوب)

سؤال نصي

التفاصيل

TextCaptchaTask

الحقول

comment (مطلوب)

شبكة صور

التفاصيل

GridTask

الحقول

body (مطلوب)

إحداثيات النقر

التفاصيل

CoordinatesTask

الحقول

body (مطلوب)

RotateTask

الحقول

body (مطلوب)

AudioTask

الحقول

body (مطلوب)

تحديد بمستطيل

التفاصيل

BoundingBoxTask

الحقول

body (مطلوب)

الرسم حول الشكل

التفاصيل

DrawAroundTask

الحقول

body (مطلوب)

السحب والإفلات

التفاصيل

DragAndDropTask

الحقول

مهمة صور مركبة

التفاصيل

ComplexImageTask

الحقول

class (مطلوب)

الأخطاء

الأسماء نفسها في الصيغتين. الطلبات المرفوضة بخطأ لا تُحتسب عليها رسوم.

الخطأمعناه وما يجب فعله
ERROR_KEY_DOES_NOT_EXISTالمفتاح غير صحيح. انسخه مرة أخرى من صفحة الحساب. (في in.php وres.php: ERROR_WRONG_USER_KEY)
ERROR_ZERO_BALANCEالرصيد لا يكفي للمهمة. اشحن رصيدك، ولم يُخصم أي شيء.
ERROR_NO_SLOT_AVAILABLEالطلبات كثيرة الآن، فلم تُقبل المهمة. حاول مرة أخرى بعد بضع ثوانٍ، ولم يُخصم أي شيء.
ERROR_TASK_NOT_SUPPORTEDنوع المهمة غير معروف أو معطل. تحقق من اسم النوع.
ERROR_BAD_PARAMETERSحقل مطلوب مفقود أو بصيغة خاطئة.
ERROR_PAGEURLقيمة websiteURL أو pageurl مفقودة أو ليست عنوان http(s) كاملًا.
ERROR_GOOGLEKEYقيمة googlekey مفقودة في طلب reCAPTCHA عبر in.php.
ERROR_BAD_PROXYمهمة البروكسي تحتاج إلى proxyAddress وproxyPort.
ERROR_ZERO_CAPTCHA_FILESIZEالصورة مفقودة أو صغيرة جدًا.
ERROR_TOO_BIG_CAPTCHA_FILESIZEحجم الصورة أكبر من 100 KB.
ERROR_IMAGE_TYPE_NOT_SUPPORTEDالصورة ليست بصيغة base64 صالحة.
ERROR_WRONG_CAPTCHA_IDلا توجد مهمة بهذا المعرف في حسابك.
CAPCHA_NOT_READYفي in.php وres.php فقط: المهمة ما زالت قيد التنفيذ. تحقق مرة أخرى بعد 5 ثوانٍ.
ERROR_CAPTCHA_UNSOLVABLEتعذر حل المهمة في الوقت المحدد. عاد مبلغها إلى رصيدك.
ERROR_TOO_MANY_REQUESTSطلبات كثيرة. خفّف التحقق من النتيجة إلى مرة كل 5 ثوانٍ.
ERROR_IP_NOT_ALLOWEDجاء الطلب من عنوان IP غير موجود في قائمة الحساب المسموحة. أضف العنوان من صفحة الحساب.