CloudScraper에서 프록시 사용 방법

이 가이드로 CloudScraper 프록시 통합을 마스터하세요: 설정, IP 회전, 인증된 프록시 사용을 통해 원활한 스크래핑을 구현합니다.
2 분 읽기
How to Use Proxies With CloudScraper blog image

이 가이드에서는 다음을 배우게 됩니다:

  • CloudScraper란 무엇이며 어떤 용도로 유용한지
  • Cloudscraper에 프록시를 통합해야 하는 이유
  • 단계별 가이드로 설정하는 방법
  • Cloudscraper에서 프록시 로테이션 구현 방법
  • 인증된 프록시 처리 방법
  • Bright Data와 같은 프리미엄 프록시 제공업체 사용 방법

자, 시작해 보겠습니다!

CloudScraper란 무엇인가요?

CloudScraper는 Cloudflare의 안티봇 페이지(일반적으로 “I’m Under Attack Mode” 또는 IUAM으로 알려짐)를 우회하도록 설계된 Python 모듈입니다. 내부적으로는 가장 인기 있는 Python HTTP 클라이언트 중 하나인 Requests를 사용하여 구현됩니다.

이 라이브러리는 Cloudflare로 보호되는 웹사이트를 스크래핑하거나 크롤링하는 데 특히 유용합니다. 현재 안티봇 페이지는 클라이언트가 JavaScript를 지원하는지 여부를 확인하지만, Cloudflare는 향후 추가 기술을 도입할 수도 있습니다.

Cloudflare가 정기적으로 안티봇 솔루션을 업데이트하므로, 이 라이브러리도 기능을 유지하기 위해 주기적으로 업데이트됩니다.

CloudScraper에서 프록시를 사용해야 하는 이유

Cloudflare는 과도한 요청 시 IP를 차단할 수 있습니다. 마찬가지로 CloudScraper 같은 도구로도 우회하기 어려운 정교한 방어 체계를 작동시킬 수 있습니다. 이를 완화하려면 IP 주소를 안정적으로 회전시키는 방법이 필요합니다.

이때 프록시 서버가 필요합니다. 프록시는 스크레이퍼와 대상 웹사이트 사이의 중개자 역할을 하며, 실제 IP 주소를 프록시 서버의 IP로 가립니다. 하나의 IP가 차단되면 새 프록시로 빠르게 전환하여 중단 없는 접근을 보장할 수 있습니다.

CloudScraper를 이용한 웹 스크래핑에서 프록시는 두 가지 핵심 이점을 제공합니다:

  1. 보안 및 익명성 강화: 프록시를 통해 요청을 전달함으로써 사용자의 실제 신원이 숨겨져 탐지 위험이 감소합니다.
  2. 차단 및 중단 회피: 프록시를 통해 IP 주소를 동적으로 회전시켜 차단 및 속도 제한을 우회할 수 있습니다.

CloudScraper와 같은 도구와 프록시를 결합하면 위험을 최소화하고 효율성을 극대화하는 강력한 웹 스크래핑 환경을 구축할 수 있습니다. 이 이중 레이어 접근 방식은 고급 반스크래핑 조치를 적용한 사이트에서도 안전하고 원활한 데이터 추출을 보장합니다.

CloudScraper로 프록시 설정하기: 단계별 가이드

이 안내 섹션에서 CloudScraper와 함께 프록시를 사용하는 방법을 알아보세요!

1단계: CloudScraper 설치

다음 명령어를 사용하여 cloudscraper pip 패키지를 통해 CloudScraper를 설치할 수 있습니다:

pip install -U cloudscraper

Cloudflare는 봇 방지 엔진을 지속적으로 업데이트합니다. 따라서 패키지 설치 시 -U 옵션을 포함하여 최신 버전을 확보하세요.

2단계: Cloudscraper 초기화

시작하려면 먼저 CloudScraper를 임포트하세요:

import cloudscraper

다음으로 create_scraper() 메서드를 사용하여 CloudScraper 인스턴스를 생성합니다:

scraper = cloudscraper.create_scraper()

스크레이퍼 객체는 requests 라이브러리의 Session 객체와 유사하게 작동합니다. 특히 Cloudflare의 봇 방지 조치를 우회하면서 HTTP 요청을 수행할 수 있게 해줍니다.

3단계: 프록시 통합

CloudScraper는 Requests를 기반으로 구축되었으므로 프록시 통합 방식도Requests와 동일합니다. 해당 절차가 익숙하지 않다면 Requests에서 프록시 설정 방법에 대한 튜토리얼을 참고하세요.

CloudScraper에서 프록시를 사용하려면 아래와 같이 proxies 사전(dictionary)을 정의하고 get() 메서드에 전달해야 합니다:

proxies = {
   "http": "<YOUR_HTTP_PROXY_URL>",
   "https": "<YOUR_HTTPS_PROXY_URL>"
}

# 지정된 프록시를 통해 요청 수행
response = scraper.get("<YOUR_TARGET_URL>", proxies=proxies)

get() 메서드의 proxies 매개변수는 Requests로 전달됩니다. 이를 통해 HTTP 클라이언트는 대상 URL의 프로토콜에 따라 지정된 HTTP 또는 HTTPS 프록시 서버를 통해 요청을 라우팅할 수 있습니다.

4단계: CloudScraper 프록시 통합 설정 테스트

데모 목적으로 HTTPBin 프로젝트의 /ip 엔드포인트를 대상으로 합니다. 이 엔드포인트는 호출자의 IP 주소를 반환합니다. 모든 것이 예상대로 작동한다면 응답에는 프록시 서버의 IP 주소가 표시되어야 합니다.

설정 테스트를 위해 무료 프록시 목록에서 프록시 서버 IP를 얻을 수 있습니다.

경고: 무료 프록시는 종종 신뢰할 수 없고, 데이터 수집을 하며, 잠재적으로 안전하지 않을 수 있습니다—특히 시장에서 최고의 프록시 제공업체 중 하나에서 제공되지 않는 경우 더욱 그렇습니다. 교육 목적으로만 사용하도록 하십시오.

다음과 같은 프록시 서버 URL을 가정해 보겠습니다:

http://202.159.35.121:443

CloudScraper에 이를 통합하는 방법은 다음과 같습니다:

import cloudscraper

# CloudScraper 인스턴스 생성
scraper = cloudscraper.create_scraper()

# 프록시 지정
proxies = {
    "http": "http://202.159.35.121:443",
    "https": "http://202.159.35.121:443"
}

# 프록시를 통해 요청 수행
response = scraper.get("https://httpbin.io/ip", proxies=proxies)

# "/ip" 엔드포인트의 응답 출력
print(response.text)

설정이 올바르다면 다음과 같은 응답을 볼 수 있습니다:

{
  "origin": "202.159.35.121:1819"
}

응답에 포함된 IP가 예상대로 프록시 서버의 IP와 일치하는지 확인하세요.

참고: 무료 프록시 서버는 수명이 짧은 경우가 많습니다. 따라서 아래 예제에서 사용된 프록시는 이 글을 읽을 때쯤이면 작동하지 않을 수 있습니다.

잘하셨습니다! 간단한 CloudScraper 프록시 통합을 완료하셨습니다.

프록시 로테이션 구현 방법

Cloudscraper에서 프록시를 사용하면 IP 주소를 숨길 수 있습니다. 그러나 대상 사이트는 여전히 IP를 차단할 수 있습니다. 이는 동일한 주소(사용자 자신의 IP이든 프록시 IP이든)에서 너무 많은 요청이 발생할 때 발생합니다.

IP 차단 방지를 위해 프록시 IP를 정기적으로 회전시키는 것이 중요합니다. 여러 IP 주소에 요청을 분산시켜 트래픽이 서로 다른 사용자로부터 발생하는 것처럼 보이게 할 수 있습니다. 이는 탐지 가능성을 줄여줍니다.

프록시 로테이션을 구현하려면 먼저 신뢰할 수 있는 공급자로부터 프록시 목록을 가져옵니다. 이를 배열에 저장하세요:

proxy_list = [
    {"http": "<YOUR_PROXY_URL_1>", "https": "<YOUR_PROXY_URL_1>"},
    # ...
    {"http": "<YOUR_PROXY_URL_n>", "https": "<YOUR_PROXY_URL_n>"},
]

다음으로, random.choice() 메서드를 사용하여 목록에서 프록시를 무작위로 선택합니다:

random_proxy = random.choice(proxy_list)

Python 표준 라이브러리에서 random을 임포트하는 것을 잊지 마세요:

import random 

그런 다음 get() 요청에 무작위로 선택된 프록시를 설정하기만 하면 됩니다:

response = scraper.get("<YOUR_TARGET_URL>", proxies=random_proxy)

모든 설정이 올바르게 이루어졌다면, 요청은 실행할 때마다 목록에서 다른 프록시를 사용합니다. 다음은 전체 코드입니다:

import cloudscraper
import random

# Cloudscraper 인스턴스 생성
scraper = cloudscraper.create_scraper()

# 프록시 URL 목록 (실제 프록시 URL로 대체)
proxy_list = [
    {"http": "<YOUR_PROXY_URL_1>", "https": "<YOUR_PROXY_URL_1>"},
    # ...
    {"http": "<YOUR_PROXY_URL_n>", "https": "<YOUR_PROXY_URL_n>"},
]

# 목록에서 무작위로 프록시 선택
random_proxy = random.choice(proxy_list)

# 무작위로 선택된 프록시를 사용하여 요청 수행
# (실제 대상 URL로 대체)
response = scraper.get("<YOUR_TARGET_URL>", proxies=random_proxy)

축하합니다! 이제 Cloudscraper에 프록시 로테이션을 통합했습니다.

CloudScraper에서 인증 프록시 사용하기

대부분의 제공업체는 인증된 프록시 서버를 제공하여 유료 사용자만 접근할 수 있도록 합니다. 일반적으로 해당 프록시 서버에 접근하려면 사용자 이름과 비밀번호를 지정해야 합니다.

CloudScraper에서 프록시를 인증하려면 필요한 자격 증명을 프록시 URL에 직접 포함해야 합니다. 사용자 이름과 비밀번호 인증 형식은 다음과 같습니다:

<프록시 프로토콜>://<사용자 이름>:<비밀번호>@<프록시 IP 주소>:<프록시 포트>

이 형식을 사용하면 CloudScraper 프록시 구성은 다음과 같습니다:

import cloudscraper

# Cloudscraper 인스턴스 생성
scraper = cloudscraper.create_scraper()  

# 인증된 프록시 정의
proxies = {
   "http": "<PROXY_PROTOCOL>://<YOUR_USERNAME>:<YOUR_PASSWORD>@<PROXY_IP_ADDRESS>:<PROXY_PORT>",
   "https": "<PROXY_PROTOCOL>://<YOUR_USERNAME>:<YOUR_PASSWORD>@<PROXY_IP_ADDRESS>:<PROXY_PORT>"
}

# 지정된 인증된 프록시를 통해 요청 수행
response = scraper.get("<YOUR_TARGET_URL>", proxies=proxies)

대단하네요! 이제 Cloudflare에서 프리미엄 프록시를 사용하는 방법을 확인할 준비가 되었습니다.

Cloudscraper에 프리미엄 프록시 통합하기

실제 스크래핑 환경에서 안정적인 결과를 얻으려면 Bright Data와 같은 최상위 공급자의 프록시를 사용해야 합니다. Bright Data는 195개국에 걸쳐 1억 5천만 개 이상의 고품질 IP 네트워크를 보유하고 있으며, 네 가지 주요 프록시 유형 모두를 지원합니다:

  • 데이터 센터 프록시
  • 주거용 프록시
  • ISP 프록시

자동 IP 로테이션, 100% 가동 시간, 고정 IP 세션 등의 기능을 통해 Bright Data는 시장에서 선도적인 프록시 제공업체로 자리매김하고 있습니다.

CloudScraper에 Bright Data 프록시를 통합하려면 계정을 생성하거나 로그인하세요. 대시보드로 이동하여 테이블의 “주거용” 영역을 클릭하세요:

Bright Data's proxies and scraping infrastructure control panel

여기서 토글을 클릭하여 프록시를 활성화하세요:

Turning on the residential zone

이제 다음과 같은 화면이 표시됩니다:

The residential zone turned on

“접근 세부정보” 섹션에서 프록시 호스트, 사용자 이름, 비밀번호를 복사하세요:

The access details for your residential proxies zone

Bright Data 프록시 URL은 다음과 같은 형식입니다:

http://<PROXY_USERNAME>:<PROXY_PASSOWRD>@brd.superproxy.io:33335

이제 다음과 같이 Cloudscraper에 프록시를 통합하세요:

import cloudscraper

# CloudScraper 인스턴스 생성
scraper = cloudscraper.create_scraper()

# Bright Data 프록시 정의
proxies = {
   "http": "http://<PROXY_USERNAME>:<PROXY_PASSOWRD>@brd.superproxy.io:33335",
   "https": "http://<PROXY_USERNAME>:<PROXY_PASSOWRD>@brd.superproxy.io:33335"
}

# 프록시를 사용하여 요청 수행
response = scraper.get("https://httpbin.io/ip", proxies=proxies)

# 응답 출력
print(response.text)

Bright Data의 주거용 프록시는 자동으로 회전한다는 점을 유의하세요. 따라서 스크립트를 실행할 때마다 다른 IP를 받게 됩니다.

자, 이제 CloudScraper 프록시 통합이 완료되었습니다.

결론

이 튜토리얼에서는 Cloudscraper를 프록시와 함께 사용하여 최대 효율을 내는 방법을 살펴보았습니다. Python 기반 Cloudflare 우회 도구와의 프록시 통합 기본 사항을 다루었으며, 프록시 로테이션과 같은 고급 기술도 탐구했습니다.

Bright Data와 같은 최고 수준의 공급업체에서 제공하는 고품질 IP 프록시 서버를 사용하면 더 나은 결과를 얻는 것이 훨씬 쉬워집니다.

Bright Data는 포춘 500대 기업 및 20,000명 이상의 고객에게 서비스를 제공하는 세계 최고의 프록시 서버를 관리합니다. 전 세계 프록시 네트워크는 다음과 같습니다.

전반적으로, 이는 이용 가능한 가장 크고 신뢰할 수 있는 프록시 네트워크 중 하나입니다.

Bright Data 무료 계정을 생성하여 당사 프록시 서버를 체험해 보십시오.