# reCAPTCHA v2

> YesCaptcha ile reCAPTCHA v2 (standart, görünmez ve Enterprise) token'ı alın: görev türleri ve fiyatlar, istek parametreleri, curl/Python/Node.js örnekleri ve dönen sonuç.

Source: https://docs.yescaptcha.com/tr/tasks/recaptcha-v2/ · 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/tasks/recaptcha-v2/

reCAPTCHA v2 görevi bir token (`gRecaptchaResponse`) döndürür. Bu token’ı hedef siteye göndererek doğrulamayı görsellere tıklamadan geçebilirsiniz. En sık kullanılan `NoCaptchaTaskProxyless` türünün görev başına ücreti: 15 puan (≈ $2.25 / 1k). Sonuç asenkron döner: önce `createTask` ile görevi oluşturun, sonra sonucu almak için her 5 saniyede bir `getTaskResult` çağırın. Çözülemeyen ve zaman aşımına uğrayan görevlerde puan iadesi otomatik yapılır.

- POST `https://api.yescaptcha.com/createTask` (Global uç nokta)
- POST `https://cn.yescaptcha.com/createTask` (Çin uç noktası)

İstek gövdesi JSON’dur ve kimlik doğrulama `clientKey` ile yapılır (ClientKey’nizi [yescaptcha.com](https://yescaptcha.com/) Panel’inden kopyalayın). Görevi hangi uç noktada oluşturduysanız sonucu da aynı uç noktadan sorgulayın.

## Kullanım senaryoları

-   Sayfada “Robot değilim” (I’m not a robot) onay kutusu varsa: standart sürüm.
-   Onay kutusu yoksa ve görsel sorusu gönder düğmesine tıklandıktan sonra çıkıyorsa: görünmez sürüm. `"isInvisible": true` ekleyin.
-   Sayfa `recaptcha/enterprise.js` yüklüyorsa veya istek adreslerinde `enterprise` geçiyorsa: Enterprise sürüm. Adında `Enterprise` geçen türleri kullanın.

Hangisi olduğundan emin değilseniz [CAPTCHA türünü belirleme](https://docs.yescaptcha.com/tr/guides/identify-captcha.md) sayfasına bakın. Token yöntemi yeterince geçmiyorsa [reCAPTCHA v2 görsel tanıma](https://docs.yescaptcha.com/tr/tasks/recaptcha-classification.md) görevini deneyebilirsiniz: API hangi görsellere tıklanacağını söyler, tıklamayı tarayıcıda siz yaparsınız.

## Türler ve fiyatlar

| Görev türü | Fiyat | Mod | Notlar |
| --- | --- | --- | --- |
| `NoCaptchaTaskProxyless` | $2.25 / 1k; 15 puan/görev · ¥15 / 1k | Asenkron |  |
| `RecaptchaV2TaskProxyless` | $3.00 / 1k; 20 puan/görev · ¥20 / 1k | Asenkron | NoCaptchaTaskProxyless ile aynı parametreler, farklı hat; biri yedek olarak kullanılabilir |
| `NoCaptchaTask` | $2.25 / 1k; 15 puan/görev · ¥15 / 1k | Asenkron | Kendi proxy'niz |
| `RecaptchaV2EnterpriseTaskProxyless` | $3.00 / 1k; 20 puan/görev · ¥20 / 1k | Asenkron |  |
| `RecaptchaV2EnterpriseTask` | $3.00 / 1k; 20 puan/görev · ¥20 / 1k | Asenkron | Kendi proxy'niz |

ABD doları fiyatları, 1 ABD doları ≈ ¥6.67 kuruyla hesaplanan tahminlerdir; görevler puan üzerinden ücretlendirilir.

-   `NoCaptchaTaskProxyless` ve `RecaptchaV2TaskProxyless` aynı parametreleri kullanır, hatları farklıdır. Biri yeterince geçmiyorsa diğerini deneyebilirsiniz.
-   Adında `Proxyless` geçmeyen türler (`NoCaptchaTask`, `RecaptchaV2EnterpriseTask`) CAPTCHA’yı kendi proxy’niz üzerinden yükler; `proxyType`, `proxyAddress`, `proxyPort` gibi alanların gönderilmesi gerekir. Hedef site ziyaretçi IP’sini denetliyorsa bunları kullanın.

## İstek parametreleri

`createTask` içindeki `task` nesnesinin alanları:

| Alan | Tür | Zorunlu | Açıklama |
| --- | --- | --- | --- |
| `type` | string | Evet | Görev türü; bu sayfadaki "Görev türleri ve fiyatlar" bölümüne bakın |
| `websiteURL` | string | Evet | CAPTCHA'nın göründüğü sayfanın tam URL'si. CAPTCHA'yı gördüğünüz siteyi yazın, CAPTCHA sağlayıcısının alan adını değil |
| `websiteKey` | string | Evet | Site anahtarı (sitekey); sayfa kaynağında veya ağ isteklerinde bulunur, genellikle değişmez |
| `isInvisible` | boolean | Hayır | Görünmez (invisible) sürüm için true gönderin; aksi halde göndermeyin |
| `proxyType` | string | Bazı türler | Proxy protokolü: `http`, `https`, `socks4` veya `socks5` (NoCaptchaTask, RecaptchaV2EnterpriseTask için zorunlu) |
| `proxyAddress` | string | Bazı türler | Proxy IP adresi veya ana bilgisayar adı. 127.0.0.1 veya 192.168.x.x gibi yerel ya da özel adresler çalışmaz, çünkü sunucularımız bunlara erişemez (NoCaptchaTask, RecaptchaV2EnterpriseTask için zorunlu) |
| `proxyPort` | integer | Bazı türler | Proxy portu (NoCaptchaTask, RecaptchaV2EnterpriseTask için zorunlu) |
| `proxyLogin` | string | Hayır | Proxy kullanıcı adı, proxy kimlik doğrulaması gerektiriyorsa (yalnızca NoCaptchaTask, RecaptchaV2EnterpriseTask) |
| `proxyPassword` | string | Hayır | Proxy şifresi, proxy kimlik doğrulaması gerektiriyorsa (yalnızca NoCaptchaTask, RecaptchaV2EnterpriseTask) |
| `userAgent` | string | Hayır | Tarayıcı User-Agent bilgisi. Sonuçta `userAgent` varsa, token'ı gönderirken bu değeri kullanın (yalnızca NoCaptchaTask, RecaptchaV2EnterpriseTask) |
| `enterprisePayload` | object | Hayır | Enterprise sürümüne ait ek parametreler, örneğin reCAPTCHA Enterprise `s` değeri: `{"s": "..."}`. Sayfa kullanmıyorsa göndermeyin (yalnızca RecaptchaV2EnterpriseTaskProxyless, RecaptchaV2EnterpriseTask) |

`websiteURL` ve `websiteKey` değerlerini nasıl bulacağınız için [reCAPTCHA parametrelerini bulma](https://docs.yescaptcha.com/tr/guides/find-recaptcha-parameters.md) sayfasına bakın.

## İstek örneği

Google’ın resmi demo sayfasıyla:

POST https://api.yescaptcha.com/createTask

```json
{
  "clientKey": "YOUR_CLIENT_KEY",
  "task": {
    "type": "NoCaptchaTaskProxyless",
    "websiteURL": "https://www.google.com/recaptcha/api2/demo",
    "websiteKey": "6Le-wvkSAAAAAPBMRTvw0Q4Muexq9bi0DJwx_mJ-"
  }
}
```

Görevi oluşturan, her 5 saniyede bir sorgulayan ve token’ı yazdıran tam kod. Çalıştırmadan önce ClientKey’nizi `YESCAPTCHA_CLIENT_KEY` ortam değişkenine koyun:

**curl**

```bash
curl -s https://api.yescaptcha.com/createTask \
  -H 'Content-Type: application/json' \
  -d '{
  "clientKey": "YOUR_CLIENT_KEY",
  "task": {
    "type": "NoCaptchaTaskProxyless",
    "websiteURL": "https://www.google.com/recaptcha/api2/demo",
    "websiteKey": "6Le-wvkSAAAAAPBMRTvw0Q4Muexq9bi0DJwx_mJ-"
  }
}'

# Returns {"errorId":0,"taskId":"..."}; then poll every 5 seconds:
curl -s https://api.yescaptcha.com/getTaskResult \
  -H 'Content-Type: application/json' \
  -d '{"clientKey": "YOUR_CLIENT_KEY", "taskId": "TASK_ID"}'
```

**Python**

solve.py

```python
import os
import time

import requests

API = "https://api.yescaptcha.com"
CLIENT_KEY = os.environ["YESCAPTCHA_CLIENT_KEY"]  # Read the clientKey from an environment variable

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

def solve(task):
    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"]
    raise TimeoutError(task_id)

solution = solve({
    "type": "NoCaptchaTaskProxyless",
    "websiteURL": "https://www.google.com/recaptcha/api2/demo",
    "websiteKey": "6Le-wvkSAAAAAPBMRTvw0Q4Muexq9bi0DJwx_mJ-",
})
print(solution["gRecaptchaResponse"])
```

**Node.js**

solve.mjs

```js
const API = 'https://api.yescaptcha.com';
const CLIENT_KEY = process.env.YESCAPTCHA_CLIENT_KEY; // Read the clientKey from an environment variable

async function call(method, payload) {
  const res = await fetch(`${API}/${method}`, {
    method: 'POST',
    headers: { 'Content-Type': 'application/json' },
    body: JSON.stringify({ clientKey: CLIENT_KEY, ...payload }),
  });
  const data = await res.json();
  if (data.errorId) throw new Error(`${data.errorCode}: ${data.errorDescription}`);
  return data;
}

async function solve(task) {
  const { taskId } = await call('createTask', { task });
  for (let i = 0; i < 36; i++) { // Poll every 5 seconds, for up to about 3 minutes
    await new Promise((r) => setTimeout(r, 5000));
    const result = await call('getTaskResult', { taskId });
    if (result.status === 'ready') return result.solution;
  }
  throw new Error(`timeout: ${taskId}`);
}

const solution = await solve({
  type: "NoCaptchaTaskProxyless",
  websiteURL: "https://www.google.com/recaptcha/api2/demo",
  websiteKey: "6Le-wvkSAAAAAPBMRTvw0Q4Muexq9bi0DJwx_mJ-",
});
console.log(solution.gRecaptchaResponse);
```

Enterprise sürümde sayfa reCAPTCHA’ya bir `s` değeri geçiriyorsa bu değeri `enterprisePayload` içine koyun:

POST https://api.yescaptcha.com/createTask

```json
{
  "clientKey": "YOUR_CLIENT_KEY",
  "task": {
    "type": "RecaptchaV2EnterpriseTaskProxyless",
    "websiteURL": "https://example.com/login",
    "websiteKey": "SITE_KEY_OF_THE_PAGE",
    "enterprisePayload": {
      "s": "S_VALUE_FROM_THE_PAGE"
    }
  }
}
```

Kendi proxy’nizle:

POST https://api.yescaptcha.com/createTask

```json
{
  "clientKey": "YOUR_CLIENT_KEY",
  "task": {
    "type": "NoCaptchaTask",
    "websiteURL": "https://www.google.com/recaptcha/api2/demo",
    "websiteKey": "6Le-wvkSAAAAAPBMRTvw0Q4Muexq9bi0DJwx_mJ-",
    "proxyType": "http",
    "proxyAddress": "proxy.example.com",
    "proxyPort": 8080,
    "proxyLogin": "user",
    "proxyPassword": "pass"
  }
}
```

## Dönen sonuç

`createTask` görev ID’sini döndürür:

```json
{
  "errorId": 0,
  "taskId": "61138bb6-19fb-11ec-a9c8-0242ac110006"
}
```

Bu ID ile `getTaskResult` çağırın. Görev hâlâ işleniyorsa `{"errorId": 0, "status": "processing"}` döner; 5 saniye sonra tekrar sorgulayın. Görev tamamlandığında şu yanıt döner:

```json
{
  "errorId": 0,
  "status": "ready",
  "solution": {
    "gRecaptchaResponse": "03AGdBq25SxXT-pmSeBXjzScW-EiocHwwpwqtk1QXlJnGnU..."
  }
}
```

| Alan | Tür | Açıklama |
| --- | --- | --- |
| `gRecaptchaResponse` | string | Hedef siteye gönderilecek token. Tek kullanımlıktır, yaklaşık 120 saniye geçerlidir; 60 saniye içinde kullanmanız önerilir |

Bir görev en fazla yaklaşık 110 saniye işlenir; süre aşılırsa `ERROR_TASK_TIMEOUT` döner ve puan iadesi yapılır. Hata durumunda `errorId` 1 olur; hatayı `errorCode` değerine göre ele alın, bkz. [Hata kodları](https://docs.yescaptcha.com/tr/api/errors.md). Token’ı nasıl göndereceğiniz için [reCAPTCHA’yı token ile geçme](https://docs.yescaptcha.com/tr/guides/submit-recaptcha-token.md) sayfasına bakın.

> **İpucu:** Token tek kullanımlıktır ve yaklaşık 120 saniye geçerlidir. Aldıktan sonra 60 saniye içinde göndermeniz önerilir.

## Sık sorulan sorular

### Aynı sitede token neden bazen geçiyor, bazen geçmiyor?

Geçip geçmeyeceğine hedef site karar verir. Site her doğrulamaya skor verir ve bir eşik belirler; bu eşik her an değişebilir. Bu yüzden geçme oranı siteden siteye değişir ve her token geçmez. Aynı türde başka bir görev türüyle geçme oranını karşılaştırabilir veya [görsel tanıma](https://docs.yescaptcha.com/tr/tasks/recaptcha-classification.md) görevine geçebilirsiniz.

### Token ne kadar süre geçerli?

Tek kullanımlıktır ve yaklaşık 120 saniye geçerlidir; aldıktan sonra 60 saniye içinde göndermeniz önerilir. Geçerlilik süresini Google belirler.

### Çözülemeyen görevde puan düşülür mü?

Hayır. `ERROR_CAPTCHA_UNSOLVABLE` döndüren veya zaman aşımına uğrayan görevlerde puan iadesi otomatik yapılır, bkz. [Ücretlendirme ve puan iadesi](https://docs.yescaptcha.com/tr/getting-started/billing.md).

## İlgili eğitimler

-   [CAPTCHA türünü belirleme](https://docs.yescaptcha.com/tr/guides/identify-captcha.md)
-   [reCAPTCHA parametrelerini bulma](https://docs.yescaptcha.com/tr/guides/find-recaptcha-parameters.md)
-   [reCAPTCHA’yı token ile geçme](https://docs.yescaptcha.com/tr/guides/submit-recaptcha-token.md)
-   [reCAPTCHA v2 görsel tanıma ile tıklama simülasyonu (Selenium)](https://docs.yescaptcha.com/tr/guides/recaptcha-click-selenium.md)
