يضيف reCAPTCHA v2 Enterprise تسجيل المخاطر على مستوى المؤسسة إلى مربع الاختيار القياسي "أنا لست روبوتًا". تبدو الأداة مماثلة للإصدار 2 القياسي، ولكن يتم التحقق من الرموز المميزة من خلال الواجهة الخلفية لـ Google Enterprise مع التحقق الأكثر صرامة. لحلها باستخدام CaptchaAI، أضف enterprise=1 إلى طلب الإصدار الثاني الخاص بك.
يغطي هذا الدليل التنفيذ الكامل لـ Node.js - اكتشاف الإصدار 2 من Enterprise، والإرسال إلى CaptchaAI، واستقصاء النتيجة، وحقن الرمز المميز.
ما تحتاجه
| المتطلبات | التفاصيل |
|---|---|
| مفتاح CaptchaAI API | captchaai.com |
| Node.js 14+ | مع fetch أو node-fetch المدمج |
| مفتاح الموقع | من عنوان URL الخاص بالمؤسسة (المعلمة k=) |
| عنوان URL للصفحة | عنوان URL الكامل الذي يظهر فيه اختبار CAPTCHA |
| الإجراء (اختياري) | من المعلمة sa= في عنوان URL للإرساء |
الخطوة 1: تحديد reCAPTCHA v2 Enterprise
افتح DevTools وابحث عن طلب ربط Enterprise في علامة التبويب "الشبكة":
https://www.google.com/recaptcha/enterprise/anchor?ar=1&k=6LdxxXXxAAAAAAcX...&sa=LOGIN&...
المؤشرات الرئيسية:
- يتضمن مصدر البرنامج النصي
/recaptcha/enterprise.jsأو/enterprise/anchor - المعلمة
k=هي مفتاح الموقع - المعلمة
sa=(إن وجدت) هي الإجراء
يستخدم الإصدار 2 القياسي /recaptcha/api2/anchor — لا تقم بإضافة enterprise=1 للإصدار 2 القياسي.
الخطوة 2: أرسل المهمة إلى CaptchaAI
const API_KEY = "YOUR_API_KEY";
async function submitTask(sitekey, pageurl, action) {
const params = new URLSearchParams({
key: API_KEY,
method: "userrecaptcha",
googlekey: sitekey,
pageurl: pageurl,
enterprise: "1",
json: "1",
});
if (action) {
params.set("action", action);
}
const response = await fetch(
`https://ocr.captchaai.com/in.php?${params}`
);
const data = await response.json();
if (data.status !== 1) {
throw new Error(`Submit failed: ${data.request}`);
}
console.log(`Task submitted. ID: ${data.request}`);
return data.request;
}
الخطوة 3: استطلاع النتيجة
انتظر 20 ثانية قبل الاستطلاع الأول، ثم تحقق كل 5 ثوانٍ:
function delay(ms) {
return new Promise((resolve) => setTimeout(resolve, ms));
}
async function pollResult(taskId) {
await delay(20000);
for (let attempt = 0; attempt < 30; attempt++) {
const params = new URLSearchParams({
key: API_KEY,
action: "get",
id: taskId,
json: "1",
});
const response = await fetch(
`https://ocr.captchaai.com/res.php?${params}`
);
const data = await response.json();
if (data.status === 1) {
console.log(`Solved. Token: ${data.request.substring(0, 60)}...`);
return {
token: data.request,
userAgent: data.user_agent || "",
};
}
if (data.request !== "CAPCHA_NOT_READY") {
throw new Error(`Solve failed: ${data.request}`);
}
console.log(`Attempt ${attempt + 1}: not ready, waiting 5s...`);
await delay(5000);
}
throw new Error("Solve timed out");
}
الخطوة 4: أدخل الرمز المميز
قم بإرسال الرمز المميز الذي تم حله كـ g-recaptcha-response. إذا أعادت واجهة برمجة التطبيقات (API) user_agent، فاستخدمها في رؤوس طلبك:
async function submitForm(token, userAgent) {
const headers = { "Content-Type": "application/x-www-form-urlencoded" };
if (userAgent) {
headers["User-Agent"] = userAgent;
}
const response = await fetch("https://example.com/api/login", {
method: "POST",
headers,
body: new URLSearchParams({
username: "user",
password: "pass",
"g-recaptcha-response": token,
}),
});
console.log(`Response status: ${response.status}`);
return response;
}
استكمال السيناريو العمل
const API_KEY = "YOUR_API_KEY";
const SITE_KEY = "6LdxxXXxAAAAAAcXxxXxxX91xxxxxxxx8xxOx7A";
const PAGE_URL = "https://example.com/login";
const ACTION = "LOGIN"; // optional — omit if not in anchor URL
function delay(ms) {
return new Promise((resolve) => setTimeout(resolve, ms));
}
async function solveRecaptchaV2Enterprise() {
// Submit task
const submitParams = new URLSearchParams({
key: API_KEY,
method: "userrecaptcha",
googlekey: SITE_KEY,
pageurl: PAGE_URL,
enterprise: "1",
action: ACTION,
json: "1",
});
const submitRes = await fetch(
`https://ocr.captchaai.com/in.php?${submitParams}`
);
const submitData = await submitRes.json();
if (submitData.status !== 1) {
throw new Error(`Submit error: ${submitData.request}`);
}
const taskId = submitData.request;
console.log(`Task ID: ${taskId}`);
// Poll for result
await delay(20000);
for (let i = 0; i < 30; i++) {
const pollParams = new URLSearchParams({
key: API_KEY,
action: "get",
id: taskId,
json: "1",
});
const pollRes = await fetch(
`https://ocr.captchaai.com/res.php?${pollParams}`
);
const pollData = await pollRes.json();
if (pollData.status === 1) {
return {
token: pollData.request,
userAgent: pollData.user_agent || "",
};
}
if (pollData.request !== "CAPCHA_NOT_READY") {
throw new Error(`Solve error: ${pollData.request}`);
}
await delay(5000);
}
throw new Error("Solve timed out");
}
(async () => {
const { token, userAgent } = await solveRecaptchaV2Enterprise();
console.log(`Token: ${token.substring(0, 60)}...`);
if (userAgent) console.log(`User-Agent: ${userAgent}`);
})();
الناتج المتوقع:
Task ID: 73849562810
Token: 03AGdBq24PBCqLmOx2V4pGHJjkR2xZ1r...
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64)...
استكشاف الأخطاء وإصلاحها
| خطأ | السبب | إصلاح |
|---|---|---|
ERROR_WRONG_USER_KEY |
تنسيق مفتاح API غير صالح | مفتاح التحقق هو 32 حرفًا من لوحة التحكم الخاصة بك |
ERROR_KEY_DOES_NOT_EXIST |
لم يتم العثور على المفتاح | التحقق من المفتاح فيcaptchaai.com |
ERROR_ZERO_BALANCE |
رصيد غير كاف | قم بتعبئة حسابك |
ERROR_BAD_TOKEN_OR_PAGEURL |
مفتاح الموقع أو عنوان URL غير صحيح | قم باستخراج قيمة k= الصحيحة من عنوان URL الخاص بالمؤسسة |
ERROR_CAPTCHA_UNSOLVABLE |
لا يمكن حلها | تحقق من أن مفتاح الموقع هو Enterprise v2، ثم أعد المحاولة |
| تم رفض الرمز المميز بواسطة الموقع | عدم تطابق وكيل المستخدم | استخدم user_agent من استجابة الحل |
الأسئلة الشائعة
كيف يمكنني اكتشاف الإصدار Enterprise v2 مقابل الإصدار القياسي v2؟
يتم تحميل Enterprise v2 من /recaptcha/enterprise/ في البرنامج النصي أو عنوان URL المرساة. يستخدم الإصدار الثاني القياسي /recaptcha/api2/.
هل معلمة الإجراء مطلوبة؟
فقط إذا كان عنوان URL المثبت يتضمن sa=. إذا كانت غائبة، قم بحذفها من طلب CaptchaAI الخاص بك.
لماذا يرفض الموقع المستهدف الرمز المميز الخاص بي؟
الأكثر شيوعًا: عدم تطابق وكيل المستخدم. ترتبط رموز Enterprise v2 المميزة بوكيل المستخدم الخاص بالحل. استخدم دائمًا قيمة user_agent التي تم إرجاعها في استجابة الاستقصاء.
هل يمكنني استخدام هذا مع Puppeteer أو Playwright؟
نعم. قم باستخراج مفتاح الموقع من الصفحة، وحل المشكلة عبر واجهة برمجة التطبيقات (API)، ثم أدخل الرمز المميز في document.getElementById('g-recaptcha-response').innerHTML.
ما هو وقت الحل النموذجي؟
15-30 ثانية حسب تحميل الخادم.
ابدأ في حل reCAPTCHA v2 Enterprise
احصل على مفتاح API الخاص بك علىcaptchaai.comوأضف enterprise=1 إلى طلبات الإصدار الثاني الخاصة بك.