# reCAPTCHA için token gönderme

> reCAPTCHA token'ını (gRecaptchaResponse) aldıktan sonra ne yapılır: çalışma mantığı, doğrudan istekle gönderme (g-recaptcha-response alanı), tarayıcıda doldurup callback fonksiyonunu çağırma ve Google demo sayfası için eksiksiz Python örnekleri.

Source: https://docs.yescaptcha.com/tr/guides/submit-recaptcha-token/ · Last verified: 2026-10-15

> This page was machine-translated from the Chinese version. If anything differs, the Chinese version prevails: https://docs.yescaptcha.com/zh/guides/submit-recaptcha-token/

YesCaptcha’nın döndürdüğü `gRecaptchaResponse`, CAPTCHA’yı tamamladıktan sonra Google’ın sayfaya verdiği sonuçla aynı değerdir. Bunu aldıktan sonra, tıpkı bir tarayıcı gibi **hedef siteye** göndermeniz gerekir (Google’a veya YesCaptcha’ya değil); site token’ı Google ile doğrular ve geçişe izin verir. İki yol vardır: isteği doğrudan kendiniz göndermek veya gerçek bir tarayıcıda token’ı sayfaya yazıp göndermek.

## Çalışma mantığı

Normal akış:

1.  Sayfa reCAPTCHA’yı yükler ve kullanıcı doğrulamayı tamamlar;
2.  Google sayfaya bir token verir; sayfa bunu `g-recaptcha-response` metin kutusuna yazar (veya callback fonksiyonuna iletir);
3.  Kullanıcı formu gönderir, token form ile birlikte sitenin sunucusuna gider;
4.  Sitenin sunucusu token’ı Google ile doğrular, geçerliyse geçişe izin verir.

YesCaptcha ile 1. ve 2. adımları biz yaparız: `websiteURL` ve `websiteKey` ile bir görev oluşturur, token’ı alır ve 3. adımdan devam edersiniz.

> **Dikkat:** Token tek kullanımlıktır ve yaklaşık 120 saniye geçerlidir; aldıktan sonra 60 saniye içinde göndermeniz önerilir. Süresi dolmuş token’ları site kabul etmez.

## Yöntem 1: Doğrudan istekle gönderme (önerilir)

1.  Tarayıcıda bir kez normal şekilde işlem yapın: F12 ile Network panelini açın, CAPTCHA’yı tamamlayıp formu gönderin ve formu gönderen isteği bulun.
2.  İsteğin Payload (veya Form Data) bölümünde token’ı taşıyan alanı bulun; genellikle `g-recaptcha-response` adını taşır ve token `03A` ile başlar. Bazı siteler adı değiştirir, örneğin `grecaptcharesponse`, `captcha`.
3.  Programınızdan aynı isteği gönderin ve bu alanın değerini YesCaptcha’nın döndürdüğü token ile değiştirin. Diğer alanlar, Cookie’ler ve istek başlıkları da tarayıcıdakiyle aynı olmalıdır; siteler çoğunlukla bunları da kontrol eder.

Google demo sayfası için eksiksiz örnek: önce çözüm alınır, ardından token `g-recaptcha-response` alanıyla demo sayfasına geri gönderilir:

recaptcha_requests.py

```python
"""Solve reCAPTCHA v2 on Google's demo page and submit the token with plain HTTP (no browser).

Run:  pip install requests
      export YESCAPTCHA_CLIENT_KEY=your_client_key
      python recaptcha_requests.py
Each run creates one NoCaptchaTaskProxyless task (charged per the price list).
"""
import os
import time

import requests

CLIENT_KEY = os.environ["YESCAPTCHA_CLIENT_KEY"]
API = "https://api.yescaptcha.com"
WEBSITE_URL = "https://www.google.com/recaptcha/api2/demo"
WEBSITE_KEY = "6Le-wvkSAAAAAPBMRTvw0Q4Muexq9bi0DJwx_mJ-"

def call(method, payload):
    data = requests.post(f"{API}/{method}", json={"clientKey": CLIENT_KEY, **payload}, timeout=30).json()
    if data.get("errorId"):
        raise RuntimeError(f"{data.get('errorCode')}: {data.get('errorDescription')}")
    return data

def get_token():
    task = {"type": "NoCaptchaTaskProxyless", "websiteURL": WEBSITE_URL, "websiteKey": WEBSITE_KEY}
    task_id = call("createTask", {"task": task})["taskId"]
    for _ in range(36):  # poll every 5 seconds, for up to about 3 minutes
        time.sleep(5)
        result = call("getTaskResult", {"taskId": task_id})
        if result.get("status") == "ready":
            return result["solution"]["gRecaptchaResponse"]
    raise TimeoutError(task_id)

token = get_token()
print("token:", token[:40], "...")

# Submit the token the same way the browser does: the demo form posts the field
# "g-recaptcha-response" back to the page. Check your own site's request in DevTools > Network.
page = requests.post(WEBSITE_URL, data={"g-recaptcha-response": token}, timeout=30)
print("passed" if "Verification Success" in page.text else "not passed", page.status_code)
```

## Yöntem 2: Tarayıcıda doldurma (Selenium vb.)

Selenium, Playwright gibi araçlarla gerçek bir tarayıcıyı yönetirken:

1.  Sayfadan `data-sitekey` değerini okuyun, bununla görev oluşturup token’ı alın.
2.  Token’ı sayfadaki `g-recaptcha-response` metin kutusuna yazın.
3.  Sayfada bir callback fonksiyonu tanımlıysa (`data-callback="..."`), token’ı vererek çağırın; bazı sitelerde gönder düğmesi ancak callback çağrıldıktan sonra tıklanabilir hale gelir.
4.  Formu gönderin.

```js
// Step 2: write the token (run in the page)
document.getElementById('g-recaptcha-response').value = 'TOKEN';
// Step 3: call the callback if there is one, e.g. data-callback="onSuccess"
onSuccess('TOKEN');
```

Sayfada birden fazla reCAPTCHA varsa metin kutusunun id’si `g-recaptcha-response-1` gibi olabilir. Bu metin kutusunu bulamazsanız önce doğrulamayı elle bir kez tamamlayın, Elements panelinde `03A` araması yapın ve sonucun nereye yazıldığına bakın. Callback fonksiyonunun nasıl bulunacağı için bkz. [reCAPTCHA parametrelerini bulma](https://docs.yescaptcha.com/tr/guides/find-recaptcha-parameters.md).

Eksiksiz örnek (Selenium 4):

recaptcha_selenium.py

```python
"""Solve reCAPTCHA v2 on Google's demo page in a real browser with Selenium 4:
get a token from YesCaptcha, put it into the page, then submit the form.

Run:  pip install requests selenium
      export YESCAPTCHA_CLIENT_KEY=your_client_key
      python recaptcha_selenium.py
Each run creates one NoCaptchaTaskProxyless task (charged per the price list).
"""
import os
import time

import requests
from selenium import webdriver
from selenium.webdriver.common.by import By

CLIENT_KEY = os.environ["YESCAPTCHA_CLIENT_KEY"]
API = "https://api.yescaptcha.com"
WEBSITE_URL = "https://www.google.com/recaptcha/api2/demo"

def call(method, payload):
    data = requests.post(f"{API}/{method}", json={"clientKey": CLIENT_KEY, **payload}, timeout=30).json()
    if data.get("errorId"):
        raise RuntimeError(f"{data.get('errorCode')}: {data.get('errorDescription')}")
    return data

def get_token(website_url, website_key):
    task = {"type": "NoCaptchaTaskProxyless", "websiteURL": website_url, "websiteKey": website_key}
    task_id = call("createTask", {"task": task})["taskId"]
    for _ in range(36):
        time.sleep(5)
        result = call("getTaskResult", {"taskId": task_id})
        if result.get("status") == "ready":
            return result["solution"]["gRecaptchaResponse"]
    raise TimeoutError(task_id)

driver = webdriver.Chrome()  # Selenium 4 downloads a matching chromedriver automatically
try:
    driver.get(WEBSITE_URL)
    site_key = driver.find_element(By.CSS_SELECTOR, "[data-sitekey]").get_attribute("data-sitekey")
    token = get_token(WEBSITE_URL, site_key)

    # Put the token where reCAPTCHA keeps it ...
    driver.execute_script(
        "document.getElementById('g-recaptcha-response').value = arguments[0];", token
    )
    # ... and, if the page uses a callback (data-callback="..."), call it:
    callback = driver.find_element(By.CSS_SELECTOR, "[data-sitekey]").get_attribute("data-callback")
    if callback:
        driver.execute_script(f"window[{callback!r}](arguments[0]);", token)

    driver.find_element(By.ID, "recaptcha-demo-submit").click()
    time.sleep(2)
    print("passed" if "Verification Success" in driver.page_source else "not passed")
finally:
    driver.quit()
```

## reCAPTCHA v3

v3’te onay kutusu yoktur; sayfa token’a ihtiyaç duyduğunda `grecaptcha.execute(site anahtarı, {action: '...'})` çağırır ve token’ı kendi isteğine koyar (alan adını site belirler; yaygın olanlar `g-recaptcha-response`, `token`, `recaptchaToken`). Yöntem 1 ile aynı şekilde ilerleyin: Network panelinde token taşıyan isteği bulup aynısını gönderin; görev oluştururken `pageAction` sayfadaki `action` ile aynı olmalıdır.

## Gönderdim ama yine geçmiyor

-   Token’ın süresi dolmuştur: aldıktan sonra hemen gönderin, 60 saniyeyi geçirmeyin.
-   Sitenin kontrol ettiği alanı göndermemişsinizdir veya başka alanları ya da Cookie’leri atlamışsınızdır: tarayıcıdaki istekle alan alan karşılaştırın.
-   Site IP, User-Agent gibi bilgileri de kontrol ediyordur: kendi proxy’nizi kullanan bir tür (örneğin `NoCaptchaTask`) seçin ve gönderimi aynı proxy üzerinden yapın.
-   v3 skoru yetersizdir: `pageAction` değerini doğrulayın veya sabit yüksek skorlu bir tür kullanın, bkz. [reCAPTCHA v3](https://docs.yescaptcha.com/tr/tasks/recaptcha-v3.md).
-   Sitenin risk kontrolü başka davranış sinyallerine de bakar. Token yöntemiyle geçiş oranı düşükse [görsel tanıma](https://docs.yescaptcha.com/tr/tasks/recaptcha-classification.md) ile gerçek tarayıcıda tıklama yapabilir veya [tarayıcı eklentisini](https://docs.yescaptcha.com/tr/extension.md) kullanabilirsiniz.
