CodeGym /자바 코스 /Python SELF KO /스크래핑 제한 우회: user-agent, cookies 설정 및 차단 회피 방법

스크래핑 제한 우회: user-agent, cookies 설정 및 차단 회피 방법

Python SELF KO
레벨 33 , 레슨 0
사용 가능

1. 웹 스크래핑 제한 소개

오늘은 꽤 흥미로운 주제를 다룰 거야 — 웹 스크래핑 제한을 어떻게 우회할 수 있는지. 스크래핑에 관심 있는 모든 프로그래머는 언젠가 웹사이트가 설정한 제한이나 차단에 부딪히게 돼. 이제 우리가 좋은 사람이면서도 사이트의 보호 시스템을 피하고 데이터를 계속 수집할 수 있는 방법을 알아보자.

웹사이트에 요청을 보낼 때, 사실 그들의 개인 공간에 들어가 데이터를 가져오려고 하는 거야. 그런데 왜 웹사이트는 이런 거에 방해를 놓을까? 이유는 여러 가지야. 저작권 보호, 서버 안정성과 성능 유지, 데이터 무단 사용 방지 등. 만약 사이트 자원을 너무 많이 쓰거나 규칙을 어기면, 너는... 차단될 수도 있어. 차단을 좋아하는 사람은 아마 서버 관리자뿐일 거야.

2. user-agent 설정

user-agent란?

User-agent는 브라우저가 HTTP 요청과 함께 보낸 식별 문자열이야. 이건 서버에게 네 브라우저와 운영체제가 뭔지 알려줘. 그런데 알지? 이 user-agent는 쉽게 속일 수 있어. 그래서 서버가 네가 Python 스크립트를 실행하고 있다는 걸 모르게 하고, 최신 iPhone에서 접속한 것처럼 보이게 만들 수 있어.

user-agent 변경 예시

requests 라이브러리에서 user-agent를 변경하는 건 아주 쉬워. 간단한 예를 볼까:

Python

import requests

url = "https://example.com"

# user-agent를 Chrome 브라우저로 설정
headers = {
    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/85.0.4183.83 Safari/537.36"
}

response = requests.get(url, headers=headers)
print(response.content)

user-agent를 속이는 건 마치 판다 옷을 입고 회사 파티에 가는 것과 같아. 너는 너지만, 다르게 보이는 거지. 서버가 "브라우저"라고 보고 "스크립트"라고 안 보면 너를 파티에 들여보낼지도 몰라.

3. cookies 사용

cookies란?

Cookies는 웹사이트가 네 브라우저에 저장하는 작은 데이터 조각이야. 여기에는 사이트 설정부터 로그인 후 시스템에 남아있게 하는 세션 ID까지 다양한 정보가 들어갈 수 있어.

요청에서 cookies 사용

requests에서 cookies를 사용하는 것도 쉽지. 보통 처음 요청에서 cookies를 받고, 이후 요청에 활용하면 돼:

Python

# cookies를 유지할 세션 생성
session = requests.Session()

# 첫 요청 실행, cookies 가져오기
session.get(url)

# 같은 cookies를 다음 요청에서 사용
response = session.get(url)
print(response.content)

세션은 cookies를 위한 대중교통 같은 거야. 사이트에서 사이트로 이동하면서 네 설정을 저장해.

4. 차단 회피 방법

차단 가능성을 줄이는 실용적인 팁

여기 몇 가지 꿀팁이 있어:

  • 요청 간 딜레이: 요청 사이에 랜덤 딜레이를 추가해 로봇으로 의심받지 않게 하자.
  • IP 주소 변경: VPN 또는 프록시를 사용해 IP 주소를 변경해서 이걸로 차단되지 않도록 하자.
  • user-agent 회전: 요청마다 다른 user-agent를 사용해 다양한 브라우저처럼 보이자.

딜레이와 IP 주소 변경 적용 예시

time 라이브러리를 사용해 딜레이를 추가해보자:

Python

import time
import random

for _ in range(10):
    response = session.get(url)
    # 랜덤 딜레이
    time.sleep(random.uniform(1, 3))

requests에서 IP 주소를 변경하려면 프록시를 사용할 수 있어:

Python

proxies = {
    "http": "http://10.10.10.10:8000",
    "https": "https://10.10.10.10:8000",
}

response = requests.get(url, proxies=proxies)

5. 추가적인 속임수

스크립트를 의심스럽지 않게 만들려면 headerscookies를 사용해서 실제 사용자처럼 보이도록 해봐. 기억해: 현실감이 금지와의 전쟁에서 너의 비밀 무기야.

오늘 강의는 여기까지야. 이런 기술을 사용하면 사이트의 레이더에서 "눈에 띄지 않게" 남아 데이터를 차단 없이 계속 수집할 수 있을 거야. 모든 슈퍼히어로처럼, 너에게도 책임이 따라. 윤리적이고 법의 테두리 안에서 이 기술을 사용하길 바래. 네 능력을 믿어, 그리고 너의 코드가 고양이의 키보드 춤만큼 우아하길!

코멘트
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION