>  기사  >  백엔드 개발  >  Python에서 크롤링 방지를 수행하는 방법

Python에서 크롤링 방지를 수행하는 방법

(*-*)浩
(*-*)浩원래의
2019-07-01 14:10:112951검색

웹 크롤러는 검색 엔진을 위해 World Wide Web에서 웹 페이지를 자동으로 추출하는 프로그램이며 검색 엔진의 중요한 구성 요소입니다. 하지만 웹 크롤러가 악용되면 인터넷에는 동질적인 것들이 너무 많이 나타나 독창성을 보호할 수 없게 됩니다. 그 결과, 많은 웹사이트가 웹 크롤러에 맞서 싸우기 시작했고 콘텐츠를 보호하기 위해 모든 수단을 동원했습니다.

Python에서 크롤링 방지를 수행하는 방법

One: User-Agent +Referer 감지 (권장 학습: Python 비디오 튜토리얼)

User-Agent는 HTTP 프로토콜의 필드이며 그 역할은 발급하는 일부 터미널을 설명하는 것입니다. HTTP는 정보를 요청합니다.

서버에서 고객이 사용하는 운영 체제 및 버전, CPU 유형, 브라우저 및 버전, 브라우저 렌더링 엔진, 브라우저 언어, 브라우저 플러그인 등을 식별할 수 있습니다.

서버는 이 필드를 통해 누가 웹사이트를 방문하는지 알 수 있습니다. 일반 브라우저가 아닌 사용자를 차단합니다.

해결책:

브라우저마다 User-Agent가 다르고 모든 사용자가 브라우저를 사용할 수 있으므로 브라우저의 User-Agent를 위장하세요. 모든 UA 감지는 각 요청에 대해 브라우저의 User-Agent를 조정하여 해결할 수 있습니다.

Referer는 헤더의 일부입니다. 브라우저가 웹 서버에 요청을 보낼 때 일반적으로 Referer를 가져와 서버에 내가 어디에서 왔는지 알려줍니다. 페이지가 링크되어 있습니다. 예를 들어, 일부 사진 웹사이트에서는 귀하가 사진을 요청할 때 귀하의 추천인 값을 감지합니다. 추천인이 일치하지 않으면 일반 사진이 반환되지 않습니다.

해결책:

리퍼러 감지 요청에서 일치하는 리퍼러 값을 전달합니다.

둘: js 난독화 및 렌더링

소위 JavaScript 난독화는 기본적으로 다음과 같습니다.

1 실제로 호출되지 않는 일부 기능을 제거합니다.

2. 분산된 변수 선언을 결합합니다.

3. 논리 기능의 단순화.

4. 변수 이름 단순화. 다양한 압축 도구의 장단점에 따라 다릅니다. 일반적인 도구에는 UglifyJS, JScrambler 및 기타 도구가 포함됩니다.

js 렌더링은 실제로 HTML 페이지를 수정한 것입니다. 예를 들어, 일부 웹페이지 자체는 데이터를 반환하지 않습니다. 데이터는 js 로딩 후에 HTML에 추가됩니다. 이러한 상황이 발생하면 크롤러가 JavaScript 작업을 수행하지 않는다는 것을 알아야 합니다. 그러므로 다른 방법으로 처리해야 합니다.

해결책:

1. 웹사이트 js 소스 코드를 읽고 키 코드를 찾아 Python으로 구현합니다.

2. 웹사이트 js 소스코드를 읽어 핵심코드를 찾고, PyV8, execjs, 기타 라이브러리를 이용해 js 코드를 직접 실행해보세요.

3. 셀레늄 라이브러리를 통해 브라우저 환경을 직접 시뮬레이션합니다.

3: IP 제한 빈도

WEB 시스템은 http 프로토콜을 통해 WEB 컨테이너에 연결됩니다. 서버.

서버의 경우 단위 시간 내에 IP 주소에서 시작된 요청을 명확하게 볼 수 있습니다.

요청 횟수가 일정 수치를 초과할 경우 비정상적인 사용자 요청으로 판단될 수 있습니다.

해결책:

1. 자신만의 IP 프록시 풀을 설계하고 순환을 통해 각 요청마다 다른 프록시 주소를 전달합니다.

2. ADSL 동적 다이얼링에는 전화를 걸 때마다 새로운 IP가 부여됩니다. 즉, IP가 고정되어 있지 않습니다.

Four: 인증 코드

인증 코드(CAPTCHA)는 "Completely Automated PublicTuring test to Tell Computers and HumansApart"(완전 자동화된 Turing test to Tell Computers and HumansApart)의 약어입니다. 사용자는 컴퓨터 또는 인간의 완전 자동화된 프로그램입니다.

악성 비밀번호 크래킹, 티켓 사기, 포럼 플러딩을 방지하고 해커가 특정 프로그램을 사용하여 특정 등록 사용자가 연속적으로 로그인을 시도하지 못하도록 무차별 공격을 가하는 것을 효과적으로 방지할 수 있습니다.

이 질문은 컴퓨터로 생성하고 판단할 수 있지만 답변은 사람이 해야 합니다. 컴퓨터는 CAPTCHA 질문에 답할 수 없으므로 질문에 답하는 사용자는 인간으로 간주될 수 있습니다.

해결책:

1. 수동으로 인증 코드 식별

2. pytesseract가 간단한 인증 코드 식별

3. 코딩 플랫폼과 연결

4. Python 관련 기술 기사를 더 보려면

Python을 방문하세요. tutorial

배울 수 있는 칼럼!

위 내용은 Python에서 크롤링 방지를 수행하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.