Przejdź do głównej treści
Niniejszy dokument przedstawia 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 wprowadzonych przez użytkownika oraz obrazu kodu Recaptcha2, co pozwala na zakończenie weryfikacji.

Proces aplikacji

Aby skorzystać z API, należy najpierw przejść do odpowiedniej strony API rozpoznawania obrazów Recaptcha2 i złożyć wniosek o odpowiednią usługę. Po wejściu na stronę, kliknij przycisk „Acquire”, jak pokazano na poniższym obrazku: Jeśli nie jesteś zalogowany lub zarejestrowany, automatycznie zostaniesz przekierowany na stronę logowania, aby zarejestrować się i zalogować. Po zalogowaniu lub rejestracji zostaniesz automatycznie przekierowany z powrotem na bieżącą stronę. Podczas pierwszej aplikacji otrzymasz darmowy limit, który pozwala na bezpłatne korzystanie z tego API.

Podstawowe użycie

Najpierw zapoznajmy 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 konkretny widok strony przedstawiony jest na poniższym obrazku:

Musimy kliknąć pole wyboru kodu, aby pojawił się obraz kodu, a w powyższym obrazku żół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 obrazku. Obraz musi być również skalowany do standardowego rozmiaru (100x100, 300x300, 450x450), aby usługa mogła określić typ obrazu. Kompresję obrazu musisz wykonać samodzielnie, w tym dokumencie polecamy stronę do kompresji, na której możesz dostosować rozmiar i wielkość obrazu, a wynik kompresji przedstawiony jest na poniższym obrazku: Należy również wprowadzić parametry treści rozpoznawania związane z obrazem kodu question, poniżej przedstawiamy tabelę z przykładowymi treściami:

Tabela treści w języku chińskim

{
  "/m/0pg52": "出租车",
  "/m/01bjv": "巴士",
  "/m/02yvhj": "校车",
  "/m/04_sv": "摩托车",
  "/m/013xlm": "拖拉机",
  "/m/01jk_4": "烟囱",
  "/m/014xcs": "人行横道",
  "/m/015qff": "红绿灯",
  "/m/0199g": "自行车",
  "/m/015qbp": "停车计价表",
  "/m/0k4j": "汽车",
  "/m/015kr": "桥",
  "/m/019jd": "船",
  "/m/0cdl1": "棕榈树",
  "/m/09d_r": "山",
  "/m/01pns0": "消防栓",
  "/m/01lynh": "楼梯"
}

Tabela treści w języku angielskim

{
  "/m/0pg52": "taxis",
  "/m/01bjv": "bus",
  "/m/02yvhj": "school bus",
  "/m/04_sv": "motorcycles",
  "/m/013xlm": "tractors",
  "/m/01jk_4": "chimneys",
  "/m/014xcs": "crosswalks", // pedestrian crossings  również jest poprawne
  "/m/015qff": "traffic lights",
  "/m/0199g": "bicycles",
  "/m/015qbp": "parking meters",
  "/m/0k4j": "cars",
  "/m/015kr": "bridges",
  "/m/019jd": "boats",
  "/m/0cdl1": "palm trees",
  "/m/09d_r": "mountains or hills",
  "/m/01pns0": "fire hydrant",
  "/m/01lynh": "stairs"
}
Z powyższego tekstu wynika, że parametr question powinien być ustawiony na odpowiadający hydrantowi przeciwpożarowemu /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 API do wywołania, po złożeniu wniosku można go bezpośrednio wybrać z rozwijanej listy.
Dodatkowo ustawiliśmy ciało żądania, które obejmuje:
  • image: obraz kodu w formacie Base64.
  • question: ID pytania, proszę sprawdzić tabelę, zaczyna się od /m/.
Po dokonaniu wyboru, można zauważyć, że po prawej stronie wygenerowany został odpowiedni kod, jak pokazano na poniższym obrazku:

Kliknij przycisk „Try”, aby przeprowadzić test, jak pokazano na powyższym obrazku, a otrzymamy następujący wynik:
{
  "solution": {
    "size": 300,
    "label": "/m/01pns0",
    "confidences": [
      0,
      0.0007,
      1,
      0.0003,
      0.0046,
      1,
      0,
      1,
      0
    ],
    "objects": [
      2,
      5,
      7
    ],
    "type": "multi"
  }
}
Wynik zwrotny zawiera 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ą kryteria 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.
Możemy zauważyć, że otrzymaliśmy wynik weryfikacji obrazu kodu Recaptcha2, najpierw dzielimy obraz kodu na obszary, jak pokazano na poniższym obrazku:

Możemy zauważyć, że obszary zaczynają się od 0, a z wyniku objects otrzymaliśmy 2, 5, 7, co oznacza, że musimy zasymulować kliknięcie w te trzy obszary, aby przejść weryfikację. Jeśli chcesz wygenerować odpowiedni kod integracyjny, możesz go bezpośrednio skopiować, na przykład kod CURL wygląda następująco:
curl -X POST 'https://api.acedata.cloud/captcha/recognition/recaptcha2' \
-H 'accept: application/json' \
-H 'authorization: Bearer {token}' \
-H 'content-type: application/json' \
-d '{
  "question": "/m/01pns0",
  "image": "iVBORw0KGgoAAAANSUhEUgAAASoAAAEsCAIAAAD7AWllAAAAAX..."
}'
Kod integracyjny w Pythonie wygląda następująco:
import requests

url = "https://api.acedata.cloud/captcha/recognition/recaptcha2"

headers = {
    "accept": "application/json",
    "authorization": "Bearer {token}",
    "content-type": "application/json"
}

payload = {
    "question": "/m/01pns0",
    "image": "iVBORw0KGgoAAAANSUhEUgAAASoAAAEsCAIAAAD7AWllAAAAAX..."
}

response = requests.post(url, json=payload, headers=headers)
print(response.text)

Obsługa błędów

Podczas wywoływania API, jeśli wystąpi 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 szybkości.
  • 500 api_error:Błąd wewnętrzny serwera, coś poszło nie tak na serwerze.

Przykład odpowiedzi błędu

{
  "success": false,
  "error": {
    "code": "api_error",
    "message": "fetch failed"
  },
  "trace_id": "2cf86e86-22a4-46e1-ac2f-032c0f2a4e89"
}

Wnioski

Dzięki temu dokumentowi zrozumiałeś, jak używać API rozpoznawania obrazów Recaptcha2, aby umożliwić użytkownikom wprowadzenie rozpoznawanej treści oraz obrazu kodu Recaptcha2, a na końcu zwrócić współrzędne małego obrazu, który 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.