cURL ile reCAPTCHA Enterprise token'ı isteyin

solvethree tarafından3 dk okuma

Sitenizin ana makine adı, eylem ve proxy ile bir görev oluşturun. pending veya solving dönerse döndürülen görev kimliğiyle durumu sorgulayın. Token'ı solution.token alanından yalnızca durum ready olduğunda okuyun.

Bu sayfada

Siteyi, anahtarı ve proxy'yi hazırlayın

  • Kabuğunuzda cURL ve jq araçlarının kullanılabilir olduğundan emin olun.
  • SOLVETHREE_API_KEY değerini çalışma alanınızın API anahtarına ayarlayın. Bu komutları sunucu tarafında çalıştırın; anahtarı tarayıcı koduna koymayın.
  • SOLVETHREE_PROXY değerini çözüm almak ve token'ı göndermek için kullanmayı planladığınız proxy URL'sine ayarlayın.
  • Konsolda çalışma alanınız için etkin bir reCAPTCHA site profili yapılandırın. Örnekteki accounts.example.com ve login değerlerini kendi ana makine adınız ve eyleminizle değiştirin.

Ana makine adı ve eylem göndermek site profili oluşturmaz. Çözüm istemeden önce profil zaten etkin olmalıdır.

Bekleme süresini açıkça belirterek görevi oluşturun

cURL + jq · tek bir görev oluşturma
# Set SOLVETHREE_API_KEY and SOLVETHREE_PROXY in your environment first.
# Replace the hostname and action with your active site profile.
jq -n \
  --arg proxy "$SOLVETHREE_PROXY" \
  --arg requestId "login-$(date +%s)-$$" \
  '{site:"accounts.example.com", action:"login", proxy:$proxy, requestId:$requestId}' \
| curl --fail-with-body --max-time 30 \
  'https://api.solvethree.com/v1/tasks?waitMs=15000' \
  -H "Authorization: Bearer $SOLVETHREE_API_KEY" \
  -H 'Content-Type: application/json' \
  --data-binary @-

JSON gövdesi site, action ve tek bir proxy içerir. proxy veya proxyCandidates alanlarından tam olarak biri gereklidir. type veya url eklemeyin; recaptchaType belirtilmediğinde enterprise-v3 seçilir.

waitMs=15000 sorgu parametresi, oluşturma isteğinin en fazla 15 saniye beklemesini ister. JSON gövdesinde değil, URL'de yer alır. cURL zaman aşımı 30 saniyedir; böylece sunucu tarafındaki beklemeye ek olarak ağ gecikmeleri için de süre kalır. Yanıt geldiğinde görev hâlâ son duruma ulaşmamış olabilir.

Yanıtı okuyun ve tamamlanmamış görevlerin durumunu sorgulayın

Gövdeyi görev yanıtı olarak yorumlamadan önce HTTP hatası olup olmadığını kontrol edin. Her iki komut da --fail-with-body kullanır; başarısız bir HTTP isteğini, durumu failed olan bir görevden ayrı ele alın.

Hazır yanıtın yapısı şöyledir. Aşağıdaki değerler yer tutucudur; gönderebileceğiniz bir token değildir.

Örnek hazır yanıt · yer tutucu kimlik bilgileri
{
  "id": "example-task",
  "status": "ready",
  "solution": {
    "token": "EXAMPLE_TOKEN",
    "userAgent": "EXAMPLE_USER_AGENT",
    "secChUa": "EXAMPLE_CLIENT_HINTS"
  }
}
Döndürülen görev durumuna göre yapılacaklar
Döndürülen görev durumuna göre yapılacaklar
DurumSonraki adım
pending veya solvingDöndürülen id değerini saklayın ve aynı görevi getirin. Henüz kullanılabilir bir çözüm yoktur; yerine yeni bir görev oluşturmayın.
hazırDurum sorgulamayı bırakın ve solution.token, solution.userAgent ve solution.secChUa değerlerini okuyun.
failedDurum sorgulamayı bırakın ve errorCode ile error değerlerini inceleyin. Başarısız çözüm işlemlerinin ücretleri iade edilir. Başka bir görev başlatmadan önce nedeni giderin.

Son duruma ulaşmamış bir yanıt için ortamınızdaki TASK_ID değerini döndürülen id değerine ayarlayın, ardından görevi getirin:

Görev API’si · mevcut bir görevi getirme
curl --fail-with-body --max-time 30 \
  "https://api.solvethree.com/v1/tasks/$TASK_ID?waitMs=15000" \
  -H "Authorization: Bearer $SOLVETHREE_API_KEY"

Bu GET, 30 saniyelik HTTP zaman aşımıyla bir sonuç için en fazla 15 saniye bekler. waitMs olmadan GET beklemeden döner. GET isteğini yalnızca durum pending veya solving olduğu sürece tekrarlayın ve durum sorgulama döngüsünün süresiz çalışmaması için çağıran kodda toplam bir süre sınırı belirleyin.

Görev başarısız olursa kredi sorunu olduğunu varsaymak yerine hata ayrıntılarını kullanın. Örneğin site-unreachable, değiştirilmemiş girdileri körlemesine yeniden göndermeyi değil, hedefin erişilebilirliğini kontrol etmeyi gerektirir.

Token'ı gönderin

Hedef uygulamanın isteğinde solution.token kullanın. Görevin id değeri yalnızca görevi almak içindir; CAPTCHA tokenı değildir. Tokenın nereye yerleştirileceği hedefin formuna veya API'sine bağlıdır; bu nedenle hedefe gönderim için evrensel bir komut yoktur.

Tokenı gönderirken döndürülen solution.userAgent ve solution.secChUa değerlerini başarılı proxy ile birlikte kullanın. Yukarıdaki tek proxy örneğinde aynı SOLVETHREE_PROXY değerini kullanın. İlgisiz bir tarayıcı kimliğini veya hedef URL'yi bunlarla karıştırmayın.

ready, solvethree'nin bir çözüm ürettiği anlamına gelir. İsteğinizi kabul edip etmediğini belirlemek için hedef uygulamanın yanıtını ayrıca kontrol edin.

Diğer sorular

Bu, Google'ın siteverify API'si ile aynı mı?

Hayır. Google'ın siteverify API'si mevcut bir tokenı kontrol eder ve web sitesi sahibinin gizli doğrulama anahtarını gerektirir. solvethree API'si, çalışma alanınızın API anahtarını kullanarak bir çözüm üretir. Görev isteğine Google'ın gizli doğrulama anahtarını eklemeyin.

İlk görevinizi çalıştırın.

$5 çalışma alanı kredisiyle başlayın.

Çalışma alanı oluşturun
cURL ile reCAPTCHA Enterprise token'ı isteyin · solvethree