• 목록
  • 아래로
  • 위로


안녕하세요?


Selenium을 이용하여 Requests에 대한 클라우드 플레어(이하 '클플') 차단을 우회하는 방법 대해 소개하려고 합니다.


클플을 우회하기 위해 사용되는 cfscrape 등의 모듈은 대체로 node.js 등 디펜던시가 많고 윈도우에서 설치가 용이하지 않은 단점이 있죠.


클플 캡챠가 아니라 위와 같이 단순히 Checking 화면이 뜨는 것은 Selenium의 쿠키를 Requests로 전달하는 방식만으로도 간단히 우회할 수 있습니다.


이에 대한 웹 문서가 많을 줄 알았는데 5년 전에 어떤 러시아 유저가 작성한 글 이외에는 검색이 되지 않네요.


http://www.korznikov.com/2015/05/simple-cloudflare-bypass.html


당시와 문법이 바뀐 것도 있어서 현재 시점에서 잘 작동하는 스크립트로 내용을 업데이트 합니다 ^^



from requests_html import HTMLSession
from selenium import webdriver

# (생략) Selenium으로 접속한 후 필요에 따라서 로그인합니다.
time.sleep(5) # 시간을 어느 정도 충분히 주어야 합니다.

s = HTMLSession()
cookies = driver.get_cookies()
driver.quit()
headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 6.2; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Safari/537.36'} # Selenium과 동일하게 맞춰주세요.
for cookie in cookies:
   c = {cookie['name']: cookie['value']} # 파이썬 2에서는 다른 방식으로 구현해야 된다고 알고 있습니다.
   s.cookies.update(c)
html = s.get('사이트 URL', headers=headers)



제가 테스트해본 사이트가 많지는 않지만, 다음과 같은 세 가지 사항이 키포인트라고 생각되네요.


(1) 첫 화면을 로딩할 때 클플을 bypass 하기 위하여 적어도 time.sleep(5) 이상 대기합니다.


(2) headers를 Selenium과 동일하게 맞춰줘야 합니다.


(3) Selenium으로 접속한 후 페이지가 로딩되어 Cookie가 생성될 때까지 충분한 시간을 대기해야 합니다.



이런 방식을 이용하면 처음에는 Selenium을 통해 접속하여 Requests로 쿠키를 전달해야 되어서 어느 정도 시간이 소요되지만, 그 이후에는 Selenium만을 이용하는 것보다 빠르게 크롤링을 할 수 있습니다.


만약 위와 같은 방식으로 잘 안 된다면, headers를 추가해보세요 ^^


부족한 글 읽어주셔서 감사합니다.


그럼 편안한 저녁 되세요!


포함 1명이 추천

추천인 1

작성자
이니스프리 119 Lv. (2%) 4185130/115200000EXP

Make StudyForUs Great Again!

 

CSVpuymXAAAVVpd.jpg

댓글 8

급식프로그래머
profile image
문제는 이걸 DDoS 공격으로 악용하면 안되는데...
comment menu
2020.01.11. 16:31

신고

"급식프로그래머님의 댓글"

이 댓글을 신고 하시겠습니까?

이니스프리 작성자 → 급식프로그래머
profile image

저도 그 점에는 동감합니다.

그런데 진짜 DDoS를 할 능력이 있는 개인 또는 단체라면 이 정도 기초수준의 내용은 당연히 숙지하고 있겠죠 ^^

일정 시간 이내에 일정 수준 이상의 트래픽을 유발하면 다시 클플에서 차단할걸요??

comment menu
2020.01.11. 16:48

신고

"이니스프리님의 댓글"

이 댓글을 신고 하시겠습니까?

신고

"급식프로그래머님의 댓글"

이 댓글을 신고 하시겠습니까?

신영웅
클플 우회 정말 신기하고 꼭 배워두고 싶습니다. 도움 주실수 없을까요? 완전 문외한 입니다.
comment menu
2021.03.04. 08:46

신고

"신영웅님의 댓글"

이 댓글을 신고 하시겠습니까?

이니스프리 작성자 → 신영웅
profile image
안녕하세요?
댓글과 보내주신 쪽지를 확인하였습니다.
죄송하지만 제 개인적인 사정으로 인하여 의뢰는 유무료를 불문하고 받을 수 없습니다.
도움을 드리지 못하여 죄송합니다 ㅠㅠ
comment menu
2021.03.04. 22:04

신고

"이니스프리님의 댓글"

이 댓글을 신고 하시겠습니까?

신영웅 → 이니스프리
답변 정말 감사합니다 ㅠㅠ 죄송하실 일은 아니구요 ... 의뢰 .. 가 아니라 혹시 위 방법을 초보의 입장에서 아주 조금만 조금만 ,,, 간단하게 공부 해 볼 수 있도록 알려주시는것도 힘드시겠죠? ㅠㅠ

혹시 몰라서 제 오픈카톡 주소 남깁니다 ... https://open.kakao.com/o/sWSGA7Vc
comment menu
2021.03.05. 23:20

신고

"신영웅님의 댓글"

이 댓글을 신고 하시겠습니까?

이니스프리 작성자 → 신영웅
profile image

죄송합니다. 저는 직업적인 개발자도 아니고, 제 개인적인 사정으로 강의 등은 어렵습니다.
그리고 이 글에 적혀있는 방법은 아마도 원하시는 클플 우회 방법이 아닐 것으로 추측됩니다.

(실질적인 우회 방법이 아닙니다.)
도움을 드리지 못하여 죄송하며, 그럼 좋은 주말 되시기를 기원합니다.

comment menu
2021.03.06. 00:33

신고

"이니스프리님의 댓글"

이 댓글을 신고 하시겠습니까?

이니스프리 작성자 → 신영웅
profile image
저한테 같은 내용의 쪽지를 반복적으로 주시는데,
정말 죄송하지만 저는 문의하신 내용을 알지도 못할 뿐더러 답변을 드릴 수 없습니다.
그럼 건승하시기를 기원합니다.
comment menu
2021.03.06. 13:45

신고

"이니스프리님의 댓글"

이 댓글을 신고 하시겠습니까?

권한이 없습니다.
번호 제목 글쓴이 날짜 조회 수
29 [번외편 - 구글뉴스] 리뉴얼된 구글뉴스에서 RSS 피드를 생성하는 방법 6 image 이니스프리 이니스프리 18.10.07.17:58 3671
28 [번외편 - 아미나] 그누보드/아미나에서 게시글의 날짜를 최종수정일로 변경하고, 목록스킨 및 위젯을 최종수정일 순으로 정렬하기 2 image 이니스프리 이니스프리 18.11.11.22:36 2688
27 [번외편 - 법률] 현행 저작권법 제30조(사적이용을 위한 복제)에 대하여 - 음원 다운로더의 처벌과 관련하여 6 이니스프리 이니스프리 18.12.07.14:16 1433
26 [번외편 - 아미나] 아미나의 회원 이미지와 관련하여 x2 3 image 이니스프리 이니스프리 18.12.10.19:57 860
25 [번외편 - 아미나] Basic Youtube Title Widget 1.0에서 처음에 엑박으로 뜨는 경우의 해결책 3 image 이니스프리 이니스프리 18.12.15.23:02 900
24 [Selenium] Selenium에서 send_keys를 막아놓은 경우 해결책 이니스프리 이니스프리 19.07.04.05:52 4858
23 [번외편 - 유튜브] Youtube API를 이용하거나 또는 이용하지 않고 채널ID를 추출하는 방법 2 image 이니스프리 이니스프리 19.07.16.17:55 2922
22 [번외편 - 법률] 나무위키의 서술 중 법률용어의 사용에 있어 바로잡아야 할 부분 image 이니스프리 이니스프리 19.07.17.22:44 521
21 [Pillow] 파이썬 Pillow 라이브러리를 이용하여 이미지의 배경을 transparent하게 만들기 11 image 이니스프리 이니스프리 19.08.04.13:40 7995
20 (序) Python 강좌를 시작하며... 2 image 이니스프리 이니스프리 19.12.05.21:55 646
19 1. 반복문 (1) - while 문 7 image 이니스프리 이니스프리 19.12.06.20:50 2659
18 [Selenium] Requests의 session을 Selenium으로 보내기 image 이니스프리 이니스프리 19.12.07.14:17 4920
17 3. 문자열 처리 (1) - 문자열 접근 및 검색방법 4 image 이니스프리 이니스프리 19.12.09.20:00 1368
16 6. 리스트와 관련된 기본함수 및 메서드 7 image 이니스프리 이니스프리 19.12.10.21:16 2222
15 4. 문자열 처리 (2) - 문자열 조작에 대한 기본함수 및 메서드 1 image 이니스프리 이니스프리 19.12.12.02:27 756
14 [번외편] 네이버 동영상에서 자막을 파일로 추출하는 방법 2 image 이니스프리 이니스프리 19.12.25.22:34 5971
13 9. [정리] 파이써닉한 파이썬 문법 팁 for COS Pro image 이니스프리 이니스프리 20.01.04.23:47 1154
[Requests] Selenium을 이용한 Cloudflare의 우회 8 image 이니스프리 이니스프리 20.01.08.19:51 6600
11 [python-telegram-bot] 4096자 글자수 제한을 우회하는 방법 image 이니스프리 이니스프리 20.01.12.11:25 2364
10 [BeautifulSoup] 자식태그를 제거하기 - .decompose() & .extract() 10 image 이니스프리 이니스프리 20.01.16.00:07 9463