Web istemcisi User-Agent: Mozilla/… (tarayıcı)
Web kimliği tarayıcının kendi User-Agent'ından anlaşılır; istemci tarafında hiçbir ayar yok. WAF kuralı web trafiğini Managed Challenge'a sokar. Turnstile pre-clearance modunda olduğundan çözülünce tarayıcıya cf_clearance cookie'si verilir ve sonraki /api çağrıları challenge'sız geçer. Önemli: cookie tarayıcının gerçek User-Agent'ına bağlıdır; bu yüzden fetch UA'yı değiştirmez.
Henüz istek yok.
Mobil istemcisi X-App-Version header'ı var
Mobil kimliği X-App-Version header'ından anlaşılır; User-Agent'a dokunulmaz. Uygulama önce App Check token alır (demo issuer: POST /appcheck/token), sonra X-Firebase-AppCheck ile API'yi çağırır. Ayrıca uygulama anonim Firebase Auth ile bir uid alır ve Authorization: Bearer <ID token> gönderir; uid Google imzalı olduğu için istemci değiştiremez, sayaçlar ve session identifier buna bağlıdır. API Shield her iki JWT'yi doğrular; WAF kuralları claim'leri ve minimum sürümü (3.0+) denetler.
Henüz istek yok.
Bilinmeyen istemci ne X-App-Version ne tarayıcı UA
Ne X-App-Version taşıyan ne de tarayıcı UA'sı olan istemciler (curl, Postman, boş UA) /api/* için bloklanır. Bu buton User-Agent: curl/8.0 ile dener; tarayıcı UA override'a izin vermezse istek gerçek UA ile gider ve web kuralına düşer.
Henüz istek yok.