2Captcha reCAPTCHA entegrasyonunu solvethree'ye taşıyın
Bu yalnızca bir uç nokta değişikliği değildir. clientKey/task sarmalayıcısını Bearer anahtarıyla kimliği doğrulanan düz bir istekle değiştirin, hedef siteyi solvethree’de yapılandırın ve bir proxy sağlayın. Mevcut 2Captcha görev kimliklerini yeni solvethree görevlerinden ayrı tutun.
Bu sayfada
Taşıdığınız görevi kontrol edin
Bu geçiş, 2Captcha API v2 üzerinden reCAPTCHA v3 Enterprise kullanımını kapsar. Eski in.php/res.php API’sini açıklamaz. Ayrıca 2Captcha’nın API sürümü, CAPTCHA sürümü değildir: solvethree reCAPTCHA v2’yi desteklemez.
Başlangıç isteği, 2Captcha createTask belgelerinde açıklanan sarmalayıcıyı kullanır: kimlik bilgileri, sağlayıcıya özgü görev nesnesinin dışında yer alır.
{
"clientKey": "TWO_CAPTCHA_API_KEY",
"task": {
"type": "RecaptchaV3TaskProxyless",
"websiteURL": "https://accounts.example.com/login",
"websiteKey": "PUBLIC_SITE_KEY",
"minScore": 0.7,
"pageAction": "login",
"isEnterprise": true
}
}Bu nesneyi yeni API’ye değiştirmeden taşımayın. Özellikle proxy’siz görev türünün ve minScore alanının aşağıdaki solvethree isteğinde yeri yoktur.
Siteyi yapılandırın, ardından isteği değiştirin
Önce solvethree konsolunda hedef siteyi yapılandırın. Çalışma alanınızın bu ana makine adı için çözüm isteklerini işleyebilmesi için etkin bir site profiline ihtiyacı vardır. Ana makine adı ve eylem göndermek profil oluşturmaz.
Çalışma alanınızın API anahtarını Authorization: Bearer ile kullanarak https://api.solvethree.com adresindeki POST /v1/tasks üzerinden yeni görevler oluşturun. Bu anahtarı sunucuda tutun. Görev oluşturma sözleşmesi, iç içe bir task nesnesi yerine düz bir JSON gövdesi kullanır.
| 2Captcha API v2 girdisi | solvethree karşılığı |
|---|---|
| clientKey | Çalışma alanı API anahtarı JSON gövdesinde değil, Authorization başlığında yer alır. |
| task sarmalayıcısı | Kaldırın; görev alanlarını en üst düzeyde gönderin. |
| type: RecaptchaV3TaskProxyless | type alanını eklemeyin. proxy veya proxyCandidates alanlarından tam olarak birini sağlayın. |
| websiteURL | site alanında yalnızca ana makine adını kullanın: accounts.example.com. url göndermeyin. |
| websiteKey | Bu alanı göreve kopyalamak yerine hedef site profilini konsolda yapılandırın. |
| pageAction | action alanını hedefin login gibi eylem değeriyle kullanın. |
| isEnterprise | Eklemeyin; recaptchaType varsayılan olarak enterprise-v3 değerini kullanır. |
| minScore | Eklemeyin; solvethree isteğine kopyalamayın. |
{
"site": "accounts.example.com",
"action": "login",
"proxy": "http://user:[email protected]:8080",
"requestId": "example_login_001"
}Örnekteki ana makine adını, eylemi ve proxy'yi hedefinizin değerleriyle değiştirin. İsteği göndermeden önce requestId değerini seçin ve zaman aşımı sonrası kurtarma için saklayın; her yeni mantıksal görev için yeni bir değer kullanın.
Örnekte tek bir proxy kullanılır. Alternatif olarak proxyCandidates, yol, sorgu veya fragment içermeyen en fazla on iki farklı HTTP veya HTTPS proxy URL'si kabul eder. Alanlardan yalnızca birini gönderin, asla ikisini birden göndermeyin. Adaylar, hizmetin alternatif çıkışlar denemesini sağlar; çalışan bir proxy garantisi vermez.
Yoklama ve zaman aşımı işlemlerini değiştirin
Devam eden 2Captcha görevlerini, kendi kimlik bilgilerini, görev kimliklerini ve belgelenmiş yoklama politikasını kullanarak getTaskResult akışında tutun. Başka bir hizmetin görev kimliği, solvethree görev tanıtıcısı değildir.
- 1.
Oluşturma yanıtını işleyin
Başarı yükünü okumadan önce HTTP yanıtının başarısız olup olmadığını kontrol edin. reCAPTCHA oluşturma işlemi varsayılan olarak 15 saniyeye kadar bekler, ancak henüz son duruma ulaşmamış bir görev döndürebilir. Görev zaten ready durumundaysa yoklama döngüsü başlatmadan çözümü kullanın.
- 2.
Yalnızca tamamlanmamış görevleri yoklayın
solvethree görevini GET /v1/tasks/:id ile alın. Eski processing kontrolünü pending ve solving ile değiştirin; her ikisi de görevin tamamlanmadığı anlamına gelir. Yalnızca ready kullanılabilir bir çözüm içerir.
- 3.
Bekleme süresini URL'de ayarlayın
GET ile yoklama varsayılan olarak beklemez. Uzun yoklama için JSON alanı yerine waitMs URL sorgu parametresini en fazla 15000 olarak ayarlayın. HTTP istemcinizin zaman aşımında istenen bekleme süresine ek olarak ağ gecikmeleri için de pay bırakın.
- 4.
failed durumunda durun
errorCode ve error alanlarını okuyun, ardından o görevi yoklamayı bırakın. Başarısız çözümlerin ücreti iade edilir. site-unreachable gibi bir hata araştırılmalıdır; her hatanın kredi sorunundan kaynaklandığını varsaymayın veya geçersiz girdileri değiştirmeden tekrar tekrar göndermeyin.
Bağlantı zaman aşımı, oluşturmanın başarısız olduğunu kanıtlamaz. Görev kimliğini aldıysanız o görevi alın. Almadıysanız başka bir çözüm oluşturmak yerine mevcut göreve yeniden ulaşmak için aynı isteği aynı requestId ile tekrarlayın. Aynı requestId değerini yeniden kullanırken görev girdilerini değiştirmek çakışmaya neden olur.
Adaptörünüzde HTTP hatalarını görevlerin son durumdaki başarısızlıklarından ayrı tutun. Yoklama sözleşmesi ve hata işleme bu iki yolu açıklar; 2Captcha'nın hata yükü ayrıştırıcısını yeniden kullanmayın.
Token çıkarma ve gönderme işlemlerini güncelleyin
Eski adaptörün token aramasını, ready durumundaki solvethree görevinden alınan solution.token ile değiştirin. Hedefin reCAPTCHA değerini beklediği yere görev kimliğini veya solution nesnesinin tamamını değil, bu token'ı gönderin.
Token'ı gönderirken döndürülen userAgent ve secChUa tarayıcı kimliğini başarılı proxy ile birlikte kullanın. proxyCandidates sağladıysanız gönderim için başka bir aday seçmek yerine başarılı proxy'yi kullanın.
ready durumundaki bir görev, çözümün üretildiği anlamına gelir; web sitesinin uygulama isteğinizi kabul ettiği anlamına gelmez. Hedef isteği reddederse başka bir çözüm için ödeme yapmadan önce gönderilen token'ı, eylemi, hedef URL'yi, proxy'yi ve tarayıcı kimliğini inceleyin.
Kaynaklar ve API referansı
İlk görevinizi çalıştırın.
$5 çalışma alanı kredisiyle başlayın.