fix: use curl_cffi Chrome TLS impersonation for Claude provider
claude.ai has the same Cloudflare TLS fingerprinting protection as chatgpt.com. Apply the same fix: curl_cffi impersonate=chrome120, remove base class User-Agent to avoid JA3/UA mismatch. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -1,7 +1,7 @@
|
||||
"""Debug script — tests Claude API connectivity."""
|
||||
"""Debug script — tests Claude API connectivity using curl_cffi Chrome impersonation."""
|
||||
import os
|
||||
from dotenv import load_dotenv
|
||||
import requests
|
||||
from curl_cffi import requests as curl_requests
|
||||
|
||||
load_dotenv()
|
||||
key = os.getenv("CLAUDE_SESSION_KEY")
|
||||
@@ -9,16 +9,14 @@ if not key:
|
||||
print("ERROR: CLAUDE_SESSION_KEY not found in .env")
|
||||
raise SystemExit(1)
|
||||
|
||||
s = requests.Session()
|
||||
# Test 1: cookie as a jar entry (correct way)
|
||||
s = curl_requests.Session(impersonate="chrome120")
|
||||
s.cookies.set("sessionKey", key, domain="claude.ai", path="/")
|
||||
s.headers.update({
|
||||
"User-Agent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/121.0.0.0 Safari/537.36",
|
||||
"Referer": "https://claude.ai/",
|
||||
"Accept": "application/json",
|
||||
})
|
||||
|
||||
print("Calling /api/organizations (cookie jar) ...")
|
||||
print("Calling /api/organizations (with Chrome TLS impersonation) ...")
|
||||
r = s.get("https://claude.ai/api/organizations", timeout=15)
|
||||
print(f"Status: {r.status_code}")
|
||||
print(f"Response (first 300 chars): {r.text[:300]}")
|
||||
print(f"Response (first 400 chars): {r.text[:400]}")
|
||||
|
||||
Reference in New Issue
Block a user