HTTPie ile CAPTCHA API'sini test edin

solvethree tarafından3 dk okuma

HTTPie ile tek bir görev oluşturun, kimliğini kaydedin ve ardından aynı görevi alın. Bağlantı zaman aşımı sizi başka bir mantıksal görev oluşturmaya zorlamasın diye POST'tan önce bir requestId kaydedin.

Bu sayfada

İsteği hazırlayın

  • HTTPie ve jq'yu yükleyin ve örneği Bash'te çalıştırın. Bu komutlar curl veya curl için bir kabuk takma adı değil, HTTPie'nin http yürütülebilir dosyasını kullanır.
  • SOLVETHREE_API_KEY ortam değişkenini çalışma alanınızın API anahtarına ayarlayın. Bunu güvenilir bir makinede çalıştırın; anahtarı tarayıcı koduna koymayın.
  • Konsolda hedef ana makine adınız için etkin bir profil yapılandırın. Ana makine adı ve eylem göndermek profil oluşturmaz. Site profili kurulumu sayfasına bakın.
  • Örnek ana makine adını, eylemi ve proxy URL'sini değiştirin. Yol, sorgu veya parça içermeyen bir HTTP ya da HTTPS proxy URL'si kullanın.
  • requestId yer tutucusunu bu mantıksal görev için benzersiz bir kimlikle değiştirin: 1–64 ASCII harfi, rakam, alt çizgi veya kısa çizgi. İsteği göndermeden önce kaydedin.

İstek reCAPTCHA Enterprise içindir: recaptchaType varsayılan olarak enterprise-v3 değerindedir. site, action ve proxy veya proxyCandidates alanlarından tam olarak biri gerekir; bu örnekte tek bir proxy kullanılır. type veya url alanı eklemeyin.

Görevi oluşturun ve kimliğini kaydedin

HTTPie · tek bir görev oluşturma ve getirme
set -eu
umask 077
# Install HTTPie and jq. Keep the same request.json for recovery.
cat > request.json <<'JSON'
{
  "site": "accounts.example.com",
  "action": "login",
  "proxy": "http://USER:PASSWORD@PROXY:PORT",
  "requestId": "replace-with-one-unique-logical-task-id"
}
JSON
# This file contains proxy credentials; keep it private.
http --check-status --timeout=30 POST https://api.solvethree.com/v1/tasks \
  Authorization:"Bearer $SOLVETHREE_API_KEY" waitMs==0 < request.json > task.json
TASK_ID=$(jq -r '.id' task.json)
http --check-status --timeout=30 GET "https://api.solvethree.com/v1/tasks/$TASK_ID" \
  Authorization:"Bearer $SOLVETHREE_API_KEY" waitMs==15000
# pending/solving: retrieve the same ID again, within a finite deadline.
# ready: use solution. failed: stop and inspect errorCode/error.
# A timed-out POST is recovered with the unchanged file and requestId.

Tırnak içindeki JSON dizeleri, HTTPie'nin stdin üzerinden okuduğu request.json dosyasına yazılır. Authorization üstbilgisi, anahtarınızı Bearer kimlik doğrulamasıyla gönderir. Proxy kimlik bilgilerini içerdiği için request.json dosyasını gizli tutun.

waitMs==0 ve waitMs==15000, JSON gövde alanları değil, HTTPie sorgu parametreleridir. POST bekleme istemez; GET ise 15,000 ms bekleme kullanır. HTTPie'nin ayrı --timeout=30 seçeneği, 30 saniyelik istemci zaman aşımını ayarlar.

POST yanıtı task.json dosyasına kaydedilir ve jq, GET için bu yanıttaki id değerini çıkarır. Komutları sırayla çalıştırın. HTTPie bir hata bildirirse set -eu, eksik bir yanıt görev alma işleminde kullanılmadan önce betiği durdurur.

HTTP başarısı, görevin hazır olduğu anlamına gelmez

--check-status, başarısız HTTP yanıtlarını yakalar. Gövdeyi başarılı bir görev yanıtı olarak değerlendirmeden önce bunları ele alın. Başarılı bir HTTP isteği yine de tamamlanmamış veya başarısız bir görev döndürebilir; ardından JSON'daki status değerini okuyun.

Görev durumuna göre yapılacaklar
Görev durumuna göre yapılacaklar
DurumSonraki adım
pending veya solvingBelirlediğiniz sonlu bir süre sınırı içinde aynı görev kimliğini tekrar sorgulayın. Bu görev henüz hazır değil diye başka bir görev oluşturmayın.
hazırDöndürülen çözümü kullanın. Kullanılabilir bir çözüm içeren tek durum budur.
failedSorgulamayı durdurun ve errorCode ile error alanlarını inceleyin. Başarısız çözümlerin ücreti iade edilir; geçersiz girdileri değiştirmeden körü körüne yeniden denemeyin.

Örnek, bir sorgulama döngüsü değil, tek bir alma işlemi gerçekleştirir. Hazır bir çözümü amaçlanan hedefine gönderirken, döndürülen userAgent ve secChUa değerlerini başarılı olan proxy ile kullanın. Hazır olması, solvethree'nin bir çözüm ürettiği anlamına gelir; uygulama isteğinizin başarılı olduğu anlamına gelmez.

Zaman aşımına uğrayan POST'u kurtarın

İstemci zaman aşımı, görev oluşturmanın başarısız olduğunu kanıtlamaz. Görev kimliğiniz zaten varsa görevi alın. POST, kimliği almadan önce zaman aşımına uğradıysa ilk requestId dahil olmak üzere değiştirilmemiş request.json ile POST'u yeniden çalıştırın. Aynı kimlik ve görev girdileri mevcut görevi döndürür.

Boş veya eksik bir task.json dosyasından kimlik çıkarmayın; önce POST'u kurtarın. Bu requestId değerini yeniden kullanırken proxy'yi, eylemi veya diğer görev girdilerini değiştirmeyin; farklı girdiler çakışır. Yalnızca yeni bir mantıksal görev oluşturmak istediğinizde yeni bir requestId kullanın.

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

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

Çalışma alanı oluşturun
HTTPie ile CAPTCHA API'sini test edin · solvethree