Omiń captcha w JAVA

Omiń captcha w JAVA

Zaimplementuj bibliotekę Java do szybkiego ominięcia weryfikacji captcha. Proste API do rozwiązywania captcha.

Pakiet Java do łatwej integracji z interfejsem API usługi rozwiązywania captcha 2Captcha w celu ominięcia reCAPTCHA, hCaptcha, funcage_test_test_solve i rozwiąż inne captcha

Szybki start

Instalacja

Pakiet skryptu można zainstalować za pomocą instalatora pakietu lub ręcznie

Maven Central Repository

Artefakt 2captcha-java jest dostępny w Maven Central

Zapraszamy do zapoznania się z naszym repozytorium GitHub, w którym można znaleźć biblioteki i moduły dla łatwa integracja z naszym API.

Konfiguracja

Opis wszystkich niezbędnych parametrów do konfiguracji zainstalowanego pakietu

Instancję klasy TwoCaptcha można utworzyć w następujący sposób:

TwoCaptcha solver = new TwoCaptcha('YOUR_API_KEY');

Masz również możliwość dostosowania niektórych opcji dla tworzonej instancji:

solver.setSoftId(123);
solver.setCallback("https://your.site/result-receiver");
solver.setDefaultTimeout(120);
solver.setRecaptchaTimeout(600);
solver.setPollingInterval(10);
Opcje instancji TwoCaptcha
OptionDefault valueDescription
softId-Twój identyfikator oprogramowania uzyskany po opublikowaniu w 2Captcha software catalog
callback-Adres URL Twojego serwera WWW, który otrzymuje wynik rozpoznawania captcha. Adres URL należy najpierw zarejestrować w ustawieniach pingback na swoim koncie
defaultTimeout120Limit czasu odpytywania w sekundach dla wszystkich typów captcha z wyjątkiem reCAPTCHA. Definiuje jak długo moduł próbuje uzyskać odpowiedź z punktu końcowego API res.php
recaptchaTimeout600Limit czasu odpytywania reCAPTCHA w sekundach. Definiuje jak długo moduł próbuje uzyskać odpowiedź z punktu końcowego API res.php
pollingInterval10Odstęp w sekundach między żądaniami do punktu końcowego API res.php, ustawianie wartości mniejszych niż 5 sekund nie jest zalecane
WAŻNE: po zdefiniowaniu callback dla instancji TwoCaptcha wszystkie metody zwracają tylko identyfikator captcha i NIE odpytuj interfejsu API, aby uzyskać wynik. Wynik zostanie wysłany na adres URL wywołania zwrotnego. Aby uzyskać odpowiedź ręcznie, użyj metody getResult

Rozwiąż test captcha

Gdy przesyłasz obraz captcha, użycie captcha może zapewnić dodatkowe opcje, które pomogą pracownikom 2Captcha w prawidłowym rozwiązaniu problemu

Opcje captcha
OpcjaDomyślna wartośćOpis
numeric0Określa, czy captcha zawiera symbole numeryczne lub inne zobacz więcej informacji w dokumentacji interfejsu API
minLength0minimalna długość odpowiedzi
maxLength0maksymalna długość odpowiedzi
phrase0określa, czy odpowiedź zawiera wiele słów, czy nie
caseSensitive0określa, czy w odpowiedzi jest rozróżniana wielkość liter
calc0definiuje captcha wymaga obliczeń
lang-definiuje język captcha, zobacz listę obsługiwanych języków
hintImg-obrazek z podpowiedzią pokazywany pracownikom za pomocą captcha
hintText-podpowiedź lub tekst zadania pokazywany pracownikom za pomocą captcha

Podstawowy przykład

Poniższy przykład pokazuje podstawowy przykład wywołania solvera z obsługą błędów.

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

Aby ominąć normalne captcha (zniekształcony tekst na obrazie), użyj następującej metody. Ta metoda może być również używana do rozpoznawania dowolnego tekstu na obrazie.

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

Ta metoda może służyć do ominięcia captcha, która wymaga odpowiedzi na pytanie podane w postaci zwykłego tekstu.

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

Użyj tej metody, aby rozwiązać reCAPTCHA V2 i uzyskać token, aby ominąć ochronę.

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

Ta metoda zapewnia solver reCAPTCHA V3 i zwraca 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

Metoda rozwiązywania FunCaptcha (Arkoselabs). Zwraca 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

Metoda rozwiązywania GeeTest puzzle captcha. Zwraca zestaw tokenów w formacie 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");
hCaptcha

Użyj tej metody, aby rozwiązać wyzwanie hCaptcha. Zwraca token, aby ominąć captcha.

HCaptcha captcha = new HCaptcha();
captcha.setSiteKey("10000000-ffff-ffff-ffff-000000000001");
captcha.setUrl("https://www.site.com/page/");
captcha.setProxy("HTTPS", "login:password@IP_address:PORT");
keyCaptcha

Oparta na tokenach metoda rozwiązywania KeyCaptcha.

KeyCaptcha captcha = new KeyCaptcha();
captcha.setUserId(10);
captcha.setSessionId("493e52c37c10c2bcdf4a00cbc9ccd1e8");
captcha.setWebServerSign("9006dc725760858e4c0715b835472f22");
captcha.setWebServerSign2("2ca3abe86d90c6142d5571db98af6714");
captcha.setUrl("https://www.keycaptcha.ru/demo-magnetic/");
captcha.setProxy("HTTPS", "login:password@IP_address:PORT");
capy

Oparta na tokenach metoda ominięcia 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

Metoda siatki jest pierwotnie nazywana starą metodą reCAPTCHA V2. Metodę można wykorzystać do pominięcia dowolnego typu captcha, w którym można zastosować siatkę do obrazu i kliknąć określone pola siatki. Zwraca numery pudełek.

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

Metodę Canvas można zastosować, gdy trzeba narysować linię wokół obiektu na obrazie. Zwraca zestaw współrzędnych punktów do narysowania wielokąta.

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

Metoda ClickCaptcha zwraca współrzędne punktów na obrazie captcha. Może być użyty, jeśli musisz kliknąć w określone punkty na obrazie.

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

Tej metody można użyć do rozwiązania captcha, które prosi o obrócenie obiektu. Używany głównie do ominięcia FunCaptcha. Zwraca kąt obrotu.

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");

Inne metody

Dodatkowe poprawne metody stosowane podczas pracy nad głównymi skryptami

send / getResult

Te metody mogą być używane do ręcznego przesyłania captcha i odpytywania odpowiedzi.

String captchaId = solver.send(captcha);

Thread.sleep(20 * 1000);

String code = solver.getResult(captchaId);

balance

Użyj tej metody, aby uzyskać saldo swojego konta.

double balance = solver.balance();

report

Użyj tej metody, aby zgłosić dobrą lub złą odpowiedź captcha.

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

Obsługa błędów

Możliwe warianty standardowych błędów zwracanych przez usługę podczas przetwarzania żądań

W przypadku błędu solver captcha zgłasza wyjątek. Ważne jest, aby właściwie obsługiwać takie przypadki. Zalecamy użycie try/catch do obsługi wyjątków.

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
}

Inne języki do integracji z API usługi