CAPTCHA API anahtarınızı tarayıcı JavaScript kodundan uzak tutun

solvethree tarafından3 dk okuma

solvethree çalışma alanı API anahtarını sunucunuzda tutun. Formu ve uygulama oturumunu tarayıcı yönetir; görev oluşturmayı ve almayı ise kimlik doğrulamalı arka ucunuz yönetir. Tarayıcıdan sızan bir anahtarın yerine, herkesin çalışma alanı bakiyenizi harcamak için kullanabileceği sınırsız bir arka uç rotası koymayın.

Bu sayfada

NEXT_PUBLIC, çalışma alanı anahtarı için yanlış yerdir

Çalışma alanı anahtarı, solvethree isteklerinde Authorization: Bearer ile kimlik doğrulaması sağlar. Bunu tarayıcı JavaScript'ine koymak, NEXT_PUBLIC_SOLVETHREE_API_KEY gibi derlemeye dahil edilen herkese açık bir ortam değişkeni aracılığıyla olsa bile, kimlik bilgisini tarayıcıya açar. Değeri gizlemek veya yalnızca doğrudan fetch çağrısı yaparken eklemek onu gizli yapmaz.

SOLVETHREE_API_KEY değerini yalnızca sunucuya özel yapılandırmada tutun ve yalnızca güvenilir sunucu kodunda kullanın. Tarayıcı, çalışma alanı anahtarınızla solvethree görev API'sini değil, uygulamanızın rotasını çağırmalıdır.

Görev girdilerini yalnızca sunucuda çalışan bir yardımcıda tutun

Yalnızca sunucuda çalışan yardımcı · çalışma alanı kimlik bilgilerini burada tutma
// Import only from trusted server code. Your application authenticates the caller.
import { Solvethree } from '@solvethree/sdk';
const client = new Solvethree({ apiKey: process.env.SOLVETHREE_API_KEY });
export async function createCaptchaForLogin(requestId) {
  return client.createTask({
    site: process.env.CAPTCHA_SITE,
    action: 'login',
    proxy: process.env.SOLVETHREE_PROXY,
    requestId,
  }, { waitMs: 0, signal: AbortSignal.timeout(20000) });
}
// The browser calls your authenticated application route, not the solver API.
// Save the returned task ID; retrieve that ID from server code with getTask.
// Submit a ready token using the proxy/browser identity attached to that solve.
// Merely moving the key server-side does not configure the browser's proxy.

Sunucuda SOLVETHREE_API_KEY, CAPTCHA_SITE ve SOLVETHREE_PROXY değerlerini yapılandırın. CAPTCHA_SITE tam URL değil, hedef ana makine adıdır. Yardımcı, eylemi login olarak sabitler ve tek bir proxy sağlar; tarayıcı bu girdilerin hiçbirini seçmez.

Yardımcıyı çağırmadan önce çalışma alanında bu ana makine adı için etkin bir profil oluşturun. site ve action göndermek profil oluşturmaz. Site profili kurulumuna bakın.

waitMs: 0, çözümün tamamlanmasını beklemeden oluşturma isteğinde bulunur. Dönen görev kimliğini kaydedin ve görevi sunucu kodundan getTask ile alın. Yardımcının 20 saniyelik iptal sinyali bu isteğin süresini sınırlar; çözümün 20 saniye içinde tamamlanacağını garanti etmez.

Genel amaçlı bir çözücü değil, giriş işlemi sunun

Yardımcı tek başına kimlik doğrulamalı bir rota değildir. Tarayıcı isteklerini kabul etmeden önce çevresine şu kontrolleri ekleyin:

Tarayıcıdan arka uca istek sözleşmesi
Tarayıcıdan arka uca istek sözleşmesi
İşlemTarayıcının gönderdikleriArka ucun yaptıkları
Giriş çözümünü başlatmaUygulama oturumu ve bu giriş denemesi için bir requestId.Çağıranın kimliğini doğrular, denemeyi doğrular, oluşturma sınırlarını kontrol eder ve girdileri sabitlenmiş yardımcıyı çağırır. Görev kimliğini bu çağıran ve denemeyle ilişkilendirerek kaydeder; yalnızca arayüzün ihtiyaç duyduğu görev kimliğini ve durumu döndürür.
İlerlemeyi okumaUygulama oturumu ve bu deneme için döndürülen görev kimliği.Görevi almadan önce çağırana ait olduğunu kontrol eder. İlerlemeyi, kontrollü bir hata yanıtını veya gönderim yapmaya yetkili istemcinin ihtiyaç duyduğu hazır sonucu döndürür.

Tarayıcının sağladığı görev gövdesini iletmeyin. Başka bir ana makine adı, eylem, proxy veya görev türü seçme girişimlerini reddedin. Çağıran veya uygulama oturumu başına oluşturma sınırı uygulayın: kimliği doğrulanmış bir çağıran da yeni görevler başlatarak krediyi tüketebilir. Rota çerezle kimlik doğrulama kullanıyorsa görev oluşturan istekleri siteler arası istek sahteciliğine karşı koruyun.

Görev kimliği yetkilendirme sağlamaz. Her ilerleme isteğinde sahipliği kontrol edin ve tarayıcı yanıtlarında çalışma alanı kimlik bilgilerini veya sunucu proxy kimlik bilgilerini döndürmeyin.

Başka bir görev oluşturmadan önce mevcut görevi kurtarın

  • Mantıksal giriş denemesi boyunca tek bir requestId kullanın. Belgelenen biçimini doğrulayın: 1–64 ASCII harfi, rakam, alt çizgi veya kısa çizgi. Bunu çağıranın denemesine bağlayın; bu bir kimlik doğrulama bilgisi değildir.
  • Oluşturma zaman aşımına uğrarsa bu requestId değerini ve ilk görev girdilerini koruyun. Aynı isteği aynı kimlikle tekrarlamak mevcut görevi kurtarır. Kimliği yeniden kullanırken girdileri değiştirmek çakışmaya yol açar.
  • Başarı yanıtının yükünü yorumlamadan önce başarısız HTTP yanıtlarını işleyin. Alınan bir görevde pending ve solving, sorgulamaya devam etmeniz gerektiği; ready ise çözümün kullanılabilir olduğu anlamına gelir.

Görev kimliğini aldıktan sonra her tarayıcı yenilemesinde veya ilerleme isteğinde yeni bir çözüm başlatmak yerine o görevi alın. Hataları teşhis etmek için API hata işlemeye bakın.

Token'ı hangi istemcinin göndereceğine karar verin

Hazır token'ı tarayıcıya döndürmeden önce hedef isteğin nerede çalışacağına karar verin. Gönderimi yapan istemci, döndürülen userAgent ve secChUa kimliğini ve bu çözümde başarılı olan proxy'yi kullanmalıdır. Çalışma alanı anahtarını arka uca taşımak, tarayıcının proxy'sini yapılandırmaz.

Tarayıcı bu ayarlarla gönderim yapamıyorsa ona yalnızca token'ı vermek tam bir entegrasyon değildir. Başka bir oturumun kimliğini, proxy'sini veya hedef URL'sini karıştırmadan, tutarlı biçimde yapılandırabildiğiniz bir gönderim istemcisi kullanın. Hazır bir görev, solvethree'nin çözüm ürettiği anlamına gelir; hedefin sonraki isteği kabul ettiği anlamına gelmez.

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

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

Çalışma alanı oluşturun
CAPTCHA API anahtarınızı tarayıcı JavaScript kodundan uzak tutun · solvethree