-
curl-impersonate는 주요 웹 브라우저인 Chrome, Edge, Safari, Firefox를 모방할 수 있는 특별한 curl 빌드
- TLS 및 HTTP 핸드셰이크를 실제 브라우저와 동일하게 수행
- 명령줄 도구로 사용하거나 라이브러리로 통합 가능
-
중요성
- HTTP 클라이언트가 TLS 웹사이트에 접근할 때, TLS 핸드셰이크를 수행하며, 이 과정에서 클라이언트의 특성을 식별할 수 있음
-
curl-impersonate는 이러한 핸드셰이크를 실제 브라우저와 동일하게 만들어 웹 서비스가 클라이언트를 식별하지 못하게 함
-
기술적 구현
- Google의 TLS 라이브러리인 BoringSSL을 사용하여 curl을 컴파일함.
- 다양한 TLS 확장 및 SSL 옵션을 수정함.
- HTTP/2 연결 설정을 변경함.
- 비표준 플래그를 사용하여 curl을 실행함.
-
지원 브라우저
- Chrome, Edge, Safari, Firefox 등 다양한 버전의 브라우저를 모방할 수 있음.
- 각 브라우저에 대한 스크립트가 제공되어 있음.
-
기본 사용법
-
고급 사용법
-
libcurl-impersonate 라이브러리를 사용하여 API를 통해 설정 가능함.
-
CURL_IMPERSONATE 환경 변수를 사용하여 라이브러리를 런타임에 대체 가능함.
-
설치
- Windows, Linux, macOS용 사전 컴파일된 바이너리가 GitHub 릴리스 페이지에 제공됨.
- Docker 이미지를 통해도 사용 가능함.
- 이 저장소는 curl-impersonate의 좀 더 활발한 포크로 다음과 같은 주요 차이점이 있음
-
Encrypted Client Hello(ECH) 지원: Chrome 119에서 도입된 ECH 기능 추가.
-
ZSTD 압축 지원: Chrome 123에서 도입된 ZSTD 압축 프로토콜 지원.
-
X25519Kyber768 곡선 지원: Chrome 124에서 도입된 새로운 암호화 곡선 추가.
-
Akamai HTTP/2 지문 옵션 확장: Safari를 포함한 HTTP/2 지문 옵션 강화.
-
최신 curl 버전으로 업그레이드: curl 8.7.1로 버전 업데이트.
-
TLS 확장 순서 및 GREASE 설정 가능: TLS 확장 순서와 GREASE 활성화/비활성화 옵션 추가.
-
Webkit 및 Gecko 기반 브라우저 지원 준비: Chrome과 Firefox를 위한 단일 바이너리 작업 진행 중.