• 목록
  • 아래로
  • 위로

안녕하세요?


amazon.com

jomashop.com


위 사이트를 비롯한 대형 사이트에서 크롤러를 차단하는 기법에 대해 여쭤봅니다.

(꼭 쇼핑몰 사이트가 아니라 일반적인 대형 사이트를 염두에 두고 여쭤보는 것입니다.)


미리 말씀드리지만 상업적인 용도나 불특정 다수에게 공개할 용도로 크롤링한 것이 아니라, 


실은 블랙프라이데이 직구 상품이 너무 빨리 매진되어서 이번 주말에 연습삼아서 테스트해봤네요 ㅜㅜ

(어제 SSD 좋은 딜이 잠시 있었던 것 같은데 말이죠.)



위 사이트들은 파이썬 requests를 사용할 때 헤더를 아무리 상세하게 세팅해도 봇으로 필터링되는 것 같구요.


requests_html의 mock-browser 모드로 접속을 해도 마찬가지더군요 ㅠㅠ


그누보드나 XE 기반으로 제작된 사이트들은 requests_html만으로 간단히 크롤링이 가능하고 


보안에 신경을 쓴 사이트라면 여기에 csrf 토큰을 추가하는 정도인 것과 대비되더군요.



네이버 등 일부 포털사이트는 selenium 로그인도 곧바로 할 수 없도록 막아놓았구요.


조마샵의 경우에는 selenium을 사용해도 IP에 따라서 클라우드플레어 캡챠가 뜨는 경우가 있던데요 ㄷㄷ


클라우드플레어의 크롤링과 관련해서 구글링해보니 cfscrape라는 라이브러리가 있긴 하더군요.


https://pypi.org/project/cfscrape/



클라우드플레어는 특정 IP 대역을 원천적으로 봉쇄하는 것 같고, 과도한 GET 또는 POST 요청이 있는지 등에 따라 판단할 것 같은데요.


아마존은 제가 소스를 보니 자체적인 필터링을 하는 것 같네요.


물론 어제처럼 너무 순식간에 마감되는 딜이 아닌 경우에는 아마존은 카멜카멜카멜을 이용하고, 


아울러 딜 정보가 올라오는 국내 사이트를 크롤링하면 당장 제가 직구하는 데에 큰 어려움은 없을 것 같긴 하네요 ^^



이번 일을 경험으로 삼아서 앞으로는 이런 사이트들과 유사하게 크롤러를 감지하는 스크립트를 그누보드에서 구현해보려고 하는데요.


대략 어떤 방식으로 구현할 수 있는지 방향만이라도 제공해주시면 감사하겠습니다.


왕초보인 제 머리에서 requests, urllib 크롤링을 막는 방법으로 떠오르는 것은 Javascript 모달창을 쓰고, csrf 토큰을 추가하는 정도밖에 없어서요 ㅠㅠ


제가 듣기로 요새 아미나 기반의 모 사이트가 계속 뚫리고 있다고 하더군요.



그럼 밖에 비가 오는데 감기 조심하시고 즐거운 주말 되세요~


스포어의 고수님들께 항상 감사드립니다!!


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

Make StudyForUs Great Again!

 

CSVpuymXAAAVVpd.jpg

댓글 10

이니스프리 작성자
profile image

아마존 SSD 할인은 너무 빨리 지나가네요 ㄷㄷ

오늘 삼성 860 QVO 2TB를 150달러대에 판매했는데 벌써 이벤트가 종료(?)된듯요 ㅠㅠ

comment menu
2019.11.24. 17:19

신고

"이니스프리님의 댓글"

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

라엘
profile image

왠만한 크롤러는 rate limit 만 걸어도 잡혀요.

대부분의 크롤러는 엄청난 rate 로 동작하기 때문이죠.

웹보안 솔루션에서는 이러한 것들을 유해트래픽으로 규정하고, 막는 다양한 방법을 제공해줍니다.

comment menu
2019.11.26. 15:24

신고

"라엘님의 댓글"

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

이니스프리 작성자 → 라엘
profile image

답변해주셔서 감사합니다!

제 짧은 경험으로도 get 요청 사이에 텀을 두기 위해서 time.sleep(n)에서 n을 1 이하로 할 때와 그 이상으로 잡을 때는 다른 듯요~

웹호스팅을 사용하면 어느 정도 필터링을 해줄텐데 앞으로는 VPS를 본격적으로 사용할테니 그런 부분도 감지할 수 있도록 아이디어를 짜야겠네요!

그럼 라엘 님께서도 즐겁고 뜻깊은 연말 되세요 ^-^

항상 감사드립니다~

comment menu
2019.11.26. 17:51

신고

"이니스프리님의 댓글"

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

라엘
profile image

다들 알고 있는 ModSecurity 같은 싸구려 소프트웨어말고, 비싸고 유명한 것(F5, Imperva, Fortinet 등)들은, 이미 브라우저 시그니쳐랑 특징, 기능 검사 기능이 있어요.

예를 들어 Agent가 Chrome 68 버전인데 Accept-Encoding 이 없다거나 특정 함수가 실행이 안된다거나..


아래는 연간 라이센스비만 1300만원짜리 소프트웨어인데, 사용자별로 프로파일링해서 판단해서 표시해줘요.

Threat Point 라는게 있는데 이게 높아지면 무슨짓을 해도 Threat 으로 분류됩니다. 인공지능이라고 하는데, 꽤 정확도가 높아요.










comment menu
2019.11.26. 21:07

신고

"라엘님의 댓글"

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

이니스프리 작성자 → 라엘
profile image

앗 이런 전문적인 소프트웨어가 있군요!

가격부터 후덜덜한데 기능도 어마무시하네요 :)

이런 소프트웨어라면 크롤링하는 사람이 selenium을 사용하지 않는 이상 거의 막을 수 있겠네요~

번번이 여러모로 가르쳐주셔서 감사합니다 ^-^

 

comment menu
2019.11.26. 22:27

신고

"이니스프리님의 댓글"

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

title: 황금 서버 (30일)humit → 라엘
profile image

근데 저 정도로 필터가 많이 걸려 있으면 서버 측에 부담이 심할 수도 있겠네요...

comment menu
2019.11.27. 14:21

신고

"humit님의 댓글"

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

라엘 → humit
profile image

보통 네트워크 단계에서 동작해요. 위치는 로드밸런서나 로드밸런서 바로 뒷단에서.

커뮤니티등의 트래픽 예측이 불가능한 경우에는 부하가 심하겠지만, 특정한 서비스 운영하는 경우에는 패킷 크기도 작고, 요청도 정형화되 있어서 부하가 별로 없어요.

꼭 필요하지는 않아 보이지만, 대기업 보안팀에서 반드시 WAF를 사용해야 한다고 해서 쓰고 있습니다.

comment menu
2019.11.27. 21:02

신고

"라엘님의 댓글"

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

title: 황금 서버 (30일)humit → 라엘
profile image

해당 라이센스가 어떻게 동작하는지는 모르겠지만 설치한 개수에 비례해서 나오는 거라면 로드밸런서 부분에 붙이는게 확실히 비용이 절감이 되긴 하겠네요.

 

확실히 보안 프로그램이 돈이 많이 비싼 거 같기는 한 거 같아요. 프로그램 1개의 가격이 상상을 뛰어넘더라고요...;;

comment menu
2019.11.27. 22:34

신고

"humit님의 댓글"

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

라엘
profile image

엄청 잘하는 사람들은 어떻게 막는지 들어봐야겠네요.


실습 세션 신청!


C9F09592-AA51-4CAC-8952-3CBBBA70F43C.jpg


comment menu
2019.12.03. 07:28

신고

"라엘님의 댓글"

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

이니스프리 작성자 → 라엘
profile image

오오~ 랩탑 들고 가서 실습하는 세션이군요~ ^-^

Against bots and scrapers!

모처럼 시간을 내서 멀리 베이거스까지 가셨는데 뜻깊은 시간 되세요~ :)

comment menu
2019.12.03. 10:58

신고

"이니스프리님의 댓글"

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

권한이 없습니다.
번호 제목 글쓴이 날짜 조회 수
공지 시스템 점검 작업 완료 안내 10 마스터 24.09.05.16:25 2410
공지 [중요] 호스팅 만료와 관련하여 일부 수칙이 변경됩니다. 4 마스터 23.01.14.02:23 9424
공지 [필독] 질문하는 방법 17 마스터 18.02.23.03:09 4883
646 프로그래머스 코딩테스트 연습에서 효율성 심사를 통과하려면 어떻게 해야할까요? 2 이니스프리 19.12.18.01:55 2914
645 논논비요리 만화책을 보려고 하는데 일본어를 얼마나 공부해야 될까요? 4 image 이니스프리 19.12.15.16:38 496
644 머신러닝 오프라인 강좌를 수강해보려고 하는데요~ 이거 괜찮을까요? 5 image 이니스프리 19.12.11.03:12 504
643 프로그래머스의 코딩테스트 연습과 COS PRO 난이도에 대해 질문 드립니다. 5 이니스프리 19.12.08.22:26 512
642 Crontab에서 파이썬 실행이 시간적으로 겹치는 것과 관련하여 질문 드립니다 ^^ 이니스프리 19.12.06.01:06 1434
641 [파이썬] 롯데백화점 크롤링과 관련하여 질문을 드립니다 2 image 이니스프리 19.12.04.21:56 408
640 노트북 발열 문제를 잘 잡는 분 계실까요? 6 이니스프리 19.12.04.19:04 305
639 데스크탑이냐 랩탑이냐, 그것이 문제입니다. 29 네모 19.11.28.14:15 386
638 error page 설정은 어떻해야할까요? 2 슬기 19.11.24.21:27 356
Amazon, Jomashop 등 대형 사이트에서는 크롤러를 어떻게 감지하나요? 10 이니스프리 19.11.24.15:12 1792
636 기계식 키보드 추천을 부탁드립니다! 20 갱생협스 19.11.24.12:56 309
635 네이버 사전을 크롤링할 때 한자의 인코딩 관련 하여 질문 드립니다. (일부 한자만 깨지는 현상) 21 image 이니스프리 19.11.22.16:22 1303
634 윈도우 NTFS에서 확장자의 대소문자가 구별되나요? (파이썬 pathlib.Path(file).suffix 관련) 9 이니스프리 19.11.19.00:50 1490
633 코딩 컨벤션상 전역변수와 지역변수의 변수명을 동일하게 하는 것이 무방한가요? 4 이니스프리 19.11.17.18:09 535
632 카카오 API OCR의 인식률은 어떤가요? 1 이니스프리 19.11.16.22:31 1673
631 3.5인치 외장하드 케이스에 SSD를 연결하면 전압과 관련된 문제가 발생할까요? 3 이니스프리 19.11.16.02:04 489
630 국내 유료 웹호스팅 사이트 추천을 부탁드립니다 14 이니스프리 19.11.16.00:09 357
629 윈도우7 익스플로러11에서 인터넷옵션/시작옵션/마지막 세션의 탭으로 시작이 작동이 안됩니다. 3 kyhsyou 19.11.15.10:54 348
628 구글 애드센스 잘아시는분 있나유? 2 슬기 19.11.14.23:54 310
627 스포어 호스팅 사용 중에 실수로 반복문을 잘못 돌리면 계정이 정지되나요? ㅠㅠ 2 이니스프리 19.11.14.00:25 575