2024 SWLUG/파이썬 프로젝트 - 크롤러

검색/크롤링/스크래핑

un_plugged 2024. 5. 22. 14:18

이 글에서는 일반적인 검색, 크롤링, 스크래핑에 대해 개념을 구분해보려고 한다.

크롤링이 프로젝트의 주제이지만 그 전에 이 글에서 관련 개념들을 구분하고 확실히하는 것이 목표다! 추가로 크롤링 관련하여 일어난 보안 사고 등 기사들을 스크랩 해보았다.

▶검색

말 그대로 무언가를 찾는다는 것이다. 여기에 "검색 엔진"이라는 중요한 개념이 있다.

검색 엔진

사용자가 원하는 정보인 검색어(키워드)가 입력되면 그에 따른 결과물(정보)를 만들어내는 시스템이나 프로그램이다.

-> 검색 엔진은 평소에 인터넷상에서 정보를 수집하고 이를 업데이트 하는데 이를 "검색 로봇(자동화된 정보 수집 프로그램)"이라고 한다.

<검색 엔진의 원리>

1. 크롤링

여기서 크롤링의 개념이 등장한다! 크롤링의 정의는 웹크롤링(1) 포스트에서 다루었으니 여기선 간단하게만 다루겠다.

웹 크롤링: 인터넷 상에 존재하는 모든 웹 페이지를 방문하여 데이터를 수집하는 방법이다. 즉, 싹 다 긁어오는 것으로 볼 수 있다.

-> 여기서 이 긁어오는 프로그램을 "봇(bot)"이라고도 한다. 봇은 각 페이지의 링크(URL)를 따라가면서 자동으로 데이터를 수집한다.

즉, 크롤링은 웹 상에서의 다양한 정보를 자동으로 검색하고 인덱싱하기 위해 거치는 절차라고 생각하면 된다! (검색과 구분되는 개념이라고 생각했는데...아니었다...ㅎㅎ)

2. 파싱(Parsing)

수집한 문서에서 제목, 본문, 주제어 등 필요한 요소만 추출하고 나머지 노이즈는 제거하는 단계

3. Indexing(컨텐츠 색인)

어떤 정보가 어떤 위치에 있는지 정리하고 구분하는 과정. 색인된 페이지는 거대한 DB에 저장된다.

4. 검색

검색어를 입력하여 검색 결과를 얻어내는 과정

▶웹 크롤링과 스크래핑의 차이점

추가로 스크래핑과 크롤링의 차이점을 정리해보려고 한다. 웹크롤링(1) 포스트에서 한 번 정리하긴 했지만 좀 더 명확히 하기 위해 이번 포스트에서 다시 복습하려고 한다.

우선, 스크래핑이란 특정한 웹 사이트에서 필요한 데이터를 수집하는 방법이다. 예를 들어

특정 주제의 뉴스만을 가져오거나, 인기 검색어 정보를 가져오는 것, 어떤 상품의 가격을 모니터링하는 것 등이 있다.

웹 크롤링과 웹 스크래핑 모두 "정보를 추출한다"는 공통점이 있다. 그러나 아래와 같이 둘의 차이점을 정리할 수 있다.

<웹 크롤링>

① 타깃 페이지 유무: O (특정 페이지가 목표가 아님. 웹페이지 간의 링크를 자동으로 탐색하는 과정) -> 선탐색 후추출!

② 중복 제거 실행 유무: O (필수! 굳이 중복된 데이터를 가져와서 분류를 어렵게 할 필요가 없기 때문)

③ 데이터 수집 범위: 넓음 (모든 웹페이지를 방문)

<웹 스크래핑>

① 타킷 페이지 유무: X (목표로 하는 특정 페이지 존재) -> 선결정 후추출!

② 중복 제거 실행 유무: X (필수는 아님)

③ 데이터 수집 범위: 좁음 (특정 웹사이트에서 정보 추출)

▶크롤링 관련 보안 기사

첫번째 크롤링 관련 기사이다.

특정 회사 퇴직자들의 친목모임으로 추정되는 다음 카페의 회원 주소록이 고스란히 검색되어 약 470여명의 이름, 전화번호, 주소 등 개인정보가 노출되는 사건이 있었다. 이러한 노출 사고의 원인은 구글 봇의 크롤링(Crawling) 기능 때문이다.

-> PC에서 조회한 웹페이지의 URL이 열어본 페이지로 저장되어 있을 경우 크롤링을 통해 PC에 저장된 정보(URL)까지 모두 검색해 찾아준다!

또한, 전자세금계산서 관련 업체에서는 고객사의 세금계산서 PDF가 구글에 노출된 것을 확인하고, 노출된 PDF 파일을 삭제해 달라고 요청하는 한편 자사의 세금계산과 관련 폴더를 크롤링하지 말 것을 구글에 요청한 바 있다.

즉, 크롤링이 개인정보 유출 사고의 원인이 될 수 있다.

2. 나날이 커지는 도박 문제, 불법 도박사이트부터 빠르게 탐색해야 (boannews.com)

두번째 기사이다. 이 기사는 첫번째처럼 크롤링이 부정적으로 사용된 경우가 아닌 긍정적으로 쓰일 수 있다는 내용이 담겨져있다.

기사에 따르면 "KAIST 사이버보안연구센터에서는 지능화, 고도화되며 끊임없이 증가하는 불법 도박사이트에 대한 대응책을 마련하고자 이에 대한 추적과 탐지 방안을 찾는 연구를 진행하고 있다. 특히, 국내 도박사이트의 운영과 홍보방식을 분석해 관련 URL을 수집할 수 있고 증거수집에 용이한 도박사이트 탐색 전용 크롤러를 개발했다."

-> 이와 같이 크롤러가 바람직한 방향으로 개발될 수 있다!

3. 쇼단, 새로운 무료 인터넷 스캐닝 툴 공개 (boannews.com)

이 기사는 2017년 유명 인터넷 검색 엔진인 쇼단(Shodan)에서 무료 스캐닝 툴을 제공하였는데 이 툴의 이름은 멀웨어 헌터(Malware Hunter)로, 일종의 크롤러(crawler)다.

기사에 따르면 "쇼단이 출시한 멀웨어 헌터 크롤러는 인터넷 서버, 라우터, 웹캠 등 인터넷과 연결된 기기들의 포트를 스캔해 RAT 통제자의 IP 주소를 찾아낸다. 감염이 시작되거나 확산되기 전에 찾아내는 것이 이 크롤러의 목적이다. 툴을 시작하면 이미 알려진 RAT 시그니처를 기반으로 RAT 통제자들을 크롤러들이 찾아 나서기 시작한다. 멀웨어 헌터는 스스로를 감염된 클라이언트인 것처럼 가장해 인터넷에 연결된 C&C 서버들을 검색하고 기존 C&C 서버 검색 기법들에 비해 훨씬 빠르게 결과를 낸다 "

-> 크롤러를 통해 발생할 수 있는 보안 사고를 사전에 방지한다!

RAT: Remote Access Trojan. 원격 접근 트로이목마로 일종의 백도어 멀웨어로 공격자들이 원격에서 피해자 시스템을 통제한다.

트로이 목마: 악성 루틴이 숨어 있는 프로그램으로, 겉보기에는 정상적인 프로그램으로 보이지만 실행하면 악성 코드를 실행한다.

'2024 SWLUG > 파이썬 프로젝트 - 크롤러' 카테고리의 다른 글

웹크롤링(2)  (0) 2024.05.22
웹크롤링(1)  (0) 2024.05.22
파이썬 개발환경 구축  (0) 2024.05.22