Skip to main content
W artykule przedstawiono sposób integracji API rozpoznawania obrazów Recaptcha2, które może zwrócić współrzędne małych obrazków do kliknięcia na podstawie treści wprowadzonej przez użytkownika oraz obrazu kodu Recaptcha2, co pozwala na zakończenie weryfikacji.

Proces aplikacji

Aby skorzystać z API rozpoznawania obrazów Recaptcha2, najpierw przejdź do konsoli Ace Data Cloud, aby uzyskać swój token API, który należy zachować na przyszłość. Jeśli nie jesteś zalogowany lub zarejestrowany, automatycznie zostaniesz przekierowany na stronę logowania, aby zarejestrować się i zalogować, a po zakończeniu procesu wrócisz na bieżącą stronę. Jeden token API wystarczy do korzystania ze wszystkich usług platformy, nie ma potrzeby składania osobnych wniosków dla każdej usługi. Przy pierwszym wniosku przyznawana jest darmowa kwota, aby móc skorzystać z usługi; w przypadku niewystarczającego salda można doładować saldo ogólne w konsoli.
📘 Pełna dokumentacja: API rozpoznawania obrazów Recaptcha2 →

Podstawowe użycie

Najpierw zapoznaj się z podstawowym sposobem użycia. Musimy przechwycić obraz kodu Recaptcha2 z witryny, przykładowy URL witryny to: https://www.google.com/recaptcha/api2/demo, a poniżej przedstawiono konkretną stronę:

Musimy kliknąć pole wyboru kodu weryfikacyjnego, aby pojawił się obraz kodu weryfikacyjnego. W powyższym obrazie żółta strzałka wskazuje fragment tekstu, który jest wartością question w dalszej części. Najpierw musimy przekazać prosty parametr image, który jest konkretnym obrazem kodu Recaptcha2, wskazanym przez czerwoną strzałkę na powyższym obrazie. Obraz musi być również skalowany do standardowego rozmiaru (100x100, 300x300, 450x450), aby usługa mogła określić typ obrazu. Kompresję obrazu należy wykonać samodzielnie, w artykule polecamy stronę do kompresji, na której można dostosować rozmiar i wagę obrazu, a wynik kompresji przedstawiono na poniższym obrazie: Należy również wprowadzić parametry związane z treścią rozpoznawania obrazu kodu weryfikacyjnego question. Poniżej przedstawiamy tabelę z przykładowymi treściami, które mogą być użyte jako odniesienie:

Tabela treści w języku chińskim

Tabela treści w języku angielskim

Z powyższego tekstu wynika, że parametr question powinien być ustawiony na odpowiadający hydrantowi pożarnemu /m/01pns0, a konkretna treść wygląda następująco:

Możemy zauważyć, że ustawiliśmy nagłówki żądania, w tym:
  • accept: format odpowiedzi, który chcemy otrzymać, tutaj wpisujemy application/json, co oznacza format JSON.
  • authorization: klucz do wywołania API, po złożeniu wniosku można go bezpośrednio wybrać z rozwijanej listy.
Dodatkowo ustawiono ciało żądania, które obejmuje:
  • image: obraz kodu weryfikacyjnego zakodowany w Base64.
  • question: identyfikator pytania, proszę sprawdzić tabelę, zaczyna się od /m/.
Po dokonaniu wyboru można zauważyć, że po prawej stronie wygenerowano odpowiedni kod, jak pokazano na poniższym obrazie:

Kliknij przycisk „Try”, aby przeprowadzić test, jak pokazano na powyższym obrazie, a otrzymamy następujący wynik:
Wynik zwraca wiele pól, które są opisane poniżej:
  • solution, wynik weryfikacji po przetworzeniu zadania z obrazem kodu Recaptcha2.
    • size, rozmiar obrazu kodu Recaptcha2.
    • label, treść rozpoznana na obrazie kodu Recaptcha2.
    • confidences, poziom pewności rozpoznania obszarów na obrazie kodu Recaptcha2, obszary zaczynają się od 0.
    • objects, obszary, które spełniają warunki rozpoznania na obrazie kodu Recaptcha2, obszary zaczynają się od 0.
    • type, typ zadania z obrazem kodu Recaptcha2, w przypadku wielu obszarów jest to multi.
  • started_at, finished_at: czas rozpoczęcia przetwarzania i uzyskania wyniku dla tego żądania, znacznik czasu Unix (sekundy, liczba zmiennoprzecinkowa).
  • elapsed: całkowity czas przetwarzania (sekundy).
Możemy zauważyć, że otrzymaliśmy wynik weryfikacji przetworzonego obrazu kodu Recaptcha2. Najpierw dzielimy obraz kodu weryfikacyjnego na obszary, jak pokazano na poniższym obrazie:

Możemy zauważyć, że obszary zaczynają się od 0, a z wyniku objects otrzymaliśmy 2, 5, 7, więc wystarczy, że zasymulujemy kliknięcie w te trzy obszary, aby przejść weryfikację. Jeśli chcesz wygenerować odpowiedni kod do integracji, możesz go bezpośrednio skopiować, na przykład kod CURL wygląda następująco:
Kod do integracji w Pythonie wygląda następująco:

Tryb asynchroniczny (async)

Domyślnie API działa w trybie synchronicznym: jedno żądanie będzie czekać, aż przetwarzanie wyniku rozpoznawania zostanie zakończone, zanim zwróci odpowiedź. Jeśli wykonujesz rotację wielu rozwiązań (multi-solver rotation) i chcesz „natychmiast otrzymać task_id po złożeniu zadania, a następnie przejść do innych rozwiązań, wracając później po wyniki”, możesz przekazać async: true w treści żądania. Po przekazaniu async: true, interfejs natychmiast zwróci task_id, nie blokując oczekiwania:
Aby aktywnie sprawdzić postęp, możesz użyć task_id do zapytania POST /captcha/tasks (zaleca się co 3-5 sekund). Ten interfejs nie uruchomi ani nie przyspieszy przetwarzania zadań; nawet jeśli nie zapytasz, stracisz połączenie lub wyjdziesz z klienta, serwer nadal będzie przetwarzać:
W trakcie przetwarzania zwróci status: processing:
Po zakończeniu przetwarzania zwróci status: ready oraz wynik rozpoznawania solution (struktura pól jest całkowicie zgodna z trybem synchronicznym):
Opis rozliczeń: w trybie asynchronicznym, tworzenie zadań i odczytywanie statusu „w trakcie przetwarzania” nie są obciążane; opłata jest naliczana tylko przy pierwszym odczycie pomyślnego wyniku (zgodnie z istniejącym zachowaniem i cenami w trybie synchronicznym). Serwer samodzielnie przyspiesza przetwarzanie zadań, ale nie nalicza opłat, gdy zadanie zakończy się w tle. Zadanie, które nie zakończy się pomyślnie w ciągu 120 sekund, zakończy się jako HTTP 504 timeout, bez opłat. /captcha/tasks nie odpowiada za przyspieszanie zadań.

Obsługa błędów

Podczas wywoływania API, jeśli napotkasz błąd, API zwróci odpowiedni kod błędu i informacje. Na przykład:
  • 400 token_mismatched: Złe żądanie, prawdopodobnie z powodu brakujących lub nieprawidłowych parametrów.
  • 400 api_not_implemented: Złe żądanie, prawdopodobnie z powodu brakujących lub nieprawidłowych parametrów.
  • 401 invalid_token: Nieautoryzowany, nieprawidłowy lub brakujący token autoryzacyjny.
  • 429 too_many_requests: Zbyt wiele żądań, przekroczyłeś limit.
  • 500 api_error: Błąd wewnętrzny serwera, coś poszło nie tak na serwerze.

Przykład odpowiedzi błędu

Wnioski

Dzięki temu dokumentowi zrozumiałeś, jak używać API rozpoznawania obrazów Recaptcha2, aby umożliwić użytkownikom wprowadzenie treści do rozpoznania oraz obrazów captcha Recaptcha2, a na końcu zwrócić współrzędne małych obrazków, które należy kliknąć, aby zakończyć weryfikację. Mamy nadzieję, że ten dokument pomoże Ci lepiej zintegrować i korzystać z tego API. W razie jakichkolwiek pytań, skontaktuj się z naszym zespołem wsparcia technicznego.