• شعار «PHP»
  • شعار «Python»
  • شعار «Java»
  • شعار «C#»
  • شعار «Ruby»
  • شعار «Golang»
  • شعار «JavaScript»
تجاوز CAPTCHA باستخدام JAVA

تجاوز CAPTCHA باستخدام JAVA
شعار «Java»
  • شعار «PHP»
  • شعار «Python»
  • شعار «Java»
  • شعار «C#»
  • شعار «Ruby»
  • شعار «Golang»
  • شعار «JavaScript»

نفّذ مكتبة Java لتجاوز التحقق من CAPTCHA بسرعة. API بسيطة لحل CAPTCHA.

حزمة Java لتكامل سهل مع API لخدمة حل CAPTCHA في 2Captcha لتجاوز reCAPTCHA وArkose captcha وGeetest وحل أي CAPTCHA أخرى

بدء سريع

التثبيت

يمكن تثبيت حزمة السكربت عبر مدير الحزم أو يدويًا

Maven Central Repository

مكوّن 2captcha-java متاح في Maven Central

ندعوك لاستكشاف مستودعنا على GitHub حيث ستجد مكتبات وSDK لتكامل سهل مع API الخاص بنا.

الإعداد

وصف لجميع المعلمات اللازمة لتهيئة الحزمة المثبتة

يمكن إنشاء مثيل من فئة TwoCaptcha هكذا:

TwoCaptcha solver = new TwoCaptcha('YOUR_API_KEY');

يمكنك أيضًا تخصيص بعض الخيارات للمثيل الذي تم إنشاؤه:

solver.setSoftId(123);
solver.setCallback("https://your.site/result-receiver");
solver.setDefaultTimeout(120);
solver.setRecaptchaTimeout(600);
solver.setPollingInterval(10);
خيارات مثيل TwoCaptcha
الخيارالقيمة الافتراضيةالوصف
softId-معرّف برنامجك الذي تحصل عليه بعد النشر في كتالوج برامج 2Captcha
callback-رابط خادم الويب الذي يستقبل نتيجة التعرّف على CAPTCHA. يجب تسجيل الرابط أولًا في إعدادات pingback في حسابك
defaultTimeout120مهلة الاستطلاع بالثواني لجميع أنواع CAPTCHA باستثناء reCAPTCHA. تحدد مدة محاولة SDK للحصول على الإجابة من نقطة نهاية API res.php
recaptchaTimeout600مهلة الاستطلاع لـ reCAPTCHA بالثواني. تحدد مدة محاولة SDK للحصول على الإجابة من نقطة نهاية API res.php
pollingInterval10الفاصل بالثواني بين الطلبات إلى نقطة نهاية API res.php، ولا يُنصح بقيم أقل من 5 ثوانٍ
مهم: عند تعيين callback لمثيل TwoCaptcha ستُرجع جميع الطرق فقط معرّف CAPTCHA ولن تقوم باستطلاع API للحصول على النتيجة. سيتم إرسال النتيجة إلى رابط callback. للحصول على الإجابة يدويًا استخدم طريقة getResult

حل CAPTCHA

عند إرسال أي CAPTCHA تعتمد على صورة، يمكنك توفير خيارات إضافية لمساعدة عاملي 2Captcha على حلّها بشكل صحيح

خيارات CAPTCHA
الخيارالقيمة الافتراضيةالوصف
numeric0يحدد ما إذا كانت CAPTCHA تحتوي أرقامًا أو رموزًا أخرى اطّلع على التفاصيل في مستندات API
minLength0الحد الأدنى لطول الإجابة
maxLength0الحد الأقصى لطول الإجابة
phrase0يحدد ما إذا كانت الإجابة متعددة الكلمات أم لا
caseSensitive0يحدد ما إذا كانت الإجابة حساسة لحالة الأحرف
calc0يحدد ما إذا كانت CAPTCHA تتطلب حسابًا
lang-يحدد لغة CAPTCHA، راجع قائمة اللغات المدعومة
hintImg-صورة تلميح تظهر للعاملين مع CAPTCHA
hintText-نص تلميح/مهمة يظهر للعاملين مع CAPTCHA

مثال أساسي

يوضح المثال أدناه استدعاءً أساسيًا للحل مع معالجة الأخطاء.

Normal captcha = new Normal();
captcha.setFile("path/to/captcha.jpg");
captcha.setMinLen(4);
captcha.setMaxLen(20);
captcha.setCaseSensitive(true);
captcha.setLang("en");

try {
    solver.solve(captcha);
    System.out.println("Captcha solved: " + captcha.getCode());
} catch (Exception e) {
    System.out.println("Error occurred: " + e.getMessage());
}
simpleCaptcha

لتجاوز CAPTCHA العادية (نص مشوّه داخل صورة) استخدم الطريقة التالية. يمكن أيضًا استخدام هذه الطريقة للتعرّف على أي نص داخل الصورة.

Normal captcha = new Normal();
captcha.setFile("path/to/captcha.jpg");
captcha.setNumeric(4);
captcha.setMinLen(4);
captcha.setMaxLen(20);
captcha.setPhrase(true);
captcha.setCaseSensitive(true);
captcha.setCalc(false);
captcha.setLang("en");
captcha.setHintImg(new File("path/to/hint.jpg"));
captcha.setHintText("Type red symbols only");
textCaptcha

يمكن استخدام هذه الطريقة لتجاوز CAPTCHA تتطلب الإجابة عن سؤال مقدّم كنص واضح.

Text captcha = new Text();
captcha.setText("If tomorrow is Saturday, what day is today?");
captcha.setLang("en");
recaptchaV2

استخدم هذه الطريقة لحل reCAPTCHA V2 والحصول على token لتجاوز الحماية.

ReCaptcha captcha = new ReCaptcha();
captcha.setSiteKey("6Le-wvkSVVABCPBMRTvw0Q4Muexq1bi0DJwx_mJ-");
captcha.setUrl("https://mysite.com/page/with/recaptcha");
captcha.setInvisible(true);
captcha.setAction("verify");
captcha.setProxy("HTTPS", "login:password@IP_address:PORT");
recaptchaV3

توفر هذه الطريقة حلّال reCAPTCHA V3 وتُرجع token.

ReCaptcha captcha = new ReCaptcha();
captcha.setSiteKey("6Le-wvkSVVABCPBMRTvw0Q4Muexq1bi0DJwx_mJ-");
captcha.setUrl("https://mysite.com/page/with/recaptcha");
captcha.setVersion("v3");
captcha.setAction("verify");
captcha.setScore(0.3);
captcha.setProxy("HTTPS", "login:password@IP_address:PORT");
funCaptcha

طريقة حل FunCaptcha (Arkoselabs). تُرجع token.

FunCaptcha captcha = new FunCaptcha();
captcha.setSiteKey("69A21A01-CC7B-B9C6-0F9A-E7FA06677FFC");
captcha.setUrl("https://mysite.com/page/with/funcaptcha");
captcha.setSUrl("https://client-api.arkoselabs.com");
captcha.setUserAgent("Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.61 Safari/537.36");
captcha.setData("anyKey", "anyValue");
captcha.setProxy("HTTPS", "login:password@IP_address:PORT");
geeTest

طريقة لحل GeeTest puzzle captcha. تُرجع مجموعة tokens بصيغة JSON.

GeeTest captcha = new GeeTest();
captcha.setGt("f2ae6cadcf7886856696502e1d55e00c");
captcha.setApiServer("api-na.geetest.com");
captcha.setChallenge("12345678abc90123d45678ef90123a456b");
captcha.setUrl("https://mysite.com/captcha.html");
captcha.setProxy("HTTPS", "login:password@IP_address:PORT");
capy

طريقة معتمدة على token لتجاوز Capy puzzle captcha.

Capy captcha = new Capy();
captcha.setSiteKey("PUZZLE_Abc1dEFghIJKLM2no34P56q7rStu8v");
captcha.setUrl("https://www.mysite.com/captcha/");
captcha.setProxy("HTTPS", "login:password@IP_address:PORT");
grid

طريقة Grid تُعرف أصلًا بطريقة reCAPTCHA V2 القديمة. يمكن استخدامها لتجاوز أي CAPTCHA يمكن تطبيق شبكة عليها وتحتاج للنقر على مربعات محددة. تُرجع أرقام المربعات.

Grid captcha = new Grid();
captcha.setFile("path/to/captcha.jpg");
captcha.setRows(3);
captcha.setCols(3);
captcha.setPreviousId(0);
captcha.setCanSkip(false);
captcha.setLang("en");
captcha.setHintImg(new File("path/to/hint.jpg"));
captcha.setHintText("Select all images with an Orange");
canvas

يمكن استخدام طريقة Canvas عندما تحتاج لرسم خط حول كائن في الصورة. تُرجع مجموعة إحداثيات نقاط لرسم مضلع.

Canvas captcha = new Canvas();
captcha.setFile("path/to/captcha.jpg");
captcha.setPreviousId(0);
captcha.setCanSkip(false);
captcha.setLang("en");
captcha.setHintImg(new File("path/to/hint.jpg"));
captcha.setHintText("Draw around apple");
clickCaptcha

ترجع طريقة ClickCaptcha إحداثيات نقاط على صورة CAPTCHA. يمكن استخدامها إذا كنت بحاجة للنقر على نقاط محددة في الصورة.

Coordinates captcha = new Coordinates();
captcha.setFile("path/to/captcha.jpg");
captcha.setLang("en");
captcha.setHintImg(new File("path/to/hint.jpg"));
captcha.setHintText("Select all images with an Orange");
rotateCaptcha

يمكن استخدام هذه الطريقة لحل CAPTCHA تطلب تدوير كائن. تُستخدم غالبًا لتجاوز FunCaptcha. تُرجع زاوية التدوير.

Rotate captcha = new Rotate();
captcha.setFile("path/to/captcha.jpg");
captcha.setAngle(40);
captcha.setLang("en");
captcha.setHintImg(new File("path/to/hint.jpg"));
captcha.setHintText("Put the images in the correct way up");

طرق أخرى

طرق إضافية صالحة تُستخدم أثناء عمل السكربتات الرئيسية

send / getResult

يمكن استخدام هذه الطرق لإرسال CAPTCHA يدويًا واستطلاع الإجابة.

String captchaId = solver.send(captcha);

Thread.sleep(20 * 1000);

String code = solver.getResult(captchaId);

balance

استخدم هذه الطريقة للحصول على رصيد حسابك.

double balance = solver.balance();

report

استخدم هذه الطريقة للإبلاغ عن إجابة CAPTCHA جيدة أو سيئة.

solver.report(captcha.getId(), true); // captcha solved correctly
solver.report(captcha.getId(), false); // captcha solved incorrectly

معالجة الأخطاء

احتمالات الأخطاء القياسية التي يعيدها النظام عند معالجة الطلبات

في حال حدوث خطأ، يرمي حلّال CAPTCHA استثناءً. من المهم التعامل مع هذه الحالات بشكل صحيح. نوصي باستخدام try/catch لمعالجة الاستثناءات.

try {
    solver.solve(captcha);
} catch (ValidationException e) {
    // invalid parameters passed
} catch (NetworkException e) {
    // network error occurred
} catch (ApiException e) {
    // api respond with error
} catch (TimeoutException e) {
    // captcha is not solved so far
}

لغات أخرى للتكامل مع API الخدمة