Curl-Impersonate - 더 진짜 브라우저 같은 Curl

2 weeks ago 7

  • 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 등 다양한 버전의 브라우저를 모방할 수 있음.
    • 각 브라우저에 대한 스크립트가 제공되어 있음.
  • 기본 사용법
    • 각 지원 브라우저에 대해 curl-impersonate를 실행하는 래퍼 스크립트가 제공됨.
    • 예: curl_chrome123 https://www.wikipedia.org
  • 고급 사용법
    • 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를 위한 단일 바이너리 작업 진행 중.

Read Entire Article