Captcha solver API: nasıl çalışır ve nasıl çağrılır
Captcha solver API, HTTP üzerinden çağırdığınız bir web servisidir. Ona captcha'nın ayrıntılarını gönderirsiniz: görev türü, sayfanın sitekey'i ve sayfa URL'si. Servis, hedef sitenin bulmacanın geçildiğinin kanıtı olarak kabul ettiği bir token döndürür. Scarnox endpoint'i bu şekilde çalışır ve senkrondur; yani tek bir istek size cevabı verir.
Bu rehber isteği, yanıtı, hata yapısını ve bir entegrasyonun üretimde ayakta kalıp kalmadığını belirleyen ayrıntıları kapsar. Önce çalıştırılabilir bir script istiyorsanız Python ile PopularCaptcha nasıl çözülür rehberiyle başlayın.
API neyi yapar, neyi yapmaz
Kodunuz sayfadaki captcha'yı bulur, sitekey'ini okur ve çözücüye gönderir. Çözücü bir token döndürür. Kodunuz bu token'ı sitenin beklediği form alanına yazar ve formu gönderir.
Çözücü sayfanızı yüklemez, hiçbir şeye tıklamaz ve formunuzu göndermez. Yalnızca token'ı üretir. Bu sınırı akılda tutmak, entegrasyonun geri kalanını anlamayı kolaylaştırır: oturumunuz, çerezleriniz ve istek zamanlamanız tamamen kodunuzda kalır.
Bugün tek canlı görev türü PopularCaptcha'dır, proxysiz; yani PopularCaptchaTaskProxyless. Diğer captcha türleri yol haritasındadır. Hangisinin hangisi olduğu için captcha türleri rehberine bakın.
Endpoint
Şu adrese bir POST isteği gönderin:
POST https://api.scarnox.com/api/tasks/create
Authorization: Bearer scarnox_YOURAPIKEY
Content-Type: application/json
Gövde görevi tanımlar:
{
"captcha_type": "PopularCaptchaTaskProxyless",
"site_key": "10000000-ffff-ffff-ffff-000000000001",
"site_url": "https://example.com/signup"
}
Zorunlu üç alan şunlardır:
captcha_type: görev türü. Bugün canlı çözümler için bu değerPopularCaptchaTaskProxyless.site_key: sayfadan okunan sitekey. PopularCaptcha sitekey'leri UUID'dir.site_url: captcha'nın göründüğü sayfanın URL'si. Ana sayfayı değil gerçek sayfayı kullanın; çünkü token, widget'ı gösteren sayfaya bağlıdır.
Üç isteğe bağlı alan daha vardır. proxy, http://user:pass@host:port biçiminde bir değer alır ve proxy görev türleriyle kullanılır. rqdata ve is_invisible, belirli widget varyantları içindir. Görev türlerinin ve alan ayrıntılarının tam listesi API referansında bulunur.
Senkron demek, polling yok demek
Çağrı, token hazır olana kadar bloke olur. Polling yapmazsınız ve bu akışta ikinci bir "sonucu al" isteği yoktur. HTTP istemcinizin zaman aşımını yaklaşık 185 saniyeye ayarlayın; böylece yavaş bir çözme, ağ hatası gibi görünmez.
requests kütüphanesiyle Python'da şöyle görünür:
import requests
r = requests.post(
"https://api.scarnox.com/api/tasks/create",
headers={"Authorization": "Bearer scarnox_YOURAPIKEY"},
json={
"captcha_type": "PopularCaptchaTaskProxyless",
"site_key": "10000000-ffff-ffff-ffff-000000000001",
"site_url": "https://example.com/signup",
},
timeout=185,
)
data = r.json()
Anahtarı scriptin içine yazmak yerine bir ortam değişkeninden okuyun. Kaynağı okuyabilen herkes bakiyenizi kullanabilmemelidir.
Yanıtı okumak
Başarılı bir çözümde errorId değeri 0 olur, token solution içinde gelir ve bir cost alanı bulunur:
{"errorId": 0, "solution": {"token": "..."}, "cost": ...}
Başarısız bir çözümde errorId değeri 0 dışında bir şey olur ve makine tarafından okunabilir bir errorCode ile insan tarafından okunabilir bir errorDescription gelir:
{"errorId": 1, "errorCode": "...", "errorDescription": "..."}
Her çağrıda gövdedeki errorId değerini kontrol edin. Tamamlanmış bir HTTP isteğinin size token verdiğini varsaymayın. En önemli kural şudur: yalnızca errorId değeri 0 olduğunda ücretlendirilirsiniz. Başarısız çözümler ücretlendirilmez. Güncel ücretler için fiyatlandırma sayfasına bakın.
Token ömrü
PopularCaptcha token'ları yaklaşık iki dakika içinde süresi dolar. Token'ı aldığınız anda gönderin. Token'ları sonraki kullanım için önbelleğe almayın ve formu göndermeden önce çözmeyin. Token'ı alıp formu göndermek arasında kodunuz birkaç adım çalıştırıyorsa çözme adımını en son ana taşıyın.
Token'ı forma koymak
Çoğu site PopularCaptcha yanıtını h-captcha-response adlı bir form alanından okur. Birçoğu aynı değeri taşıyan g-recaptcha-response alanını da kabul eder; bu yüzden ikisini birden göndermek yaygın ve güvenli bir seçimdir:
requests.post("https://example.com/signup", data={
"email": "you@example.com",
"h-captcha-response": token,
"g-recaptcha-response": token,
})
Form token'ı kabul etmiyorsa sebep çoğu zaman, widget'ın gerçekte bulunduğu sayfayla eşleşmeyen bir sitekey ya da sayfa URL'sidir. Çözücüyü suçlamadan önce değerleri iki kez kontrol edin.
Hata yönetimi
Üretimdeki bir entegrasyonun birkaç alışkanlığa ihtiyacı vardır:
- Her çağrıda
errorIddeğerini kontrol edin veerrorCodedeğerini loglayın. Destek ekibinin ilk isteyeceği kod budur. - Başarısız çözümleri kısa bir bekleme ile tekrar deneyin. Başarısız çözümler ücretlendirilmediği için tekrar deneme size bir çözüm maliyeti getirmez; ama sıkı bir döngü hâlâ zaman harcar ve kendi hız sınırlarınıza takılabilir.
- İstemci zaman aşımını yaklaşık 185 saniyeye ayarlayın ve zaman aşımını başarı değil, tekrar denenecek bir hata olarak ele alın.
- Token ile form gönderimini zamanda birbirine yakın tutun; token hızla süresi dolar.
Her hatayı ve her biri için nasıl davranılacağını daha derinlemesine captcha solver hata yönetimi rehberi anlatır.
Başlamak
Hesap oluşturun; kredi kartı gerekmeden ücretsiz deneme kredisiyle başlayabilirsiniz. Ardından yukarıdaki isteği sahibi olduğunuz bir test sayfasında çalıştırın ve bir şeye bağlamadan önce formun token'ı kabul ettiğini kontrol edin.