n8n'den CAPTCHA çözüm API'sini çağırın
Görevi oluşturmak için n8n’in HTTP Request düğümünü kullanın, ardından durumuna göre dallanın. Görev hâlâ beklemede veya çözülüyorsa bekleyip aynı görev kimliğini sorgulayın; başka bir POST göndermeyin.
Bu sayfada
Siteyi ve kimlik bilgisini yapılandırın
- 1.
Site profilini etkinleştirin
Hedef ana makine adını solvethree konsolunda yapılandırın ve profilinin çalışma alanınız için etkin olduğundan emin olun. Bir görevde ana makine adı ve eylem göndermek profili oluşturmaz.
- 2.
n8n’de bir Header Auth kimlik bilgisi oluşturun
Değeri
Bearerve ardından çalışma alanınızın API anahtarı olacak şekilde birAuthorizationbaşlığı göndermesini sağlayın. Anahtarı görev JSON’unda değil, kimlik bilgisinde saklayın.
Oluşturma isteğini yapılandırın
HTTP Request düğümünü Create task olarak adlandırın. Sorgulama düğümü, ilk görev kimliğini almak için bu adı referans alacaktır.
| Alan | Ayar |
|---|---|
| Yöntem | POST |
| URL | https://api.solvethree.com/v1/tasks |
| Kimlik doğrulama | Genel kimlik bilgisi türü |
| Genel kimlik doğrulama türü | Header Auth; oluşturduğunuz kimlik bilgisini seçin |
| Sorgu parametrelerini gönder | Etkinleştirin; 15000 değeriyle waitMs ekleyin |
| Gövde gönder | Etkinleştirin; JSON’u seçin ve aşağıdaki gövdeyi kullanın |
{
"site": "accounts.example.com",
"action": "login",
"proxy": "http://user:[email protected]:8080",
"requestId": "example_login_001"
}site, action ve proxy değerlerini isteğinizin ana makine adı, eylemi ve proxy’siyle değiştirin. proxy veya proxyCandidates alanlarından tam olarak birini gönderin; bu örnekte tek bir proxy kullanılır. type veya url eklemeyin. Varsayılan reCAPTCHA türü Enterprise v3’tür.
Örnekteki requestId değerini her yeni mantıksal görev için benzersiz bir değerle değiştirin. Zaman aşımından sonra bu görevi kurtarmanız gerekirse değeri değiştirmeyin. 1–64 ASCII harfi, rakam, alt çizgi veya kısa çizgi kabul eder.
waitMs, JSON gövdesinde değil URL sorgusunda yer almalıdır. Ağ ek yüküne pay bırakmak için HTTP isteği zaman aşımını, istenen 15 saniyelik bekleme süresinin üzerinde ayarlayın; 30 saniye makul bir başlangıç ayarıdır, çözüm süresi garantisi değildir. Header Auth kimlik bilgisi kimlik doğrulamayı sağladığından, bunu Başlıkları Gönder altında tekrar eklemeniz gerekmez.
HTTP başarısına değil, duruma göre dallanın
Görev verisini incelemeden önce başarısız HTTP yanıtlarını işleyin. Başarılı bir yanıt için bir IF veya Switch düğümü bağlayın ve {{ $json.status }} değerini inceleyin.
| Durum | Sonraki adım |
|---|---|
| hazır | Sorgulama döngüsünden çıkın ve çözümü kullanın. |
| failed | Sorgulamayı durdurun. Sorunu teşhis etmek için errorCode ve error değerlerini kaydedin. |
| pending veya solving | Sorgulamanın son zaman sınırını kontrol edin, ardından bekleyip mevcut görevi GET ile alın. |
Hazır durumdaki bir reCAPTCHA görevi için döndürülen token’ı, döndürülen userAgent ve secChUa kimliğiyle ve başarılı olan proxy üzerinden gönderin. Hazır durumdaki bir görev, çözümün üretildiği anlamına gelir; web sitesinin sonraki isteği kabul ettiğini göstermez.
Başarısız çözümlerin ücreti iade edilir. Girdileri değiştirmeden yeniden denemek veya çalışma alanının kredisinin yetersiz olduğunu varsaymak yerine bildirilen hatayı teşhis edin.
Bekleyin, ardından ilk kimliği GET ile alın
- 1.
Sabit bir son zaman sınırı kaydedin
Create task çalışmadan önce iş akışında sorgulama için bir son zaman sınırı saklayın; örneğin oluşturmanın başlamasından iki dakika sonrası. Bu, iş akışınızın durdurma politikasıdır, solvethree API sınırı değildir. Sonraki yanıtların üzerine yazmaması için bu sınırı HTTP yanıtının dışında tutun.
- 2.
Her sorgulama adımını koşula bağlayın
Beklemede veya çözülüyor durumlarında, geçerli zamanı kaydedilen son zaman sınırıyla karşılaştırmak için bir IF düğümü kullanın. Süre dolmuşsa döngüyü sonlandırın ve görev kimliğini saklayın. Aksi hâlde bir Wait düğümüyle iki saniye bekleyin, ardından GET öncesinde zaman sınırını tekrar kontrol edin.
- 3.
Mevcut görevi alın
İkinci bir HTTP Request düğümünü aşağıdaki ayarlarla yapılandırın. Yanıtını aynı durum dalına geri yönlendirin. Sorgulama dalını asla Create task düğümüne geri yönlendirmeyin.
| Alan | Ayar |
|---|---|
| Yöntem | GET |
| URL | https://api.solvethree.com/v1/tasks/{{ $('Create task').item.json.id }} |
| Kimlik doğrulama | Genel kimlik bilgisi türü |
| Genel kimlik doğrulama türü | Header Auth; aynı kimlik bilgisini seçin |
| Sorgu parametrelerini gönder | Etkinleştirin; 15000 değeriyle waitMs ekleyin |
| Gövde gönder | Devre dışı bırak |
Görev kimliği ifadesi {{ $('Create task').item.json.id }} şeklindedir. En son öğe bir sorgulama yanıtı veya başka iş akışı verileri içerse bile id değerini adı belirtilen oluşturma düğümünden okur. İfadedeki düğüm adını iş akışınızla tutarlı tutun.
GET, 15 saniyeye kadar beklemeyi kabul eder. Bu HTTP isteğine oluşturma isteğiyle aynı zaman aşımı payını tanıyın. Son zaman sınırı yeni sorgulama girişimlerini durdurur; zaten çalışmakta olan bir istek bu sınırdan sonra tamamlanabilir.
n8n dışındaki eşdeğer GET isteği şöyledir:
curl --fail-with-body --max-time 30 \
"https://api.solvethree.com/v1/tasks/$TASK_ID?waitMs=15000" \
-H "Authorization: Bearer $SOLVETHREE_API_KEY"Başka bir görev oluşturmadan zaman aşımına uğrayan POST isteğini kurtarın
Bağlantı zaman aşımı, oluşturmanın başarısız olduğunu kanıtlamaz. Bir kimlik aldıysanız o görevi alın. Almadıysanız mevcut görevi kurtarmak için POST isteğini aynı görev girdileri ve aynı requestId ile tekrarlayın. Bu kimliği farklı görev girdileriyle yeniden kullanmak çakışmaya neden olur.
Benzer şekilde, sorgulama için belirlediğiniz son zaman sınırına ulaşılması yerel bir durdurma koşuludur, başarısız görev durumu değildir. Sonraki bir çalıştırmada başka bir çözüm için ödeme yapmak yerine görevi alabilmek için ilk kimliği saklayın.
Kaynaklar ve API referansı
İlk görevinizi çalıştırın.
$5 çalışma alanı kredisiyle başlayın.