원문 캡처 · github.com
원문 캡처 · github.com

impersonate-http는 Go의 http.Client에서 브라우저별 TLS·HTTP/2 지문과 기본 헤더를 맞추는 라이브러리다. 제작자는 이를 통해 JA3·JA4 및 Akamai HTTP/2 지문을 이용한 수동 네트워크 탐지에 대응할 수 있다고 설명한다. 헤드리스 브라우저나 CGo, libcurl은 필요하지 않으며, 기반 기술은 uTLS다.

설치는 다음 명령으로 한다.

go get github.com/North-web-dev/impersonate-http ```

```go
package main

import (
 "fmt"
 "io"

 impersonate "github.com/North-web-dev/impersonate-http"
)

func main() {
 client := impersonate.New(impersonate.Chrome) // a stock *http.Client
 resp, err := client.Get("https://example.com")
 if err != nil {
 panic(err)
 }
 defer resp.Body.Close()
 body, _ := io.ReadAll(resp.Body)
 fmt.Println(resp.Status, len(body), "bytes")
}

반환된 클라이언트는 http.DefaultClient처럼 사용할 수 있다. Chrome, ChromeAndroid, Firefox, Safari, Edge, IOS 프로필을 제공하며, 프로필 이름으로 선택하거나 기존 클라이언트에 전송 계층을 붙일 수 있다. 호출자가 직접 지정한 헤더는 프로필 기본값으로 덮어쓰지 않는다.

go
client, ok := impersonate.NewByName("firefox")
go
c := &http.Client{Transport: impersonate.NewTransport(impersonate.Safari)}

측정값은 제작자가 2026-10-25에 uTLS v1.8.2와 go run ./cmd/measure를 사용해 tls.peet.ws에서 수집했다고 밝힌 자료다. 프로필별 JA4와 HTTP/2(Akamai) 지문이 제시돼 있으며, 측정 재현 도구로 다시 측정할 수 있다. 제작자는 JA3보다 JA4를 일치 기준으로 권한다. Chrome은 연결마다 TLS 확장 순서를 섞기 때문에 JA3 해시가 달라질 수 있지만, JA4는 확장을 정렬해 안정적이라는 설명이다.

Edge에는 한계가 있다. 실제 Edge 131은 Chrome처럼 확장 순서를 바꾸지만, uTLS의 HelloEdge_Auto는 이를 재현하지 않는다. 따라서 TLS 버전·암호군 목록·ALPN은 맞지만 연결별 순서 섞기는 구현하지 못하며, 이 동작이 필요하면 제작자는 Chrome 사용을 권한다. 프로필은 uTLS의 *_Auto 템플릿을 따르므로 브라우저의 안정 버전이 바뀌면 업데이트될 수 있고, JA4의 세 번째 구간도 브라우저의 점 단위 업데이트에 따라 달라질 수 있다.

라이브러리는 TLS ClientHello와 HTTP/2의 SETTINGS 순서·값, WINDOW_UPDATE 증가값, 의사 헤더 순서를 프로필에 맞춘다고 설명한다. 반면 일반 헤더 순서는 최선 노력 방식이며, HTTP/3(QUIC)과 동적 TLS 세션 재개 티켓·0-RTT는 지원하지 않는다. 매 연결에서 전체 TLS 핸드셰이크를 수행한다. 자바스크립트 엔진이나 DOM이 없고, 브라우저 실행을 요구하는 능동형 챌린지도 해결하지 않으므로 수동 네트워크 지문 대응과 브라우저 대체는 구분해야 한다.

프록시는 socks5:// 또는 http(s):// 주소를 지원하며, 사용자 지정 다이얼러도 연결할 수 있다. WebSocket의 wss://에도 프로필 다이얼러를 사용할 수 있다. 언어에 관계없이 호출할 수 있는 API 서버도 제공한다. cmd/serve를 실행하면 URL과 프로필을 받아 요청을 보내는 /fetch 엔드포인트 등을 사용할 수 있으며, 인증 키와 키별 제한은 선택 사항이다. 키 옵션 없이 실행하면 API가 공개 상태가 된다.

저장소에는 프로필별 지문 자료를 담은 fingerprint-db와 자체 측정 환경인 fpcheck도 연결돼 있다. 프로젝트는 MIT 라이선스로 제공된다(LICENSE).