Python HTTPX ile reCAPTCHA token'ı gönderin

solvethree tarafından2 dk okuma

Hedefe POST isteği gönderirken solution.token değerini, başarılı çözüm proxy'sini ve döndürülen tarayıcı kimliğini kullanın. Uygulamanın çerezlerini tek bir HTTPX istemcisinde tutun; geçerli bir token, uygulamanın oturum veya CSRF gereksinimlerinin yerini almaz.

Bu sayfada

Hazır token'ı başarılı proxy üzerinden gönderin

HTTPX'i pip install httpx ile yükleyin. Örnekte resmi Python SDK'sı da kullanılır; yüklü değilse Python SDK kurulumuna bakın.

Sonucun nereden geldiğini göstermek için örneğe çözüm çağrısı da eklenmiştir. Elinizde zaten ready durumunda bir SDK sonucu varsa bunu özgün request ile birlikte result olarak yeniden kullanın. Sırf token'ını göndermek için başka bir görev oluşturmayın.

  • SOLVETHREE_API_KEY değerini çalışma alanınızın API anahtarına, SOLVETHREE_PROXY değerini ise proxy URL'sine ayarlayın. API anahtarını sunucuda tutun.
  • accounts.example.com, login eylemi ve gönderim URL'sini amaçlanan hedefinizin değerleriyle değiştirin. Ana makine adı için çalışma alanınızda etkin bir site profili bulunmalıdır; site profili kurulumuna bakın.
  • Form alanlarını uygulamanın gerçek isteğine göre uyarlayın. Örnek, eksiksiz bir giriş formu değil, yalnızca CAPTCHA alanını gönderir.
HTTPX · proxy’yi ve döndürülen tarayıcı kimliğini yeniden kullanma
# pip install httpx and the official solvethree SDK wheel.
import os
import httpx
from solvethree import Solvethree, successful_proxy

request = {"site": "accounts.example.com", "action": "login", "proxy": os.environ["SOLVETHREE_PROXY"]}
result = Solvethree(os.environ["SOLVETHREE_API_KEY"]).solve(request, timeout=180)
solution = result["solution"]
proxy = successful_proxy(request, result)
if proxy is None:
    raise RuntimeError("No valid successful proxy")
with httpx.Client(proxy=proxy, timeout=30, follow_redirects=False, trust_env=False) as target:
    # Use this client's cookie jar for any required application session first.
    response = target.post("https://accounts.example.com/login",
        data={"g-recaptcha-response": solution["token"]},
        headers={"User-Agent": solution["userAgent"], "sec-ch-ua": solution["secChUa"]})
    print("Application HTTP status:", response.status_code)
    # Check the application's actual response and required CSRF/session fields.

successful_proxy(request, result), gönderim için yeniden kullanılacak proxy'yi seçer. Geçerli bir proxy döndürülmediğinde gönderimi durduran kontrolü koruyun. HTTPX'in güncel tekil proxy= parametresini kullanın; proxies= kullanmayın. trust_env=False ayarı, ortam proxy ayarlarının açıkça seçilen rotayı değiştirmesini önler.

Çerezleri, tarayıcı kimliğini ve form alanlarını bir arada tutun

Uygulama, oturum oluşturmak veya CSRF değeri almak için önce bir sayfa isteği gerektiriyorsa bu isteği POST'tan önce aynı HTTPX istemcisi içinde yapın. İstemcinin çerez deposu, çerezleri istekler arasında korur. Ayrı bir istemci bu oturuma otomatik olarak sahip olmaz.

Bu ön isteklerde de ilgisiz bir tarayıcı kimliği yerine döndürülen userAgent ve secChUa değerlerini kullanın. Örnek, bunları POST isteğinde User-Agent ve sec-ch-ua olarak sağlar. Çözümü amaçlanan hedefe gönderirken bu üst bilgileri ve başarılı proxy'yi tutarlı biçimde kullanın.

data= form verisi gönderir. Burada g-recaptcha-response, solution.token değerini alır; görev kimliğini veya çözüm sözlüğünün tamamını almamalıdır. Alan adını hedefin gerçek isteğiyle eşleştirin ve gerekli kimlik bilgilerini, gizli alanları ve CSRF değerini aynı gönderime ekleyin.

Gönderimi başarılı saymadan önce yönlendirmeleri inceleyin

follow_redirects=False, uygulamanın ilk yanıtının görünür kalmasını sağlar. Yanıt bir yönlendirme içeriyorsa aynı istemciyle uygulamanın beklenen sonraki adımını açıkça izlemeden önce durumunu ve hedefini inceleyin. Token'ı farklı bir URL'ye otomatik olarak yeniden göndermeyin.

Yazdırılan HTTP durumu yalnızca bir başlangıç noktasıdır. Hedefin isteği kabul edip etmediğini belirlemek için yanıt gövdesini, yönlendirme hedefini veya oluşan uygulama durumunu kontrol edin. 200 yanıtı veya yönlendirme, başarıyı da hata akışını da temsil edebilir; solvethree'nin ready durumu, hedefin çözümü kabul ettiği değil, bir çözüm üretildiği anlamına gelir.

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

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

Çalışma alanı oluşturun
Python HTTPX ile reCAPTCHA token'ı gönderin · solvethree