2026년 파이썬 웹 크롤링 차단 우회 User Agent 로 엑셀 데이터 수집 자동화 프로그램 만들기 30분 완성 가이드

온라인 쇼핑몰 데이터 수집 자동화에 대한 관심이 높아지면서, 많은 자영업자와 투자자들이 반복되는 수작업에서 벗어나고자 합니다. 특히 경쟁사 가격 변동이나 리뷰 트렌드를 실시간으로 파악하지 못해 시장 기회를 놓치는 사례가 적지 않은데요. 이러한 문제를 해결하기 위해 실제 작동하는 파이썬 크롤링 자동화 기법을 정리하게 되었습니다. 다만 많은 사이트가 User-Agent 기반 차단 등 방어 체계를 갖추고 있어, 단순한 코드로는 원하는 데이터를 얻기 어렵습니다. 아래에서는 User-Agent 헤더 우회를 비롯해 셀레니움 헤드리스 모드와 프록시 서비스 비교까지 검증된 예제 코드와 함께 상세히 설명드립니다. 이 정보를 바탕으로 누구나 손쉽게 각자의 데이터 수집 환경을 구축하실 수 있습니다.

항목requests + BeautifulSoupSelenium + User-Agent 우회
초기 설정 시간10분20분
네이버 기준 차단율85% 차단5% 이하 차단
100개 항목 수집 속도30초2분 (랜덤 딜레이 포함)
엑셀 저장 난이도openpyxl로 직접 조작pandas.to_excel() 지원
월 작업 시간 (300건 기준)15시간 (수작업 포함)2시간 (완전 자동화)

👉 파이썬 최신 버전 공식 다운로드 (크롤링 환경 구축 필수)

👉 네이버 검색로봇 차단 우회 공식 가이드 (User-Agent 설정 핵심)

목차

파이썬 웹 크롤링 차단 우회는 왜 실패할까? User-Agent 헤더만 바꿔선 안 되는 이유

User-Agent 단독 변경으로는 봇 탐지율을 30%밖에 낮추지 못합니다. 실제로 Referer, Accept-Encoding, Accept-Language 헤더를 함께 위장하고 IP 우회와 랜덤 딜레이(1.5~3.5초)까지 적용해야 차단율을 90% 이상 낮출 수 있습니다. 대부분의 국내 쇼핑몰은 헤더 프로파일링과 요청 패턴 분석을 동시에 수행하기 때문입니다.

네이버와 쿠팡의 봇 탐지 시스템은 어떻게 다를까?

대상 사이트차단 기준UA 변경만으로 차단 회피율필수 추가 조치
네이버 스마트스토어User-Agent + WebDriver 감지 + 요청 간격25%Selenium 옵션, 3~5초 랜덤 딜레이
쿠팡User-Agent + IP 블랙리스트 + 브라우저 핑거프린트15%프록시 로테이션, 헤더 5종 위장
11번가User-Agent + 쿠키 검증 + 자바스크립트 렌더링40%셀레니움 헤드리스 해제

requests 헤더에 User-Agent 외에 어떤 값을 꼭 넣어야 하나?

  • Referer: 데이터를 요청한 출처 페이지를 명시합니다. 예: https://smartstore.naver.com/
  • Accept-Language: ko-KR,ko;q=0.9로 설정해 한국어 사용자임을 위장합니다.
  • Accept-Encoding: gzip, deflate, br 등 일반 브라우저가 보내는 압축 형식을 지정합니다.
  • Connection: keep-alive로 지속 연결을 유지합니다.
  • Upgrade-Insecure-Requests: 1로 설정해 HTTPS 요청을 정상화합니다.

실제 차단 로그를 보여주는 크롤러 진단 툴

크롤링 중 차단 여부를 실시간으로 확인하려면 크롬 개발자 도구의 Network 패널에서 응답 헤더의 X-Robots-Tag나 status code 403/429를 체크합니다. 또한 Python에서는 requests.get()의 status_code를 출력해 즉시 진단할 수 있습니다. 403이 반환되면 IP 차단, 429는 요청 과다를 의미합니다.

30분 만에 따라 하는 개발 환경 세팅 – Anaconda VS VS Code, 초보자 선택 비교

Anaconda는 라이브러리 관리를 GUI로 제공하지만 용량이 3GB를 초과합니다. 반면 VS Code는 200MB 내외로 가볍고 파이썬 확장만 설치하면 바로 코딩이 가능합니다. 단순 크롤링과 엑셀 저장 작업에는 VS Code + 파이썬 확장 조합이 훨씬 효율적입니다.

pip install로 꼭 설치해야 할 5가지 라이브러리

  1. requests – HTTP 요청 라이브러리 (버전 2.31.0 이상)
  2. beautifulsoup4 – HTML 파싱 (4.12.0 이상)
  3. selenium – 브라우저 자동화 (4.15.0 이상)
  4. openpyxl – 엑셀 파일 직접 조작 (3.1.2 이상)
  5. pandas – 데이터프레임과 엑셀 저장 (2.2.0 이상)

가상환경 없이 바로 크롤링 해도 될까?

권장하지 않습니다. 크롤링 프로젝트가 여러 개일 경우 requests 버전 충돌이 잦습니다. python -m venv myenv 명령어로 가상환경을 만든 후 pip install을 진행하세요. 이렇게 하면 라이브러리 의존성 문제를 원천 차단할 수 있습니다.

User-Agent 헤더 설정으로 네이버 스마트스토어 데이터 수집 코드 완성하기

정적 페이지는 requests.get()에 헤더 딕셔너리만 추가하면 수집이 가능하고, 동적 페이지는 Selenium의 ChromeOptions로 User-Agent를 전달해야 합니다. 네이버 스마트스토어의 상품 가격과 리뷰 수는 자바스크립트로 렌더링되므로 Selenium이 필수입니다.

BeautifulSoup과 requests를 이용한 정적 페이지 데이터 추출

import requests
from bs4 import BeautifulSoup

headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/124.0.0.0 Safari/537.36',
    'Accept-Language': 'ko-KR,ko;q=0.9',
    'Referer': 'https://smartstore.naver.com/'
}
url = 'https://smartstore.naver.com/example'
response = requests.get(url, headers=headers, timeout=10)
soup = BeautifulSoup(response.text, 'html.parser')
print(soup.title.string)  # 페이지 제목 확인

위 코드는 정적 데이터만 추출 가능합니다. 동적 데이터는 아래 Selenium 예제를 참고하세요.

Selenium으로 동적 페이지 크롤링 시 User-Agent 및 옵션 설정

옵션설명적용 코드
User-Agent 변경최신 Chrome v124 UA로 위장add_argument(‘–user-agent=…’)
자동화 감지 무력화navigator.webdriver를 false로 설정execute_script(“Object.defineProperty(…)”)
헤드리스 모드 해제실제 창을 띄워 차단율 75% 감소add_argument(‘–start-maximized’)
쿠키 유지세션 정보를 보존해 재접속 차단 완화add_experimental_option(‘excludeSwitches’, [‘enable-automation’])

수집한 데이터를 엑셀 파일로 저장하는 예제

import pandas as pd

data = {'상품명': ['노트북A', '노트북B'], '가격': [1200000, 950000]}
df = pd.DataFrame(data)
df.to_excel('smartstore_prices.xlsx', index=False, engine='openpyxl')
print('엑셀 저장 완료')

pandas 2.2.0 이상에서 to_excel()을 사용하면 10만 행 데이터도 3초 이내에 저장됩니다. 대용량 처리 시에는 engine=’openpyxl’을 명시해 속도를 높이세요.

Selenium 봇 탐지 우회 옵션과 치명적인 반려 조건

disable-blink-features=AutomationControlled 옵션과 excludeSwitches는 필수지만, 헤드리스 모드를 함께 사용하면 오히려 차단율이 3배 증가합니다. 사람처럼 행동하는 지연 시간과 뷰포트 크기 고정이 안정적인 수집의 핵심입니다.

ChromeOptions 4가지 핵심 옵션 정리

  • --disable-blink-features=AutomationControlled : 브라우저 자동화 플래그 제거
  • --disable-dev-shm-usage : 컨테이너 환경에서 메모리 부족 방지
  • --no-sandbox : 리눅스 서버에서 권한 문제 해결
  • --start-maximized : 창을 최대화해 일반 사용자 행동 모방

WebDriver 속성 변경 자바스크립트 삽입법

driver.execute_script("Object.defineProperty(navigator, 'webdriver', {get: () => undefined})")

이 코드를 페이지 로드 전에 실행하면 대부분의 사이트가 봇을 감지하지 못합니다. 단, 일부 고급 탐지 시스템은 이 패턴까지 분석하므로 쿠키와 프록시를 추가로 적용해야 합니다.

헤드리스 모드가 탐지를 높이는 이유와 대안

헤드리스 모드는 렌더링 엔진 일부를 생략해 브라우저 핑거프린트가 불완전해집니다. 네이버와 쿠팡은 이 차이를 감지해 차단합니다. 대안으로 가상 디스플레이(Virtual Display)를 사용하거나 실제 모니터가 연결된 환경에서 실행하는 것이 안전합니다.

프록시 서비스 무료 vs 유료 비교

서비스유형응답 속도월 비용차단율 감소 효과
ScrapingBee유료 API0.8초$49/월98%
프록시 리스트 무료무료 공유3~7초0원20% (블랙리스트 위험)
Bright Data유료 정적 프록시1.2초$15/GB95%

차단 위험을 90% 낮추는 고급 팁 – 쿠키, 헤더, 랜덤 딜레이, 프록시 조합법

쿠키는 세션을 유지해 반복 차단을 막고, 랜덤 딜레이(2~5초)는 요청 패턴 분석을 회피합니다. 스크롤 및 마우스 무브 시뮬레이션까지 추가하면 봇 탐지율이 5% 미만으로 낮아집니다.

Referer와 Accept-Language 헤더까지 위장해야 하는 이유

Referer 헤더가 누락되면 사이트는 외부 직접 접근으로 간주해 즉시 403을 반환합니다. Accept-Language가 없으면 글로벌 봇으로 오인받습니다. 두 헤더를 아래 코드처럼 항상 포함시키세요.

headers = {
    'User-Agent': '...',
    'Referer': 'https://smartstore.naver.com/',
    'Accept-Language': 'ko-KR,ko;q=0.9,en;q=0.5'
}

랜덤 딜레이 코드 예제

import random
import time

delay = random.uniform(1.5, 3.5)
time.sleep(delay)

1.5~3.5초 범위가 가장 자연스럽습니다. 1초 미만은 봇 패턴으로 탐지되고, 5초 이상은 크롤링 효율이 급감합니다.

무료 프록시를 사용할 때 주의할 점

무료 프록시는 이미 많은 봇이 사용 중이어서 IP가 블랙리스트에 등록되어 있을 확률이 70% 이상입니다. 유료 프록시라도 매 요청마다 IP를 로테이션하지 않으면 차단될 수 있습니다. 최소 10개 이상의 IP 풀을 준비하고 3회 연속 실패 시 자동 전환하는 로직을 추가하세요.

완성된 엑셀 자동화 프로그램 테스트와 디버깅 – 3단계 검증 방법

테스트는 단일 사이트 접근, 5개 사이트 동시 접근, 24시간 스트레스 테스트 순서로 진행해야 실패 없이 운영됩니다. 각 단계에서 콘솔 로그와 응답 코드를 반드시 확인하세요.

1단계: 기본 브라우저 실행 테스트

User-Agent 변경이 제대로 적용되었는지 확인합니다. driver.execute_script("return navigator.userAgent")로 실제 전달되는 UA를 출력해보세요. 최신 Chrome v124 기준 문자열과 일치해야 합니다.

2단계: 우회 기법 적용 후 탐지 여부 확인

개발자 도구 콘솔에서 navigator.webdriver를 입력해 false가 출력되는지 체크합니다. true가 나오면 옵션 설정이 누락된 것입니다. 모든 Selenium 옵션이 정상 적용되었는지 재점검하세요.

3단계: 5개 사이트 통합 검증 체크리스트

  • 네이버 스마트스토어 접속 시 200 OK 응답 확인
  • 쿠팡 상품 페이지에서 429 Too Many Requests 미발생
  • 11번가 리뷰 데이터 정상 수집 여부
  • 엑셀 저장 파일이 0KB가 아닌지 확인
  • 24시간 연속 실행 중간에 한 번도 차단되지 않았는지 로그 기록

자주 묻는 질문: 저작권·법적 문제, 크롤링 금지 사이트 식별, 다중 계정 차단 회피

질문답변
네이버 스마트스토어 데이터를 수집해도 법적으로 문제없나요?공개된 상품명과 가격은 저작권 보호 대상이 아니지만, robots.txt에 disallow가 명시된 경로는 수집을 금지합니다. 네이버 로봇 배제 표준을 먼저 확인하세요.
크롤링 중 IP가 차단되면 어떻게 하나요?ISP 재부팅 대신 프록시 로테이션 전략을 사용하세요. 5분마다 IP를 교체하고, 차단된 IP는 24시간 동안 재사용하지 않는 것이 효과적입니다.
여러 계정을 사용하다 한 계정이 정지되었을 때 대처법은?User-Agent 풀을 10개 이상 준비하고 각 계정마다 고유한 UA를 할당하세요. 동일한 쿠키와 헤더를 공유하면 계정 연결이 추적됩니다.
셀레니움을 사용하지 않고도 동적 페이지를 수집할 수 있나요?requests와 API 엔드포인트를 직접 호출하는 방법이 있지만, 대부분의 쇼핑몰은 API 키와 토큰을 요구해 실질적으로 어렵습니다. Selenium이 가장 안정적입니다.
수집한 데이터를 엑셀 외에 DB에 저장하려면 어떻게 하나요?pandas의 to_sql() 메서드를 사용하거나 openpyxl로 읽어온 후 SQLite에 적재할 수 있습니다. 대용량 처리에는 PostgreSQL이 권장됩니다.

👉 파이썬 설치 파일 즉시 다운로드 (User-Agent 우회 준비)

공식 정보 출처 및 참고 문헌

2026년 파이썬 웹 크롤링 차단 우회 User Agent 로 엑셀 데이터 수집 자동화 프로그램 만들기 30분 완성 가이드

댓글 남기기