LangChain agents use Python httpx as their default HTTP client, producing distinctive JA4 TLS fingerprints. CounterAgent identifies LangChain traffic by correlating JA4 fingerprints with User-Agent patterns and request timing.
| Framework | JA4 | HTTP Client | Notes |
|---|---|---|---|
| LangChain 0.2.x | t13d3514h2_bfa337485184_* | httpx | Python ssl module, 35 ciphers |
| LangChain + requests | t13d351300_bfa337485184_* | urllib3 | Same cipher hash, different extension hash |
| LangServe | t13d3514h2_bfa337485184_* | httpx | Server-side deployment |
langchain-python/0.2.x (when not spoofed)/api/, /v1/, /invoke, /streamfrom langchain_core.tools import tool
from counteragent import Client
ca = Client(api_key="ca_live_...")
@tool
def check_agent(user_agent: str, ja4: str = None) -> dict:
"""Check if a request is from a known AI agent."""
return ca.detect(user_agent=user_agent, ja4=ja4)