KR102403941B1 - 봇 탐지를 우회하여 웹 사이트를 크롤링하는 방법 - Google Patents

봇 탐지를 우회하여 웹 사이트를 크롤링하는 방법 Download PDF

Info

Publication number
KR102403941B1
KR102403941B1 KR1020220017964A KR20220017964A KR102403941B1 KR 102403941 B1 KR102403941 B1 KR 102403941B1 KR 1020220017964 A KR1020220017964 A KR 1020220017964A KR 20220017964 A KR20220017964 A KR 20220017964A KR 102403941 B1 KR102403941 B1 KR 102403941B1
Authority
KR
South Korea
Prior art keywords
crawling
website
terminal
captcha
response message
Prior art date
Application number
KR1020220017964A
Other languages
English (en)
Inventor
황인욱
양준석
김우석
Original Assignee
(주)에스투더블유
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by (주)에스투더블유 filed Critical (주)에스투더블유
Priority to KR1020220017964A priority Critical patent/KR102403941B1/ko
Application granted granted Critical
Publication of KR102403941B1 publication Critical patent/KR102403941B1/ko
Priority to US17/842,280 priority patent/US20230259562A1/en

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/95Retrieval from the web
    • G06F16/951Indexing; Web crawling techniques
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/95Retrieval from the web
    • G06F16/955Retrieval from the web using information identifiers, e.g. uniform resource locators [URL]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/30Authentication, i.e. establishing the identity or authorisation of security principals
    • G06F21/31User authentication
    • G06F21/36User authentication by graphic or iconic representation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/30Authentication, i.e. establishing the identity or authorisation of security principals
    • G06F21/45Structures or tools for the administration of authentication
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/02Network architectures or network communication protocols for network security for separating internal from external traffic, e.g. firewalls
    • H04L63/0281Proxies
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/14Network architectures or network communication protocols for network security for detecting or protecting against malicious traffic
    • H04L63/1441Countermeasures against malicious traffic
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/02Protocols based on web technology, e.g. hypertext transfer protocol [HTTP]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/56Provisioning of proxy services
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2463/00Additional details relating to network architectures or network communication protocols for network security covered by H04L63/00
    • H04L2463/144Detection or countermeasures against botnets

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Signal Processing (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Data Mining & Analysis (AREA)
  • Computer Hardware Design (AREA)
  • Information Transfer Between Computers (AREA)
  • Software Systems (AREA)
  • Computing Systems (AREA)

Abstract

본 명세서는 단말이 웹 사이트를 크롤링하는 방법에 있어서, 봇(bot) 탐지 회피를 위해, HTTP(Hyper Text Transfer Protocol) 요청 메시지에 포함된 Header를 수정하는 단계; 유동 IP를 제공하는 Proxy 서버를 통해, 상기 HTTP 요청 메시지를 클라이언트(Client) 서버에 전송하는 단계; 상기 클라이언트 서버로부터 상기 웹 사이트에 접근하기 위한 응답 메시지를 수신하는 단계; 상기 응답 메시지에서 사용자 화면에 표시되는 구성요소(element)를 확인하기 위한 태그(tag)를 수집하는 단계; 및 상기 수집된 태그에 근거하여, 크롤링을 수행하는 단계; 를 포함할 수 있다.

Description

봇 탐지를 우회하여 웹 사이트를 크롤링하는 방법 {METHOD TO CRAWL THROUGH THE WEBSITE BY BYPASSING BOT DETECTION}
본 명세서는 웹 사이트 수집 중 봇에게 탐지되어 수집에 제한되는 것을 방지하기 위해 봇 탐지를 우회하여 웹 사이트를 크롤링하는 방법 및 이를 위한 장치에 관한 것이다.
크롤링(Crawling)이란 Web 상을 돌아다니면서 데이터를 수집하는 행위를 의미한다. 이러한 크롤링을 수행할 수 있는 소프트웨어를 크롤러(Crawler)라고 부른다. 크롤링의 주요 목적은 데이터의 수집 보다는 여러 웹페이지를 돌아다니는 것이며, 데이터가 어디에 저장되어 있는지와 관련된 위치에 대한 분류 작업이다.
봇(bot)은 특정 작업을 수행하도록 프로그래밍된 소프트웨어 응용 프로그램이다. 봇은 자동화되어 있으므로 사용자가 직접 실행하지 않아도 지시에 따라 실행된다. 또한, 사람의 행동을 모방하거나 대체하는 경우가 많다. 따라서, 반복적인 작업을 수행하는데, 사람보다 훨씬 빠르게 수행할 수 있다. 이러한 봇은 대부분 네트워크에서 작동하며, 크롤러는 봇으로 작동될 수 있다.
본 명세서의 목적은, 봇 탐지를 우회하여 웹 사이트를 크롤링하는 것이다.
본 명세서가 이루고자 하는 기술적 과제들은 이상에서 언급한 기술적 과제들로 제한되지 않으며, 언급되지 않은 또 다른 기술적 과제들은 이하의 명세서의 상세한 설명으로부터 본 명세서가 속하는 기술분야에서 통상의 지식을 가진 자에게 명확하게 이해될 수 있을 것이다.
본 명세서의 일 양상은, 단말이 웹 사이트를 크롤링하는 방법에 있어서, 봇(bot) 탐지 회피를 위해, HTTP(Hyper Text Transfer Protocol) 요청 메시지에 포함된 Header를 수정하는 단계; 유동 IP를 제공하는 Proxy 서버를 통해, 상기 HTTP 요청 메시지를 클라이언트(Client) 서버에 전송하는 단계; 상기 클라이언트 서버로부터 상기 웹 사이트에 접근하기 위한 응답 메시지를 수신하는 단계; 상기 응답 메시지에서 사용자 화면에 표시되는 구성요소(element)를 확인하는 단계; 및 상기 확인 결과에 근거하여, 크롤링을 수행하는 단계; 를 포함할 수 있다.
또한, 상기 Header를 수정하는 단계는 상기 단말을 식별하기 위한 제1 필드를 수정하는 단계; 를 포함할 수 있다.
또한, 상기 Header를 수정하는 단계는 상기 단말의 접근 주소를 포함하는 제2 필드를 수정하는 단계; 를 포함할 수 있다.
또한, 상기 제2 필드는 상기 웹 사이트의 도메인(domain) 주소로 수정될 수 있다.
또한, 상기 Proxy 서버는 High anonymous Proxy 서버일 수 있다.
또한, 상기 응답 메시지는 프로그래밍 언어로 표현된 상기 웹 사이트의 구성요소를 포함할 수 있다.
또한, 상기 크롤링을 수행하는 단계는 상기 태그에 근거하여, 사용자 화면에 표시되는 구성요소에 대응되는 경로(path)를 확인하는 단계; 및 상기 경로에 대응되는 구성요소를 크롤링하는 하는 단계; 를 포함할 수 있다.
또한, 캡챠(Captcha) 확인을 위한 이미지를 수신하는 단계; 및 인공지능 모델을 통해 상기 캡챠를 해결하는 단계; 를 더 포함할 수 있다.
또한, 상기 인공지능 모델을 통해 상기 캡챠의 해결이 실패한 경우, SNS를 통해 사용자에게 상기 캡챠 확인을 위한 이미지를 전달하는 단계; 를 더 포함할 수 있다.
본 명세서의 또 다른 일 양상은, 웹 사이트를 크롤링하는 단말에 있어서, 통신 모듈; 인공지능 모델이 포함된 메모리; 및 상기 메모리를 기능적으로 제어하는 프로세서;를 포함하고, 상기 프로세서는 봇(bot) 탐지 회피를 위해, HTTP(Hyper Text Transfer Protocol) 요청 메시지에 포함된 Header를 수정하고, 유동 IP를 제공하는 Proxy 서버를 통해, 상기 HTTP 요청 메시지를 클라이언트(Client) 서버에 전송하며, 상기 클라이언트 서버로부터 상기 웹 사이트에 접근하기 위한 응답 메시지를 수신하고, 상기 응답 메시지에서 사용자 화면에 표시되는 구성요소(element)를 확인하기 위한 태그(tag)를 수집하며, 상기 수집된 태그에 근거하여, 크롤링을 수행할 수 있다.
본 명세서의 실시예에 따르면, 봇 탐지를 우회하여 웹 사이트를 크롤링하는 방법 및 장치를 제공할 수 있다.
본 명세서에서 얻을 수 있는 효과는 이상에서 언급한 효과로 제한되지 않으며, 언급하지 않은 또 다른 효과들은 아래의 기재로부터 본 명세서가 속하는 기술분야에서 통상의 지식을 가진 자에게 명확하게 이해될 수 있을 것이다.
도 1은 본 명세서와 관련된 전자 기기를 설명하기 위한 블록도이다.
도 2는 본 명세서의 일 실시예에 따른 AI 장치의 블록도이다.
도 3은 본 명세서에 적용될 수 있는 봇 탐지 및 캡챠의 예시이다.
도 4는 본 명세서가 적용될 수 있는 웹 사이트를 크롤링하는 방법의 예시이다.
도 5는 본 명세서에서 적용될 수 있는 주기적 IP 변경의 예시이다.
도 6은 본 명세서가 적용될 수 있는 path 경로를 사용하여 크롤링하는 방법의 예시이다.
도 7은 본 명세서가 적용될 수 있는 캡챠 풀이방법의 예시이다.
도 8은 본 명세서가 적용될 수 있는 단말의 일 실시예이다.
본 명세서에 관한 이해를 돕기 위해 상세한 설명의 일부로 포함되는, 첨부 도면은 본 명세서에 대한 실시예를 제공하고, 상세한 설명과 함께 본 명세서의 기술적 특징을 설명한다.
이하, 첨부된 도면을 참조하여 본 명세서에 개시된 실시예를 상세히 설명하되, 도면 부호에 관계없이 동일하거나 유사한 구성요소는 동일한 참조 번호를 부여하고 이에 대한 중복되는 설명은 생략하기로 한다. 이하의 설명에서 사용되는 구성요소에 대한 접미사 "모듈" 및 "부"는 명세서 작성의 용이함만이 고려되어 부여되거나 혼용되는 것으로서, 그 자체로 서로 구별되는 의미 또는 역할을 갖는 것은 아니다. 또한, 본 명세서에 개시된 실시예를 설명함에 있어서 관련된 공지 기술에 대한 구체적인 설명이 본 명세서에 개시된 실시예의 요지를 흐릴 수 있다고 판단되는 경우 그 상세한 설명을 생략한다. 또한, 첨부된 도면은 본 명세서에 개시된 실시예를 쉽게 이해할 수 있도록 하기 위한 것일 뿐, 첨부된 도면에 의해 본 명세서에 개시된 기술적 사상이 제한되지 않으며, 본 명세서의 사상 및 기술 범위에 포함되는 모든 변경, 균등물 내지 대체물을 포함하는 것으로 이해되어야 한다.
제1, 제2 등과 같이 서수를 포함하는 용어는 다양한 구성요소들을 설명하는데 사용될 수 있지만, 상기 구성요소들은 상기 용어들에 의해 한정되지는 않는다. 상기 용어들은 하나의 구성요소를 다른 구성요소로부터 구별하는 목적으로만 사용된다.
어떤 구성요소가 다른 구성요소에 "연결되어" 있다거나 "접속되어" 있다고 언급된 때에는, 그 다른 구성요소에 직접적으로 연결되어 있거나 또는 접속되어 있을 수도 있지만, 중간에 다른 구성요소가 존재할 수도 있다고 이해되어야 할 것이다. 반면에, 어떤 구성요소가 다른 구성요소에 "직접 연결되어" 있다거나 "직접 접속되어" 있다고 언급된 때에는, 중간에 다른 구성요소가 존재하지 않는 것으로 이해되어야 할 것이다.
단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함한다.
본 출원에서, "포함한다" 또는 "가지다" 등의 용어는 명세서상에 기재된 특징, 숫자, 단계, 동작, 구성요소, 부품 또는 이들을 조합한 것이 존재함을 지정하려는 것이지, 하나 또는 그 이상의 다른 특징들이나 숫자, 단계, 동작, 구성요소, 부품 또는 이들을 조합한 것들의 존재 또는 부가 가능성을 미리 배제하지 않는 것으로 이해되어야 한다.
도 1은 본 명세서와 관련된 전자 기기를 설명하기 위한 블록도이다.
상기 전자 기기(100)는 무선 통신부(110), 입력부(120), 센싱부(140), 출력부(150), 인터페이스부(160), 메모리(170), 제어부(180) 및 전원 공급부(190) 등을 포함할 수 있다. 도 1에 도시된 구성요소들은 전자 기기를 구현하는데 있어서 필수적인 것은 아니어서, 본 명세서 상에서 설명되는 전자 기기는 위에서 열거된 구성요소들 보다 많거나, 또는 적은 구성요소들을 가질 수 있다.
보다 구체적으로, 상기 구성요소들 중 무선 통신부(110)는, 전자 기기(100)와 무선 통신 시스템 사이, 전자 기기(100)와 다른 전자 기기(100) 사이, 또는 전자 기기(100)와 외부서버 사이의 무선 통신을 가능하게 하는 하나 이상의 모듈을 포함할 수 있다. 또한, 상기 무선 통신부(110)는, 전자 기기(100)를 하나 이상의 네트워크에 연결하는 하나 이상의 모듈을 포함할 수 있다.
이러한 무선 통신부(110)는, 방송 수신 모듈(111), 이동통신 모듈(112), 무선 인터넷 모듈(113), 근거리 통신 모듈(114), 위치정보 모듈(115) 중 적어도 하나를 포함할 수 있다.
입력부(120)는, 영상 신호 입력을 위한 카메라(121) 또는 영상 입력부, 오디오 신호 입력을 위한 마이크로폰(microphone, 122), 또는 오디오 입력부, 사용자로부터 정보를 입력받기 위한 사용자 입력부(123, 예를 들어, 터치키(touch key), 푸시키(mechanical key) 등)를 포함할 수 있다. 입력부(120)에서 수집한 음성 데이터나 이미지 데이터는 분석되어 사용자의 제어명령으로 처리될 수 있다.
센싱부(140)는 전자 기기 내 정보, 전자 기기를 둘러싼 주변 환경 정보 및 사용자 정보 중 적어도 하나를 센싱하기 위한 하나 이상의 센서를 포함할 수 있다. 예를 들어, 센싱부(140)는 근접센서(141, proximity sensor), 조도 센서(142, illumination sensor), 터치 센서(touch sensor), 가속도 센서(acceleration sensor), 자기 센서(magnetic sensor), 중력 센서(G-sensor), 자이로스코프 센서(gyroscope sensor), 모션 센서(motion sensor), RGB 센서, 적외선 센서(IR 센서: infrared sensor), 지문인식 센서(finger scan sensor), 초음파 센서(ultrasonic sensor), 광 센서(optical sensor, 예를 들어, 카메라(121 참조)), 마이크로폰(microphone, 122 참조), 배터리 게이지(battery gauge), 환경 센서(예를 들어, 기압계, 습도계, 온도계, 방사능 감지 센서, 열 감지 센서, 가스 감지 센서 등), 화학 센서(예를 들어, 전자 코, 헬스케어 센서, 생체 인식 센서 등) 중 적어도 하나를 포함할 수 있다. 한편, 본 명세서에 개시된 전자 기기는, 이러한 센서들 중 적어도 둘 이상의 센서에서 센싱되는 정보들을 조합하여 활용할 수 있다.
출력부(150)는 시각, 청각 또는 촉각 등과 관련된 출력을 발생시키기 위한 것으로, 디스플레이부(151), 음향 출력부(152), 햅팁 모듈(153), 광 출력부(154) 중 적어도 하나를 포함할 수 있다. 디스플레이부(151)는 터치 센서와 상호 레이어 구조를 이루거나 일체형으로 형성됨으로써, 터치 스크린을 구현할 수 있다. 이러한 터치 스크린은, 전자 기기(100)와 사용자 사이의 입력 인터페이스를 제공하는 사용자 입력부(123)로써 기능함과 동시에, 전자 기기(100)와 사용자 사이의 출력 인터페이스를 제공할 수 있다.
인터페이스부(160)는 전자 기기(100)에 연결되는 다양한 종류의 외부 기기와의 통로 역할을 수행한다. 이러한 인터페이스부(160)는, 유/무선 헤드셋 포트(port), 외부 충전기 포트(port), 유/무선 데이터 포트(port), 메모리 카드(memory card) 포트, 식별 모듈이 구비된 장치를 연결하는 포트(port), 오디오 I/O(Input/Output) 포트(port), 비디오 I/O(Input/Output) 포트(port), 이어폰 포트(port) 중 적어도 하나를 포함할 수 있다. 전자 기기(100)에서는, 상기 인터페이스부(160)에 외부 기기가 연결되는 것에 대응하여, 연결된 외부 기기와 관련된 적절할 제어를 수행할 수 있다.
또한, 메모리(170)는 전자 기기(100)의 다양한 기능을 지원하는 데이터를 저장한다. 메모리(170)는 전자 기기(100)에서 구동되는 다수의 응용 프로그램(application program 또는 애플리케이션(application)), 전자 기기(100)의 동작을 위한 데이터들, 명령어들을 저장할 수 있다. 이러한 응용 프로그램 중 적어도 일부는, 무선 통신을 통해 외부 서버로부터 다운로드 될 수 있다. 또한 이러한 응용 프로그램 중 적어도 일부는, 전자 기기(100)의 기본적인 기능(예를 들어, 전화 착신, 발신 기능, 메시지 수신, 발신 기능)을 위하여 출고 당시부터 전자 기기(100)상에 존재할 수 있다. 한편, 응용 프로그램은, 메모리(170)에 저장되고, 전자 기기(100) 상에 설치되어, 제어부(180)에 의하여 상기 전자 기기의 동작(또는 기능)을 수행하도록 구동될 수 있다.
제어부(180)는 상기 응용 프로그램과 관련된 동작 외에도, 통상적으로 전자 기기(100)의 전반적인 동작을 제어한다. 제어부(180)는 위에서 살펴본 구성요소들을 통해 입력 또는 출력되는 신호, 데이터, 정보 등을 처리하거나 메모리(170)에 저장된 응용 프로그램을 구동함으로써, 사용자에게 적절한 정보 또는 기능을 제공 또는 처리할 수 있다.
또한, 제어부(180)는 메모리(170)에 저장된 응용 프로그램을 구동하기 위하여, 도 1과 함께 살펴본 구성요소들 중 적어도 일부를 제어할 수 있다. 나아가, 제어부(180)는 상기 응용 프로그램의 구동을 위하여, 전자 기기(100)에 포함된 구성요소들 중 적어도 둘 이상을 서로 조합하여 동작시킬 수 있다.
전원공급부(190)는 제어부(180)의 제어 하에서, 외부의 전원, 내부의 전원을 인가받아 전자 기기(100)에 포함된 각 구성요소들에 전원을 공급한다. 이러한 전원공급부(190)는 배터리를 포함하며, 상기 배터리는 내장형 배터리 또는 교체가능한 형태의 배터리가 될 수 있다.
상기 각 구성요소들 중 적어도 일부는, 이하에서 설명되는 다양한 실시 예들에 따른 전자 기기의 동작, 제어, 또는 제어방법을 구현하기 위하여 서로 협력하여 동작할 수 있다. 또한, 상기 전자 기기의 동작, 제어, 또는 제어방법은 상기 메모리(170)에 저장된 적어도 하나의 응용 프로그램의 구동에 의하여 전자 기기 상에서 구현될 수 있다.
본 명세서에서 전자기기(100)는 단말을 포함할 수 있다.
도 2는 본 명세서의 일 실시예에 따른 AI 장치의 블록도이다.
상기 AI 장치(20)는 AI 프로세싱을 수행할 수 있는 AI 모듈을 포함하는 전자 기기 또는 상기 AI 모듈을 포함하는 서버 등을 포함할 수 있다. 또한, 상기 AI 장치(20)는 도 1에 도시된 전자기기(100)의 적어도 일부의 구성으로 포함되어 AI 프로세싱 중 적어도 일부를 함께 수행하도록 구비될 수도 있다.
상기 AI 장치(20)는 AI 프로세서(21), 메모리(25) 및/또는 통신부(27)를 포함할 수 있다.
상기 AI 장치(20)는 신경망을 학습할 수 있는 컴퓨팅 장치로서, 서버, 데스크탑 PC, 노트북 PC, 태블릿 PC 등과 같은 다양한 전자 장치로 구현될 수 있다.
AI 프로세서(21)는 메모리(25)에 저장된 프로그램을 이용하여 신경망을 학습할 수 있다.
캡챠(CAPTCHA)는 이용자가 실제 사람이 아니라 봇(Bot) 등에 의한 비정상적 이용자인지 판별하기 위해 사용하는 인증 기술로, 문자 입력하기와 그림 맞추기 등 다양한 방식 활용해 정상 이용자를 판별한다.
AI 프로세서(21)는 크롤러를 판별할 수 있는 캡챠를 처리하기 위한 인공지능 모델을 생성할 수 있다.
예를 들어, 인공지능 모델은 문자열을 제시하는 캡챠를 해결하기 위해, 제시되는 문자열들을 학습할 수 있고 캡챠에 정답을 입력하는 task를 수행할 수 있다.
한편, 전술한 바와 같은 기능을 수행하는 AI 프로세서(21)는 범용 프로세서(예를 들어, CPU)일 수 있으나, 인공지능 학습을 위한 AI 전용 프로세서(예를 들어, GPU, graphics processing unit)일 수 있다.
메모리(25)는 AI 장치(20)의 동작에 필요한 각종 프로그램 및 데이터를 저장할 수 있다. 메모리(25)는 비 휘발성 메모리, 휘발성 메모리, 플래시 메모리(flash-memory), 하드디스크 드라이브(HDD) 또는 솔리드 스테이트 드라이브(SDD) 등으로 구현할 수 있다. 메모리(25)는 AI 프로세서(21)에 의해 액세스되며, AI 프로세서(21)에 의한 데이터의 독취/기록/수정/삭제/갱신 등이 수행될 수 있다. 또한, 메모리(25)는 본 명세서의 일 실시예에 따른 데이터 분류/인식을 위한 학습 알고리즘을 통해 생성된 신경망 모델(예를 들어, 딥 러닝 모델)을 저장할 수 있다.
한편, AI 프로세서(21)는 데이터 분류/인식을 위한 신경망을 학습하는 데이터 학습부를 포함할 수 있다. 예를 들어, 데이터 학습부는 학습에 이용될 학습 데이터를 획득하고, 획득된 학습데이터를 딥러닝 모델에 적용함으로써, 딥러닝 모델을 학습할 수 있다.
통신부(27)는 AI 프로세서(21)에 의한 AI 프로세싱 결과를 외부 전자 기기로 전송할 수 있다.
여기서 외부 전자 기기는 다른 단말, 서버를 포함할 수 있다.
한편, 도 2에 도시된 AI 장치(20)는 AI 프로세서(21)와 메모리(25), 통신부(27) 등으로 기능적으로 구분하여 설명하였지만, 전술한 구성요소들이 하나의 모듈로 통합되어 AI 모듈 또는 인공지능(AI) 모델로 호칭될 수도 있다.
도 3은 본 명세서에 적용될 수 있는 봇 탐지 및 캡챠의 예시이다.
크롤링을 거부하고자 하는 웹 사이트 운영자는 봇 탐지 및 캡챠를 이용하여 크롤러의 접근을 차단할 수 있다.
도 3(a)를 참조하면, 크롤러가 웹 사이트를 무차별적으로 수집하는 경우, 봇으로 탐지되어 수집에 제한이 발생할 수 있다. 예를 들어, 봇이 form을 확인하기 위해 html의 모든 구조를 살펴볼 때, 웹 사이트는 CSS를 통해, form이 보이지 않도록 설정해 놓을 수 있다.
이 경우 봇은 CSS를 통해 사람에게 확인되지 않는 것을 고려하지 못하므로 숨겨진 form을 확인할 수 있으며, 웹 사이트는 즉시 인간이 아닌란 걸 판단하고 봇을 차단할 수 있다. 만일, 계정 로그인 후, 크롤링을 수행하는 경우에는 당해 계정이 차단될 수도 있다.
도 3(b)를 참조하면, 크롤러가 웹 사이트를 무차별적으로 수집하는 경우, 캡챠를 확인할 수 있고, 이러한 캡챠는 종류가 다양하여 크롤링 수행시 크롤러가 다양한 캡챠를 해결하는 것은 쉽지 않다.
도 4는 본 명세서가 적용될 수 있는 웹 사이트를 크롤링하는 방법의 예시이다.
도 4를 참조하면, 단말은 클롤러를 통해, 봇 탐지를 우회하고 캡챠를 풀어내어 웹 사이트를 크롤링 할 수 있다.
1. 크롤러는 수집이 필요한 웹 사이트(target site)에 접근할 때 크롤러의 환경 및 상태를 속이기 위하여 Http(Hyper Text Transfer Protocol) request header를 조작할 수 있다.
예를 들어, 크롤러는 header에 포함된 데이터 중, user-agent, referer를 조작하여 웹 사이트에 접근할 수 있다.
보다 자세하게, HTTP 헤더는 클라이언트와 서버가 요청 또는 응답으로 부가적인 정보를 전송할 수 있도록 해준다. 헤더는 컨텍스트(Context)에 따라 다음의 표 1과 같이 그룹핑될 수 있다.
이름 설명
General header 요청과 응답 모두에 적용되지만 바디에서 최종적으로 전송되는 데이터와는 관련이 없는 헤더.
Request header 페치될 리소스나 클라이언트 자체에 대한 자세한 정보를 포함하는 헤더.
Response header 위치 또는 서버 자체에 대한 정보(이름, 버전 등)와 같이 응답에 대한 부가적인 정보를 갖는 헤더.
Entity header 컨텐츠 길이나 MIME 타입과 같이 엔티티 바디에 대한 자세한 정보를 포함하는 헤더.
표 1을 참조하면, HTTP Request header는 HTTP 요청에서 사용되지만 메시지의 컨텐츠와는 관련이 없는 HTTP 헤더로서, User-Agent (en-US), Referer를 포함할 수 있다.User-Agent는 서버 및 네트워크 피어가 요청 사용자 에이전트의 응용 프로그램, 운영 체제, 공급업체 및/또는 버전을 식별할 수 있는 문자열이다.
다음의 표 2는 웹 브라우져에서 User-Angent의 포맷을 예시한다.
User-Agent: <product> / <product-version> <comment>
표 2를 참조하면, <product>는 product의 식별자, <product-version>은 product의 버전 번호, <comment>는 product 정보와 관련된 주석을 의미할 수 있다.Referer은 현재 요청을 보낸 페이지의 절대 혹은 부분 주소를 포함할 수 있다. 예를 들어, 만약 링크를 타고 들어왔다면 해당 링크를 포함하고 있는 페이지의 주소가, 다른 도메인에 리소스 요청을 보내는 경우라면 해당 리소스를 사용하는 페이지의 주소가 이 헤더에 포함될 수 있다.
다음의 표 3은 referer의 포맷을 예시한다.
Referer: <url>
웹 사이트는 전술한 헤더를 확인하여 사용을 제한하는 디바이스, 소프트웨어, 사이트인 경우, 이들의 접근을 제한할 수 있다. 따라서, 크롤러는 안전하다고 알려진 또는 일반적인 다른 User-Agent를 이용하여 웹 사이트에 접근할 수 있다. 또한, 크롤러는 수집하고자 하는 타켓 웹 사이트의 도메인으로 referer를 변경하여 타켓 웹 사이트에 접근할 수 있다.2. 크롤러는 proxy를 사용하여 주기적으로 IP를 변경하여 웹 사이트에 접근할 수 있다.
예를 들어, 크롤러는 하나의 아이피가 아닌 Proxy 서버를 통해, 타켓 웹사이트의 수집 타겟 서버에서 크롤러의 IP를 모르게 할 수 있다. 이를 통해 수집 타겟 서버에서는 계속 새로운 유저가 접근하는 것으로 확인될 수 있다.
도 5는 본 명세서에서 적용될 수 있는 주기적 IP 변경의 예시이다.
도 5를 참조하면, 크롤러가 직접 웹 사이트에 접근하는 경우, 수집 타켓 서버는 클로러의 아이피를 인식할 수 있다. 그러나 Proxy 서버를 통해 접근하는 경우, Proxy 서버는 크롤러의 IP 주소와 Proxy 서버를 사용중이라는 사실을 모두 숨길 수 있다. 예를 들어, Proxy 서버는 유동 IP를 사용할 수 있고, 크롤러는 이를 통해 주기적으로 다른 IP 주소를 통해 웹 사이트에 접근할 수 있다.
3. 다시 도 4를 참조하면, 크롤러는 실제 사람처럼 수집하기 위하여 사람의 눈에 보이는 xpath를 통해 일정한 패턴으로 수집을 진행할 수 있다.
xpath는 웹이 기록된 정보들에 접근하는 방식을 다룬 문법이며 xpath는 다루고 싶은 모든 element들을 노드(node) 단위로 처리할 수 있다.
다음의 표 4는 xpath의 노드를 예시한다.
node 특성
element node 태그
attribute node 속성
text node 태그의 내용
namespace node 각 tag의 identity를 위해 붙이는 xmlns:prefix="URI" 형식의 attribute
processing-instruction node 어떤 instruction을 수행함 (<? 태그로 시작)
comment node 주석문
root node xml 자체를 표현하는 가상 노드
도 6은 본 명세서가 적용될 수 있는 path 경로를 사용하여 크롤링하는 방법의 예시이다.도 6을 참조하면, 크롤러는 사용자 화면에 표시되는 구성과 대응되는 XML(eXtensible Markup Language) 문서의 구성으로부터 태그를 수집하고, 이를 통해 크롤링 대상이 되는 구성을 한정하여 수집을 진행할 수 있다.
크롤러는 예시한 XML 뿐만 아니라 다른 언어(예를 들어, HTML)로 구성된 문서에서도 유사한 방식으로 path 경로를 찾아 크롤링을 수행할 수 있다.
4. 다시 도 4를 참조하면, 크롤러는 캡챠를 해결할 수 있다.
예를 들어, 크롤러가 크롤링을 수행하여 데이터를 수집 시, 캡챠를 만나게 되면, 단말은 머신러닝으로 자동으로 해결하거나, 머신러닝으로 학습되지 못하거나 풀 수 없는 문제들은 메신저 앱을 보내어 사람이 캡챠에 해당하는 값을 입력하고, 크롤러는 사람이 보낸 값을 다시 웹 사이트에 자동으로 입력하여 정상적으로 접근할 수 있다.
도 7은 본 명세서가 적용될 수 있는 캡챠 풀이방법의 예시이다.
단말은 문자열 캡챠의 경우, 지속적인 학습(머신러닝)을 통해 자동으로 해결할 수 있다. 만일, 인공지능 모델을 통해 처리하지 못하는 캡챠는 메신저 봇에게 전달되어 사람이 해결할 수 있게 할 수 있다.
도 7을 참조하면, 예를 들어, 해결하지 못한 문자열, 마우스로 클릭하는 캡챠의 경우, 단말은 텔레그램으로 캡챠의 이미지를 사용자에게 전송하여 사용자가 캡챠를 해결하기 위한 해당 이미지의 번호를 입력하여 캡챠를 해결할 수 있게 할 수 있다.
전술한 크롤러의 동작은 단말에 의해 수행될 수 있다.
도 8은 본 명세서가 적용될 수 있는 단말의 일 실시예이다.
도 8을 참조하면, 단말은 통신모듈을 통해 네트워크에 연결되어, 통신을 수행할 수 있으며 메모리는 크롤러의 역할을 수행할 수 있는 소프트웨어를 포함할 수 있다.
단말은 HTTP 요청 메시지에 포함된 Header를 수정한다(S8010).
Header는 단말을 식별하기 위한 제1 필드(예를 들어, User-Agent) 및 단말의 접근 주소를 포함하는 제2 필드(예를 들어, Referer)을 포함할 수 있다.
단말은 유동 IP를 제공하는 Proxy 서버를 통해, HTTP 요청 메시지를 클라이언트 서버에 전송한다(S8020). 예를 들어, Proxy 서버는 High anonymous(ELITE) Proxy 서버일 수 있다. 클라이언트 서버는 타켓 웹 페이지를 제공할 수 있다.
단말은 클라이언트 서버로부터 타켓 웹 사이트에 접근하기 위한 응답 메시지를 수신한다(S8030). 예를 들어, 응답 메시지는 타켓 웹 페이지의 구성요소(element)를 포함할 수 있다. 타켓 웹 페이지는 XML, HTML 등을 이용하여 구성될 수 있다.
단말은 응답 메시지에서 사용자 화면에 표시되는 구성요소를 확인하기 위한 태그(tag)를 수집한다(S8040).
단말은 수집된 태그에 근거하여, 크롤링을 수행한다(S8050). 예를 들어, 단말은 태그를 통해 사용자가 화면을 통해 확인할 수 있는 구성요소에 대응되는 path 경로를 확인할 수 있고, 확인된 path 경로에 대응되는 구성에 대해 크롤링을 수행할 수 있다.
만일, 단말이 캡챠 확인을 위한 이미지를 수신하는 경우, 단말은 인공지능 모델을 통해 당해 이미지에 포함된 캡챠를 해결할 수 있다. 캡챠 해결이 실패하는 경우, 단말은 SNS를 통해 사용자에게 이미지를 전송하고, 사용자로부터 캡챠 해결을 위한 입력값을 수신하며, 당해 입력값을 통해 캡챠를 해결할 수 있다.
이를 통해, 단말은 웹 페이지 수집시 크롤러의 정보를 노출시키지 않고, 봇 탐지를 우회할 수 있으며, 계정 차단 및 IP 차단에 대해 안전하게 크롤링 할 수 있다. 또한, 웹 페이지에서 직접 캡챠 문자열을 입력하지 않고, 자동으로 캡챠를 해결할 수 있으며, 자동으로 해결이 불가능한 경우, 메신저 앱을 통해 사용자와 인터랙션을 수행하여 캡챠를 해결할 수 있다.
전술한 본 명세서는, 프로그램이 기록된 매체에 컴퓨터가 읽을 수 있는 코드로서 구현하는 것이 가능하다. 컴퓨터가 읽을 수 있는 매체는, 컴퓨터 시스템에 의하여 읽혀 질 수 있는 데이터가 저장되는 모든 종류의 기록장치를 포함한다. 컴퓨터가 읽을 수 있는 매체의 예로는, HDD(Hard Disk Drive), SSD(Solid State Disk), SDD(Silicon Disk Drive), ROM, RAM, CD-ROM, 자기 테이프, 플로피 디스크, 광 데이터 저장 장치 등이 있으며, 또한 캐리어 웨이브(예를 들어, 인터넷을 통한 전송)의 형태로 구현되는 것도 포함한다. 따라서, 상기의 상세한 설명은 모든 면에서 제한적으로 해석되어서는 아니되고 예시적인 것으로 고려되어야 한다. 본 명세서의 범위는 첨부된 청구항의 합리적 해석에 의해 결정되어야 하고, 본 명세서의 등가적 범위 내에서의 모든 변경은 본 명세서의 범위에 포함된다.
또한, 이상에서 서비스 및 실시 예들을 중심으로 설명하였으나 이는 단지 예시일 뿐 본 명세서를 한정하는 것이 아니며, 본 명세서가 속하는 분야의 통상의 지식을 가진 자라면 본 서비스 및 실시 예의 본질적인 특성을 벗어나지 않는 범위에서 이상에 예시되지 않은 여러 가지의 변형과 응용이 가능함을 알 수 있을 것이다. 예를 들어, 실시 예들에 구체적으로 나타난 각 구성 요소는 변형하여 실시할 수 있는 것이다. 그리고 이러한 변형과 응용에 관계된 차이점들은 첨부한 청구 범위에서 규정하는 본 명세서의 범위에 포함되는 것으로 해석되어야 할 것이다.

Claims (10)

  1. 단말이 웹 사이트를 크롤링하는 방법에 있어서,
    봇(bot) 탐지 회피를 위해, HTTP(Hyper Text Transfer Protocol) 요청 메시지에 포함된 Header를 수정하는 단계;
    유동 IP를 제공하는 Proxy 서버를 통해, 상기 HTTP 요청 메시지를 클라이언트(Client) 서버에 전송하는 단계;
    상기 클라이언트 서버로부터 상기 웹 사이트에 접근하기 위한 응답 메시지를 수신하는 단계;
    상기 응답 메시지에서 사용자 화면에 표시되는 구성요소(element)를 확인하는 단계; 및
    상기 확인 결과에 근거하여, 크롤링을 수행하는 단계;
    를 포함하는 크롤링 방법.
  2. 제1항에 있어서,
    상기 Header를 수정하는 단계는
    상기 단말을 식별하기 위한 제1 필드를 수정하는 단계;
    를 포함하는 크롤링 방법.
  3. 제2항에 있어서,
    상기 Header를 수정하는 단계는
    상기 단말의 접근 주소를 포함하는 제2 필드를 수정하는 단계;
    를 포함하는 크롤링 방법.
  4. 제3항에 있어서,
    상기 제2 필드는
    상기 웹 사이트의 도메인(domain) 주소로 수정되는, 크롤링 방법.
  5. 제1항에 있어서,
    상기 Proxy 서버는
    High anonymous Proxy 서버인, 크롤링 방법.
  6. 제5항에 있어서,
    상기 응답 메시지는
    프로그래밍 언어로 표현된 상기 웹 사이트의 구성요소를 포함하는, 크롤링 방법.
  7. 제6항에 있어서,
    상기 크롤링을 수행하는 단계는
    상기 사용자 화면에 표시되는 구성요소를 확인하기 위한 태그에 근거하여, 사용자 화면에 표시되는 구성요소에 대응되는 경로(path)를 확인하는 단계; 및
    상기 경로에 대응되는 구성요소를 크롤링하는 하는 단계;
    를 포함하는, 크롤링 방법.
  8. 제7항에 있어서,
    캡챠(Captcha) 확인을 위한 이미지를 수신하는 단계; 및
    인공지능 모델을 통해 상기 캡챠를 해결하는 단계;
    를 더 포함하는, 크롤링 방법.
  9. 제8항에 있어서,
    상기 인공지능 모델을 통해 상기 캡챠의 해결이 실패한 경우, SNS를 통해 사용자에게 상기 캡챠 확인을 위한 이미지를 전달하는 단계;
    를 더 포함하는, 크롤링 방법.
  10. 웹 사이트를 크롤링하는 단말에 있어서,
    통신 모듈;
    인공지능 모델이 포함된 메모리; 및
    상기 메모리를 기능적으로 제어하는 프로세서;를 포함하고,
    상기 프로세서는
    봇(bot) 탐지 회피를 위해, HTTP(Hyper Text Transfer Protocol) 요청 메시지에 포함된 Header를 수정하고, 유동 IP를 제공하는 Proxy 서버를 통해, 상기 HTTP 요청 메시지를 클라이언트(Client) 서버에 전송하며, 상기 클라이언트 서버로부터 상기 웹 사이트에 접근하기 위한 응답 메시지를 수신하고, 상기 응답 메시지에서 사용자 화면에 표시되는 구성요소(element)를 확인하며, 상기 확인 결과에 근거하여, 크롤링을 수행하는 단말.
KR1020220017964A 2022-02-11 2022-02-11 봇 탐지를 우회하여 웹 사이트를 크롤링하는 방법 KR102403941B1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020220017964A KR102403941B1 (ko) 2022-02-11 2022-02-11 봇 탐지를 우회하여 웹 사이트를 크롤링하는 방법
US17/842,280 US20230259562A1 (en) 2022-02-11 2022-06-16 Method of crawling website by bypassing bot detection

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020220017964A KR102403941B1 (ko) 2022-02-11 2022-02-11 봇 탐지를 우회하여 웹 사이트를 크롤링하는 방법

Publications (1)

Publication Number Publication Date
KR102403941B1 true KR102403941B1 (ko) 2022-05-31

Family

ID=81787194

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020220017964A KR102403941B1 (ko) 2022-02-11 2022-02-11 봇 탐지를 우회하여 웹 사이트를 크롤링하는 방법

Country Status (2)

Country Link
US (1) US20230259562A1 (ko)
KR (1) KR102403941B1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102567371B1 (ko) 2022-11-18 2023-08-16 (주)아이와즈 봇 탐지 우회를 위한 인간 모사형 웹사이트 크롤링 시스템과 그 방법

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108900623A (zh) * 2018-07-11 2018-11-27 邦尼集团有限公司 一种基于动态ip的网页正文获取方法及装置

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP2673708B1 (en) * 2011-02-10 2018-04-25 Fireblade Holdings, LLC DISTINGUISH VALID USERS FROM BOTS, OCRs AND THIRD PARTY SOLVERS WHEN PRESENTING CAPTCHA
US20130198266A1 (en) * 2012-01-30 2013-08-01 5O9, Inc. Facilitating communication between web-enabled devices
US9361446B1 (en) * 2014-03-28 2016-06-07 Amazon Technologies, Inc. Token based automated agent detection
US9075990B1 (en) * 2014-07-01 2015-07-07 Shape Security, Inc. Reliable selection of security countermeasures
US20210326399A1 (en) * 2018-08-29 2021-10-21 Hudson Bay Wireless Llc System and Method for Search Engine Results Page Ranking with Artificial Neural Networks
US11205041B2 (en) * 2019-08-15 2021-12-21 Anil Kumar Web element rediscovery system and method

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108900623A (zh) * 2018-07-11 2018-11-27 邦尼集团有限公司 一种基于动态ip的网页正文获取方法及装置

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102567371B1 (ko) 2022-11-18 2023-08-16 (주)아이와즈 봇 탐지 우회를 위한 인간 모사형 웹사이트 크롤링 시스템과 그 방법

Also Published As

Publication number Publication date
US20230259562A1 (en) 2023-08-17

Similar Documents

Publication Publication Date Title
DeNardis The Internet in everything
US10642904B2 (en) Infrastructure enabling intelligent execution and crawling of a web application
US9100825B2 (en) Method and system for multi-factor biometric authentication based on different device capture modalities
CN104067561B (zh) 用于动态扫描web应用的方法和系统
CN103930897B (zh) 移动应用、单点登录管理
WO2021022689A1 (zh) 一种信息采集方法和装置
US8812697B2 (en) Method of controlling a browser window
US20140358964A1 (en) Natural language processing (NLP) query formulation engine for a computing device
US20130227651A1 (en) Method and system for multi-factor biometric authentication
EP3005215B1 (en) Passive security of applications
US20140195599A1 (en) System and method for redirecting client-side storage operations
CN109726556A (zh) 抗滥用基础设施中的实体属性的近线集群和传播
CN110266661A (zh) 一种授权方法、装置及设备
KR102403941B1 (ko) 봇 탐지를 우회하여 웹 사이트를 크롤링하는 방법
JP3520264B2 (ja) 認証情報入力システム、認証情報保管システム、認証情報入力方法および認証情報入力プログラム
EP4360249A1 (en) Security risk remediation tool
US20220022821A1 (en) Anonymous contact tracing system and method
CN105339928B (zh) 网站服务器请求重新路由
JPH11272613A (ja) 利用者認証方法及びこの方法を実現するプログラムを格納した記録媒体並びに上記方法を用いる利用者認証システム
Moad et al. Fingerprint defender: defense against browser-based user tracking
US20110145723A1 (en) System and method for redirecting client-side storage operations
JP4429229B2 (ja) ディレクトリ情報提供方法、ディレクトリ情報提供装置、ディレクトリ情報提供システム、及びプログラム
Deravi et al. Intelligent agents for the management of complexity in multimodal biometrics
CN113765924A (zh) 基于用户跨服务器访问的安全监测方法、终端及设备
US11836192B2 (en) Method of collecting and preprocessing learning data of artificial intelligence model to perform dark web document classification

Legal Events

Date Code Title Description
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant