Curl-impersonate: 주요 브라우저를 모방할 수 있는 특별한 curl 빌드

18 hours ago 3

curl-impersonate

특정 브라우저를 모방할 수 있는 curl의 특별한 빌드로, Chrome, Edge, Safari, Firefox를 모방할 수 있음. curl-impersonate는 실제 브라우저와 동일한 TLS 및 HTTP 핸드셰이크를 수행할 수 있음. 명령줄 도구로 사용하거나 라이브러리로 통합 가능함.

왜 필요한가?

  • HTTP 클라이언트가 TLS 웹사이트와 통신할 때, 첫 번째로 TLS 핸드셰이크를 수행함. 이때의 첫 메시지를 Client Hello라고 부름.
  • 대부분의 HTTP 클라이언트와 라이브러리가 생성하는 Client Hello 메시지는 실제 브라우저와 크게 다름.
  • 서버가 HTTP/2를 사용할 경우, TLS 핸드셰이크 외에도 HTTP/2 핸드셰이크가 필요하며, 이때 교환되는 설정도 실제 브라우저와 다름.
  • 이러한 이유로, 일부 웹 서비스는 TLS 및 HTTP 핸드셰이크를 통해 클라이언트를 식별하고, 다른 클라이언트에 대해 다른 콘텐츠를 제공함.
  • 이러한 방법은 TLS 핑거프린팅 및 HTTP/2 핑거프린팅으로 알려져 있으며, 웹을 덜 개방적이고 덜 개인적이며 특정 웹 클라이언트에 대해 더 제한적으로 만듦.
  • 이 저장소의 수정된 curl은 TLS 및 HTTP 핸드셰이크가 실제 브라우저와 정확히 동일하게 보이게 함.

어떻게 작동하는가?

  • curl을 브라우저처럼 보이도록 상당히 수정함.
  • Firefox가 사용하는 TLS 라이브러리인 nss로 curl을 컴파일하고, Chrome 버전은 Google's TLS 라이브러리인 BoringSSL로 컴파일함.
  • 다양한 TLS 확장 및 SSL 옵션을 구성하는 방법을 수정함.
  • 새로운 TLS 확장 지원 추가.
  • HTTP/2 연결에 대한 curl의 설정 변경.
  • --ciphers, --curves 및 일부 -H 헤더와 같은 비기본 플래그로 curl 실행.

지원되는 브라우저

  • 다양한 버전의 Chrome, Edge, Firefox, Safari를 모방할 수 있음.
  • 각 브라우저에 대한 래퍼 스크립트가 제공되어 curl-impersonate를 실행함.

기본 사용법

  • 지원되는 각 브라우저에 대해 필요한 헤더와 플래그로 curl-impersonate를 실행하는 래퍼 스크립트가 있음.
  • 예: curl_chrome116 https://www.wikipedia.org

문서

  • 추가 문서는 docs/ 디렉토리에 있음.

설치

  • curl-impersonate는 기술적 이유로 두 가지 버전이 있음. Chrome, Edge, Safari를 모방하는 chrome 버전과 Firefox를 모방하는 firefox 버전이 있음.
  • Linux 및 macOS용 사전 컴파일된 바이너리는 GitHub 릴리스 페이지에서 제공됨.

고급 사용법

libcurl-impersonate

  • libcurl-impersonate.so는 명령줄 curl-impersonate와 동일한 변경 사항으로 컴파일된 libcurl임.
  • 추가 API 함수 curl_easy_impersonate를 제공함.

CURL_IMPERSONATE 환경 변수 사용

  • 이미 libcurl을 사용하는 애플리케이션에서 LD_PRELOAD를 사용하여 기존 라이브러리를 런타임에 대체 가능함.
  • CURL_IMPERSONATE 환경 변수를 설정하여 모든 옵션을 자동으로 설정 가능함.

기여

  • 오픈 이슈를 확인하고, 변경 사항을 포함한 풀 리퀘스트를 열어 기여 가능함.

스폰서

  • 프로젝트를 오픈하고 유지하는 데 도움을 주는 스폰서가 있음. 스폰서가 되고 싶다면 직접 연락 가능함.

Read Entire Article