웹 크롤링에 대한 개인적인 생각

4
post-thumbnail

웹 크롤링이란?

이걸 어떻다 라고 언급하기 전에 구글에 먼저 검색을 했는데, 내가 알고있는 것과 대중적인 인식이 일맥상통하는 듯 했다.

웹 크롤링은 프로그램이나 코드를 이용해 웹페이지에서 내가 원하는 정보를 수집하는 행위이다.

개인적인 생각?

웹 크롤링

웹 크롤링은 어쩔 수 없을 때 하는 나쁜 선택 중 하나라고 생각한다.

나쁜 선택?

개인적으로는 그렇게 생각한다.
웹 크롤링을 하겠다는 자체가 1회성에서 그치는게 아닌 지속적 으로 하겠다는 의도를 가지고 있기 때문이다.
그렇기 때문에, 아무 생각 없이 하는 무분별한 크롤링은 무례한 행동이 될 수도 있다.

무례하다고? 왜?

당신이 웹페이지를 만들었다고 생각해보라.
웹페이지는 누구를 위해 만들었는가? 기계를 위해 만들었나? 코드를 위해 만들었나? 아니다. 사람이 보라고 열심히 예쁘게 만들었다.

그런데, 그렇게 열심히 만든 나의 예쁜 웹페이지가 5분에 한번씩 무분별한 크롤링에 의해 엄청난 트래픽이 발생해 흡사 DDOS를 맞은 것 마냥 초토화 된다고 생각해보자.

기분이 좋을 것 같은가?


죽여줘...

그럼 트래픽을 많이 수용할 수 있게 하면 되잖아?

틀린 말은 아니다.
그렇다고 맞는 말도 아니다.

만약, 나의 서비스가 하루에 100명만 이용하는 것을 염두해두고 만들었다고 가정해보자. 그럼 서버 스펙을 그리 높게 측정하지 않을 것이다.

그렇게 염두하고 만들었는데, 특정 한두명이 기계적인 엄청난 트래픽을 일으켜서 내 서비스가 느려지고 안좋은 사용자경험을 준다고 생각해보라.
그들 때문에 서버의 스펙을 늘리는 비용적인 코스트를 부담하고싶진 않을 것이다.

그냥 그들을 차단하는 선택을 하겠지.
아니면 직접적인 경고를 주거나.

🕐 차단을 피하기 위해 천천히 하는건?

사람이 하는 것 처럼 천천히 한다해도 그 행위는 1회성이 아니라 결국은 지속적 으로 하게 된다.

그러니, 예의바른 행위는 아니다.

취업을 위해선 필요하기도 하잖아?

앞에서 부정적인 언급을 했다고 해서 웹 크롤링을 하지마라 는 의미는 아니다.
크롤링을 잘 하려면 HTML, Javascript 같은 프론트엔드 지식과, 세션 및 쿠키관리같은 백엔드의 지식도 필요하니 안다고 해서 나쁠것은 없다.

그렇지만, 이런 부분들은 알고 하자.

웹 크롤링 대신 API

만약, 내가 자료를 원하는 곳에서 제공하는 API가 있다면 그걸 먼저 살펴보자.
(없으면 진짜로 어쩔 수 없으니 웹 크롤링을 하게 되겠지만)

API를 이용하게 되면 AccessToken을 발급받고 일일 조회 횟수가 제한되거나, 기타 다른 제한사항이 붙긴 하지만.

제한사항이 있는데 불편하게 왜?

불편할 순 있지만, 이쪽이 예의바르고 바람직한 행위이다.
서비스 제공자에게 내가 필요한 정보를 지속적으로 요청하겠다는 것을 허락받고 하는 것이기 때문이다.

어쩔 수 없이 웹 크롤링을 해야하면

제공하는 API도 없고 해서 정말로 어쩔 수 없이 웹 크롤링을 해야만 하는 때도 있다.
개인적인 생각에 그런 경우는 정말 최소한의 반복주기로 매 요청마다 일정 텀을 두고 천천히 하는것이 좋다고 생각한다.

좋지 않은 선택인 만큼, 최대한 서비스 제공자에게 무례하지 않게 상대방을 존중하고 배려하는 마음으로 코드를 만들었으면 한다.

❓왜 이런 글을 썼나

본인도 수많은 크롤러를 만들어 봤고, 인증 쿠키를 들고 로그인을 뚫어가면서 필요한 정보에 접근까지도 했으며, 그 과정에서 IP 차단도 많이 당해봤다.

왜 차단을 당하는건지, 이런 행위가 무례한건지 나에게 알려줄 사람은 존재하지 않았고, 검색에 나오는 웹 크롤링에 대한 내용들은 기술적인 부분만이 존재하지, 이런 윤리적인 내용을 다루는 사람은 거의 없기에 그렇다.

본인은 일할 때 이런 부분을 하나하나 바로잡아줄 동료나 선배가 없었다.
흔히들 말하는 '사수 없는' 환경에서 일해왔으니까.

그렇다고 그런 이유로 무례한 행동이 이해받거나 용서가 되는것은 아니었다.
업무상 꼭 이용해야 되는 사이트인데, 차단을 당해서 해당 업체에 연락을 해서 차단을 풀어달라고 해본적도 있고, 경고를 받은 일도 있다.

이런 경험을 공유하고자 글을 쓰게 되었다.

profile
지상 최강의 개발자 쥬니니

0개의 댓글