Görev türleri
reCAPTCHA v2
Bu sayfa Çince sürümden makine çevirisiyle hazırlanmıştır ve hatalar içerebilir. Geçerli olan Çince sürüm sürümüdür.
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.
https://api.yescaptcha.com/createTaskGlobal uç noktahttps://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 Panel’inden kopyalayın). Görevi hangi uç noktada oluşturduysanız sonucu da aynı uç noktadan sorgulayın.
Kullanım senaryoları
Bölüm başlığı “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": trueekleyin. - Sayfa
recaptcha/enterprise.jsyüklüyorsa veya istek adreslerindeenterprisegeçiyorsa: Enterprise sürüm. AdındaEnterprisegeçen türleri kullanın.
Hangisi olduğundan emin değilseniz CAPTCHA türünü belirleme sayfasına bakın. Token yöntemi yeterince geçmiyorsa reCAPTCHA v2 görsel tanıma 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
Bölüm başlığı “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.
NoCaptchaTaskProxylessveRecaptchaV2TaskProxylessaynı parametreleri kullanır, hatları farklıdır. Biri yeterince geçmiyorsa diğerini deneyebilirsiniz.- Adında
Proxylessgeçmeyen türler (NoCaptchaTask,RecaptchaV2EnterpriseTask) CAPTCHA’yı kendi proxy’niz üzerinden yükler;proxyType,proxyAddress,proxyPortgibi alanların gönderilmesi gerekir. Hedef site ziyaretçi IP’sini denetliyorsa bunları kullanın.
İstek parametreleri
Bölüm başlığı “İ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 sayfasına bakın.
İstek örneği
Bölüm başlığı “İstek örneği”Google’ın resmi demo sayfasıyla:
{ "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 -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"}'import osimport 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"])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:
{ "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:
{ "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ç
Bölüm başlığı “Dönen sonuç”createTask görev ID’sini döndürür:
{ "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:
{ "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ı. Token’ı nasıl göndereceğiniz için reCAPTCHA’yı token ile geçme sayfasına bakın.
Sık sorulan sorular
Bölüm başlığı “Sık sorulan sorular”Aynı sitede token neden bazen geçiyor, bazen geçmiyor?
Bölüm başlığı “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 görevine geçebilirsiniz.
Token ne kadar süre geçerli?
Bölüm başlığı “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ü?
Bölüm başlığı “Çö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.