JA3와 JA4 TLS fingerprinting 설명 (그리고 당신의 것을 테스트하는 법)

2026년 6월 4일 게시 · 약 9분 소요

당신의 스크래퍼는 완벽한 Chrome 헤더를 보내고, 깨끗한 주거용 IP 뒤에서 동작하는데도 첫 번째 요청부터 403을 받습니다. captcha도, 챌린지 페이지도, 풀어야 할 것도 전혀 없습니다. 사이트는 단 하나의 HTTP 바이트가 오가기도 전에 당신을 식별했습니다 — 바로 TLS 핸드셰이크 도중에 말입니다.

이 글은 JA3와 JA4 fingerprinting이 실제로 어떻게 작동하는지, 왜 이것이 2026년 모든 주요 anti-bot 시스템의 조용한 일꾼인지, 그리고 당신 자신의 fingerprint를 10초 만에 확인하는 방법을 설명합니다. 우회 도구부터 알고 싶다면 curl_cffi와 tls-client로 TLS Fingerprinting 우회하기에서 다뤘습니다 — 이 글은 탐지 측이 어떻게 동작하는지를 다루는 짝꿍 글입니다.

10초 테스트

이론에 앞서 당신 자신의 핸드셰이크를 살펴보세요. 우리의 무료 JA3/JA4 체커를 열어보세요 — 당신의 클라이언트가 방금 제시한 TLS fingerprint를 그대로 되돌려주고 무엇과 일치하는지 알려줍니다:

# From a terminal - see what curl's TLS looks like:
curl https://www.jibaoproxy.com/tools/fingerprint.html

# Then open the same URL in Chrome and compare.

둘 다 실행해보면 이 글 전체의 요점을 보게 됩니다: curl과 Chrome은 완전히 다른 fingerprint를 만들어냅니다. 당신이 어떤 User-Agent 헤더를 설정하든 상관없습니다.

TLS 핸드셰이크에서 일어나는 일

모든 HTTPS 연결은 ClientHello 메시지로 시작하며, 이는 어떤 암호화가 시작되기도 전에 평문으로 전송됩니다. 그 안에서 당신의 클라이언트는 다음을 알립니다:

여기에 탐지의 핵심 통찰이 있습니다: 이 목록들과 그 정확한 순서는 당신의 클라이언트가 컴파일된 TLS 라이브러리에 그대로 박혀 있습니다. Chrome의 BoringSSL은 특정한 한 가지 조합을 알립니다. Python의 OpenSSL은 다른 조합을 알립니다. Go의 crypto/tls는 또 다른 세 번째를 알립니다. 헤더로는 이것을 바꿀 수 없습니다 — 이는 HTTP 계층 아래에서, 라이브러리 자체에 의해 협상됩니다.

JA3: 핸드셰이크를 해싱하기

JA3(Salesforce, 2017)는 다섯 개의 ClientHello 필드 — TLS 버전, cipher, extension, curve, point format — 를 하나의 문자열로 연결한 뒤 MD5로 해싱합니다:

771,4865-4866-4867-49195-49199,0-23-65281-10-11-35-16,29-23-24,0
              |
              v  MD5
        cd08e31494f9531f560d64c695473da9

TLS 스택마다 하나의 해시가 나옵니다. Windows의 Chrome 137 사본은 모두 (거의) 동일한 JA3를 만들고, OpenSSL 3.x의 모든 python-requests는 동일하지만 그와는 다른 JA3를 만듭니다. 방어자들은 조회 테이블을 유지합니다: 해시 X = Chrome, 해시 Y = requests, 해시 Z = Go 봇. 당신의 User-Agent가 Chrome이라고 말하는데 당신의 JA3가 OpenSSL이라고 말하면, 당신은 차단됩니다 — 즉시, 조용히, 저렴하게.

JA4: 2026년 표준

JA3에는 문제가 있었습니다: Chrome이 2023년에 extension 순서를 무작위화하기 시작했고(순진한 JA3를 깨뜨림), MD5는 구조화되어 있지 않습니다 — 해시 하나로는 두 클라이언트가 다른지 아무것도 알 수 없습니다. JA4(FoxIO, 2023)는 둘 다 해결했고, 오늘날 진지한 벤더들이 운용하는 방식입니다:

JA4 = t13d1516h2_8daaf6152771_b0da82dd1658
       |            |             |
       a: protocol  b: ciphers    c: extensions
       (TLS 1.3, 16 ciphers,      (sorted, truncated
        h2 ALPN, domain SNI)       SHA256)

누가 이걸 당신에게 쓰는가

중요한 모든 시스템이 그렇습니다: Cloudflare는 자사 bot-management 규칙에서 JA3/JA4를 직접 노출합니다; DataDome과 PerimeterX는 이를 네트워크 계층 스코어링에 반영합니다(우리의 DataDome/PerimeterX 가이드 참고); Akamai는 그 누구보다 가장 오래 TLS fingerprinting을 운용해 왔습니다. 이것이 인기 있는 이유는 계산이 공짜이고, HTTP 계층에서는 위조가 불가능하며, 순진한 자동화의 90%를 잡아내기 때문입니다 — 지금까지 작성된 모든 requests/httpx/axios/Go-http 스크립트를 — JavaScript가 실행될 필요도 없이 말입니다.

왜 프록시만으로는 도움이 안 되는가

이것이 사람들을 놀라게 합니다: 프록시는 당신의 IP를 바꾸지만, 당신의 TLS 핸드셰이크는 그대로 통과합니다. CONNECT 터널(또는 SOCKS5 스트림)은 당신의 ClientHello 바이트를 대상에게 한 글자도 바꾸지 않고 전달합니다. 주거용 IP + requests 라이브러리 JA3 = "주거용 IP에서 실행되는 봇." 데이터센터 IP보다는 낫지만, 여전히 봇입니다.

IP와 TLS fingerprint는 독립적인 신호이며 둘 다 깨끗해야 합니다:

IPTLS fingerprint2026년의 판정
데이터센터라이브러리(requests/Go)신경 쓰는 모든 곳에서 차단
주거용라이브러리JA4를 검사하는 사이트에서 차단
데이터센터브라우저 임퍼소네이션IP 평판으로 차단
주거용브라우저 임퍼소네이션네트워크 계층 검사 통과

당신의 Fingerprint를 당신의 이야기와 일치시키기

도구에 따라 두 가지 경로가 있습니다:

HTTP 클라이언트 — 브라우저의 정확한 ClientHello를 다시 구현하는 임퍼소네이션 라이브러리를 사용하세요: curl_cffi(Python), tls-client(Python/Go), got-scraping(Node). 완전히 동작하는 코드는 curl_cffi 가이드에 있습니다:

from curl_cffi import requests

r = requests.get(
    "https://target.example",
    impersonate="chrome",
    proxies={"https": "socks5h://USERNAME:[email protected]:913"},
)

실제 브라우저(Playwright, 브라우저 에이전트, anti-detect 브라우저) — TLS 계층에서는 할 일이 없습니다; fingerprint가 진짜 Chrome의 것입니다. 위험은 다른 곳에 있습니다: IP 평판과 CDP 탐지입니다.

그런 다음 가정하지 말고 검증하세요. 버전은 표류합니다 — Chrome 120의 핸드셰이크에 고정된 임퍼소네이션 라이브러리는 2026년에 "의심스럽게 오래된 브라우저"로 읽힙니다. 의존성을 업데이트할 때마다 다시 테스트하세요:

Free tool · no signup

지금 바로 당신의 JA3 / JA4를 확인하세요

우리의 체커는 당신의 클라이언트가 제시하는 TLS fingerprint를 그대로 보여주고, 어떤 스택과 일치하는지(Chrome / Firefox / OpenSSL / Go) 식별하며, UA와 TLS 불일치를 플래그합니다 — anti-bot 시스템이 실행하는 바로 그 검사입니다.

내 TLS fingerprint 테스트하기 →

Fingerprint는 깨끗한데도 여전히 차단되나요? 나머지 절반은 IP 평판입니다 — 500MB 무료 트래픽으로 주거용 IP를 테스트하세요 →

요약

깨끗한 Fingerprint, 깨끗한 IP

임퍼소네이트한 TLS를 주거용 IP와 짝지으세요 — 500MB 무료 트래픽, 카드 불필요.

무료 체험 시작하기

모든 IP 제품 · 언제든 이용 가능한 방대한 노드 풀

지금 가입하고 충전 금액의 최대 100%를 돌려받으세요

신규 사용자는 가입 시 500MB를 받고, 첫 충전 시 추가 보너스를 받습니다. 기간 한정 혜택입니다.