Skip to content
Go DevBJ
Go back

파이썬으로 사이트 생존 확인하기: Cloudflare 방어막을 뚫는 역발상 전략

Edit page

“분명 브라우저에선 접속되는데, 왜 내 파이썬 코드는 403일까?”

엔지니어라면 누구나 한 번쯤 겪어보는 ‘클라우드플레어(Cloudflare)의 벽’! 🛠️
분명히 살아있는 사이트인데, 우리가 짠 단순한 체크 스크립트에는 차갑게 고개를 돌리곤 하죠. 오늘은 이 방어막을 아주 발랄하게(?) 우회해서 사이트가 정말 죽었는지 살았는지 판별하는 갓벽한 코드를 공유해 보려고 해요!

🕵️ 핵심 무기: cloudscraper

일반적인 requests 라이브러리는 브라우저처럼 보이기 위한 ‘지문’이 부족해요. 그래서 우리는 **cloudscraper**라는 강력한 도구를 사용합니다. 이 친구는 브라우저의 엔진 동작을 흉내 내서 클라우드플레어의 챌린지를 통과시켜 주거든요!

1. 완벽한 변장술: “나 크롬 쓰고 있어!”

가장 먼저 할 일은 우리의 스크래퍼에게 멋진 옷을 입혀주는 거예요.

scraper = cloudscraper.create_scraper(
    browser={
        'browser': 'chrome',
        'platform': 'windows',
        'desktop': True
    }
)

“나는 파이썬 스크립트가 아니라, 윈도우 데스크탑에서 크롬을 쓰고 있는 일반 사용자야!”라고 명함을 내미는 과정이죠. 이렇게 설정해 두면 봇 탐지 필터를 아주 부드럽게 통과할 수 있답니다. 🚀

2. 오늘의 하이라이트: “에러가 나면 살아있는 거다?” (역발상 전략)

이 코드의 가장 짜릿한 지점은 바로 **‘생존 판정 기준’**에 있어요. 보통은 에러가 나면 False를 리턴하고 싶어지잖아요? 하지만 우리는 관점을 바꿨습니다!

try:
    response = scraper.get(url, timeout=15)
    # 200 OK는 당연히 생존!
except CloudflareChallengeError:
    return True # 캡차가 떴다는 건 서버가 살아있다는 증거!

와, 이거 대박이지 않나요? 💡 클라우드플레어가 캡차나 챌린지 페이지를 보여줬다는 건, 그 뒤에 있는 원본 서버가 아주 쌩쌩하게 응답하고 있다는 확실한 증거거든요!

데이터를 긁어오는 게 목적이 아니라 ‘생존 확인’이 목적이라면, 방어막의 반응 자체가 곧 생존 신호가 되는 셈이죠. 삽질 끝에 찾아낸 이런 역발상이 엔지니어링의 묘미 아닐까요?

🛠️ get_status 함수 분석

우리가 만든 함수는 아주 꼼꼼하게 설계되었어요.

🎯 마치며

이 스크립트는 매주 일요일 저녁 진행하는 torrent.md 주소 업데이트 자동화의 핵심 엔진으로 활약 중입니다.

단순히 requests.get()만 쓰다가 “왜 안 되지?”라며 머리를 쥐어뜯던 분들이라면, 오늘 소개한 cloudscraper와 ‘챌린지 역이용 로직’을 꼭 도입해 보세요. 여러분의 자동화 라이프가 훨씬 즐거워질 거예요! 🔥


DevBJ | No Bio, Just Log 0과 1 사이에서 정답을 찾는 즐거움, 함께 나누고 싶습니다! 🚀


Edit page
Share this post on:

Previous Post
AI Agent 기반 자율주행 센서 퓨전 데이터, LWIP 임베디드 네트워크 저지연 전송 최적화 삽질기: 마이크로초의 전쟁 🚀
Next Post
엣지 AI를 위한 Micro-ROS LiDAR-to-Tensor 파이프라인 최적화: NTP 동기화와 메모리 파편화 격파기