> ## Documentation Index
> Fetch the complete documentation index at: https://docs.acedata.cloud/llms.txt
> Use this file to discover all available pages before exploring further.

# Opis integracji API rozpoznawania protokołu Recaptcha2

> Recaptcha verification code recognition service API guide - Ace Data Cloud

W tym artykule przedstawimy sposób integracji API rozpoznawania protokołu Recaptcha2, które pozwala użytkownikom na automatyczne dekodowanie w tle bez konieczności rozpoznawania i klikania na obrazy kodów weryfikacyjnych Recaptcha2, wystarczy przesłać klucz witryny.

## Proces aplikacji

Aby skorzystać z API rozpoznawania protokołu Recaptcha2, najpierw przejdź do [konsoli Ace Data Cloud](https://platform.acedata.cloud/console/applications), aby uzyskać swój token API, który należy zachować na przyszłość.

![](https://cdn.acedata.cloud/5hmkdg.jpg)

Jeśli nie jesteś zalogowany lub zarejestrowany, automatycznie zostaniesz przekierowany na stronę logowania, aby zarejestrować się i zalogować, a po zakończeniu zostaniesz automatycznie przekierowany z powrotem 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 otrzymasz darmowy limit, aby móc skorzystać z usługi za darmo; w przypadku niewystarczającego limitu możesz doładować saldo ogólne w [konsoli](https://platform.acedata.cloud/console/coin).

> 📘 Pełna dokumentacja: [API rozpoznawania protokołu Recaptcha2 →](https://platform.acedata.cloud/documents/captcha-token-recaptcha2)

## Podstawowe użycie

Najpierw zapoznaj się z podstawowym sposobem użycia, polegającym na wprowadzeniu URL witryny, która wymaga przetworzenia kodu weryfikacyjnego, aby uzyskać przetworzony wynik. Najpierw musisz przekazać pole `website_url`, nasza przykładowa witryna to: `https://www.google.com/recaptcha/api2/demo`, musimy uzyskać `website_key` na stronie `website_url`, najpierw otwórz tę stronę, naciśnij F12, aby przejść do konsoli, a następnie w zakładce Elementy wykonaj globalne wyszukiwanie `recaptcha-demo`, uzyskamy poniższy wynik:

<p>
  <img src="https://cdn.acedata.cloud/hvx41c.png" width="500" className="m-auto" />
</p>

String odpowiadający `data-sitekey` to wartość `website_key`, poniżej znajdują się konkretne wyniki parametrów:

<p>
  <img src="https://cdn.acedata.cloud/8oowyw.png" width="500" className="m-auto" />
</p>

Możemy zobaczyć, że ustawiliśmy nagłówki żądania, w tym:

* `accept`: jakiego formatu odpowiedzi oczekujesz, tutaj wpisujemy `application/json`, czyli 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, w tym:

* `website_url`: URL witryny, która wymaga przetworzenia kodu weryfikacyjnego.
* `website_key`: identyfikator klucza witryny w Recaptcha2.

Po dokonaniu wyboru można zauważyć, że po prawej stronie wygenerowano odpowiedni kod, jak pokazano na rysunku:

<p>
  <img src="https://cdn.acedata.cloud/pudujk.png" width="500" className="m-auto" />
</p>

Kliknij przycisk „Try”, aby przeprowadzić test, jak pokazano na powyższym obrazku, tutaj uzyskaliśmy następujący wynik:

```json theme={null}
{
  "token": "03AFcWeA5kjJyDQ9S1a9UYimR6nuxnpEnAs5x2Pixao0dXZhMBjiR2MwAwN7K3NXik02Vl--cEmCwxDuf7mNBMbGlfLHb5948cvCdk1jnp_mjbWzT9ZyxzSnny52TiWVZo1xvTTad5QIQz9iRfJrjcM1BkBj5OpwT4mRVK-Yoz8Q8m5MlXEwQ5Zyp0Lxh_L-32EkdwyyCIOlG-Q1wJ-lR7utNB6E8MCrtTM1tox75-3KPvMNHbTjvqSf1l3FO_bASk39mtleI_NjThAPHCBL__cHu2wJxRYITYxqYgCu3FYcmC3OfcUJJEmgg4KEpQTIjo1X2N1m81obHWKrOrrNqfQvELnXrhHU4gVcFwpaMladoLysqOrDqHsYxNeUTp5YiEu6_Xl2eC6r9IKTbeddIf5QXQML_OILc4Ee3-vEUepmelWq7GE4wOKf8zQ8Xfz1MbJM3daEmiVEMFs4EQsjGgioPeyQUjiJT5U2sZfiJbgyGdUVletCBn4abnSLBYVI-rKKlETKu4IQVGCmh_hNn7cnkX3E5p_Kqu3gifOYHSbCu2ctuaPe9G3M8XxbQ57b_UFgg1MMToSAcZDL2NWtL4yPag5Y4lCnpmfrGOwvX-QFF0JF-DrbRn_Opv52JrLD9GrfGxo99kiucQIZkAzpWLV3Kkhtep2DB8OiA4rSb5R6xT4nNoawg1BM2cM5jazL-1U6LzSs9Hq1XWV1nwj-8-mTDwHmBYMI6fmSfl1-bOX0uHGgWHnzEAW2mw4EErVVUTUJJcUr_LZ2woRkexk-CPQTtdlHmQHbt_1FsOzfGtnXY87xIbhCJReVyv-_HQ48d9xCDuQ-JnNjX98NfDsfvpxe9Zar_LjcQCBNtvHgKH_JkniBDiWrZBAoDJIonDjJ6X1mmWLyPDxYmBR6O7QkxR3DxdDvZQRaZnfD-_sA9T9JEkYWHdBlpumEBq9wVs8dSm60TiRAOZU1ZLjieGP5vI5_aV-ct5SwOmWHF-VQkJUfNZ33MoEkZW2Rvh7_ERbI_PRS_u65BCkhuOh8fmQcxJU5YACpoLXXkwGM8qmSB1yBBeOQL-wWUfo8GREpZIu1oGQVQ8k3FcNJzFQQAYcLBWfGn-8qMxfAJEd356lJYIUuU1CY2rhR1u_7C1R_bH0WTifDqYLCRGzn-tzqBOXybrkOs_KURL-gT6wAoZRpUvBBAEa1mRg5gxap0pOkpdf7MPb5PsWVME7E3stvordioyN2tdLKr6VC-0kiQZD1WzykazPZzkl302Y_kpQ2vKPawWVWmNhy5Vm_cwT6afOAuSHnU1aYtFNvEDpBcXXH2YcqS-sBnMb3KlO5KpfZSp-tGzvjds46ajyoD7bHGzxvCx9EplICVrGWQ8gRYe2MCVJ3OocE-VK7PxI1iKXJK_LBl4hQR7uUKaDVEbmBYMcgS1z5YmXbJV89yjrU-u5ncTn5JkJgoSdOvMi8l2fsZIl2wYi-hWgQjP6LLI6M6wr8AhyiSZBQ34adR07niQPzLfX5Ntwr_8NyMg69bWKlLXknv8O2KznYXQQwsWA3okJCGwhfJkp35QnkHsprTN9LD48cwg8zP7a1mgM-2WHuZmoCpqg1XJgT_tPjc7X9kCQt8e3YirW6IJs-CdBUDkbp12FCukip48mDz7SOWjnLruoNABfo_zCurdOQY_tfcWe4g_ef0y_vey3hLGvxuay_ZMGzDLIo-7_WEp7jU09YKqWOZV7cSxDPm65M1v69ND6b5awsopISEe7E3hKMGrVSonRa9_bkiQ2fuPa5-xitNr4IMxwWMepqDk54v_cyVzUBdAAq8V8w3VHvV4-tjTXFqp0L54RBhJ_EaCXO7nwNbVLqCirfDpKRASfkYoaqsoXbwFMpfFrh-KzDZVIuU6D-VBF5k50ufGPnoXTA8kIF0GjAepW5SCxYupoQos4La6W2f--cl4WAl8oKhSpFtRpb1CNMKmtD7_BJrPDxpnXiA-ENBFe8Y4EOoG5uavVeQl6YftHej52JOTKurOqD-NE-UDBLInNuOo0ayCdV1w8XDAnORgxbkYP65GO5FdytK4zrDVNQEK26D54e0xLpDqUG8UUmUT_VNj9UY78WyWGPTXiGwYAA2_iVUKbT8-phHLDDqeoG3Q5iTP7RUpaW49JmM-tlSeczqqyy9Wc8iZh2Cf9veRJ7HiUeIEMeKGnqD7E9nXxcjC75GzIo477c83U7QN_1QXQjWuAr0C3KFq2W7dJmO08pQ0Z13dG7tz4Ilg1Bc3LIcNgeJLkCTZYpDpn7JpeZRbe6fqvmbqWPQ"
}
```

Wynik zawiera wiele pól, które są opisane poniżej:

* `token`, wynik weryfikacji po przetworzeniu zadania Recaptcha2.

Możemy zobaczyć, że otrzymaliśmy wynik weryfikacji po przetworzeniu Recaptcha2, który możemy wykorzystać do POST lub symulacji przesyłania do docelowej strony, jednorazowego użytku, ważny przez 120s, zaleca się użycie w ciągu 60s. Następnie dostarczymy fragment kodu w Pythonie, aby przesłać przetworzony token do docelowej strony w celu przejścia przez Recaptcha2.

Najpierw musimy dowiedzieć się, jak strona wysyła żądanie POST, abyśmy mogli wprowadzić wygenerowany token. Musimy najpierw otworzyć konsolę F12, a następnie ręcznie przejść przez proces, a na końcu zobaczymy, że strona wysłała żądanie POST. Musimy tylko sprawdzić konstrukcję tego żądania POST, a konkretny proces wygląda następująco:

* Najpierw ręcznie przejdź przez weryfikację, szczegóły przedstawione na poniższym obrazku:

<p>
  <img src="https://cdn.acedata.cloud/gwiflr.png" width="500" className="m-auto" />
</p>

* Następnie kliknij submit, aby obserwować zmiany w konsoli sieciowej, szczegóły przedstawione na poniższym obrazku:

<p>
  <img src="https://cdn.acedata.cloud/6hm5kj.png" width="500" className="m-auto" />
</p>

* Analizuj konstrukcję żądania POST, a na końcu możesz kliknąć prawym przyciskiem myszy na to żądanie, aby skopiować kod CURL, szczegóły przedstawione na poniższym obrazku:

<p>
  <img src="https://cdn.acedata.cloud/m7y35w.png" width="500" className="m-auto" />
</p>

Z analizy powyższego obrazu wynika, że URL żądania POST to: `https://www.google.com/recaptcha/api2/demo`, musimy jedynie przesłać parametr `g-recaptcha-response`, a następnie przetworzony token wprowadzić do poniższych danych, a konkretne kod CURL do weryfikacji tokena wygląda następująco:

```shell theme={null}
curl 'https://www.google.com/recaptcha/api2/demo' \
  --data-raw 'g-recaptcha-response={token}’
```

Kod Python do weryfikacji tokena wygląda następująco:

```python theme={null}
import requests

token = '{token}'

data = {
    'g-recaptcha-response': token,
}

response = requests.post('https://www.google.com/recaptcha/api2/demo', data=data)

if response.status_code:
    print(response.text)

```

Następnie uruchamiamy kod i obserwujemy, że konsola pokazuje taki wynik:

<p>
  <img src="https://cdn.acedata.cloud/ku22tk.png" width="500" className="m-auto" />
</p>

Na koniec przeszliśmy weryfikację protokołu Recaptcha2.

Dodatkowo, jeśli chcesz wygenerować odpowiedni kod do integracji, możesz po prostu skopiować wygenerowany kod, na przykład kod CURL wygląda następująco:

```shell theme={null}
curl -X POST 'https://api.acedata.cloud/captcha/token/recaptcha2' \
-H 'accept: application/json' \
-H 'authorization: Bearer {token}' \
-H 'content-type: application/json' \
-d '{
  "website_key": "6Le-wvkSAAAAAPBMRTvw0Q4Muexq9bi0DJwx_mJ-",
  "website_url": "https://www.google.com/recaptcha/api2/demo"
}'
```

Kod integracji w Pythonie wygląda następująco:

```python theme={null}
import requests

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

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

payload = {
    "website_key": "6Le-wvkSAAAAAPBMRTvw0Q4Muexq9bi0DJwx_mJ-",
    "website_url": "https://www.google.com/recaptcha/api2/demo"
}

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

## Tryb asynchroniczny (async)

Domyślnie API działa w trybie synchronicznym: jedno żądanie będzie czekać, aż przetwarzanie tokena zostanie zakończone, zanim zwróci wynik. Jeśli wykonujesz rotację wielu rozwiązań (multi-solver rotation) i chcesz „natychmiast uzyskać task\_id po złożeniu zadania, a następnie przejść do innych rozwiązań, a później wrócić po wynik”, możesz przekazać `async: true` w ciele żądania.

Po przekazaniu `async: true`, interfejs natychmiast zwróci `task_id`, a nie będzie blokować oczekiwania:

```shell theme={null}
curl -X POST 'https://api.acedata.cloud/captcha/token/recaptcha2' \
-H 'accept: application/json' \
-H 'authorization: Bearer {token}' \
-H 'content-type: application/json' \
-d '{
  "website_key": "6Le-wvkSAAAAAPBMRTvw0Q4Muexq9bi0DJwx_mJ-",
  "website_url": "https://www.google.com/recaptcha/api2/demo",
  "async": true
}'
```

```json theme={null}
{
  "success": true,
  "task_id": "61138bb6-19aa-11ec-a9c8-0242ac110002",
  "trace_id": "2efa9340-b21b-4e26-9e14-4aac95f343ab",
  "status": "processing"
}
```

Następnie użyj tego `task_id`, aby cyklicznie sprawdzać `POST /captcha/tasks` (zaleca się co 3-5 sekund), aby uzyskać wynik:

```shell theme={null}
curl -X POST 'https://api.acedata.cloud/captcha/tasks' \
-H 'accept: application/json' \
-H 'authorization: Bearer {token}' \
-H 'content-type: application/json' \
-d '{
  "task_id": "61138bb6-19aa-11ec-a9c8-0242ac110002"
}'
```

W trakcie przetwarzania zwróci `status: processing`:

```json theme={null}
{ "success": true, "task_id": "61138bb6-19aa-11ec-a9c8-0242ac110002", "status": "processing" }
```

Po zakończeniu przetwarzania zwróci `status: ready` oraz token:

```json theme={null}
{
  "success": true,
  "task_id": "61138bb6-19aa-11ec-a9c8-0242ac110002",
  "status": "ready",
  "token": "03AFcWeA5kjJyDQ9S1a9UYimR6nuxnpEnAs5x2Pixao0dXZhMB......"
}
```

Opis rozliczeń: w trybie asynchronicznym, tworzenie zadań i cykliczne sprawdzanie „w trakcie przetwarzania” nie jest obciążane kosztami; **opłata jest naliczana tylko raz, gdy uzyskasz wynik** (w tej samej cenie co w trybie synchronicznym). Dlatego anulowanie zadań, które jeszcze się nie zakończyły, nie generuje kosztów. `/captcha/tasks` jest uniwersalne dla wszystkich interfejsów CAPTCHA (token i seria rozpoznawania), wystarczy użyć tego samego `task_id` do cyklicznego sprawdzania.

## 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ń, przekroczono limit.
* `500 api_error`: Błąd wewnętrzny serwera, coś poszło nie tak na serwerze.

### Przykład odpowiedzi błędu

```json theme={null}
{
  "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 do rozpoznawania protokołu Recaptcha2, aby użytkownicy nie musieli rozpoznawać i klikać na obrazy CAPTCHA Recaptcha2, wystarczy przesłać klucz witryny, aby zrealizować automatyczne dekodowanie w tle i 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.
