Scrapy 크롤러에서 프록시 IP 및 크롤링 방지 전략 사용

PHPz
풀어 주다: 2023-06-23 11:24:29
원래의
1996명이 탐색했습니다.

Scrapy 크롤러에서 프록시 IP 및 크롤러 방지 전략 사용

최근 몇 년 동안 인터넷이 발전함에 따라 크롤러를 통해 획득해야 하는 데이터가 점점 더 많아지고 크롤러에 대한 크롤러 방지 전략이 더욱 엄격해졌습니다. . 많은 시나리오에서 프록시 IP와 크롤러 방지 전략을 사용하는 것은 크롤러 개발자에게 필수적인 기술이 되었습니다. 이 기사에서는 Scrapy 크롤러에서 프록시 IP 및 크롤링 방지 전략을 사용하여 데이터 크롤링의 안정성과 성공률을 보장하는 방법에 대해 설명합니다.

1. 프록시 IP를 사용해야 하는 이유

크롤러가 동일한 웹 사이트를 방문하면 동일한 IP 주소로 식별되는 경우가 많아 쉽게 차단되거나 제한될 수 있습니다. 이를 방지하려면 프록시 IP를 사용하여 실제 IP 주소를 숨겨 크롤러의 신원을 더 잘 보호해야 합니다.

2. 프록시 IP를 사용하는 방법

Scrapy에서 프록시 IP를 사용하려면 settings.py 파일에서 DOWNLOADER_MIDDLEWARES 속성을 설정하면 됩니다.

  1. settings.py 파일에 다음 코드를 추가하세요:
DOWNLOADER_MIDDLEWARES = { 'scrapy.downloadermiddlewares.httpproxy.HttpProxyMiddleware': 1, 'scrapy.downloadermiddlewares.useragent.UserAgentMiddleware': None, 'your_project.middlewares.RandomUserAgentMiddleware': 400, 'your_project.middlewares.RandomProxyMiddleware': 410, }
로그인 후 복사
  1. middlewares.py 파일에서 RandomProxyMiddleware 클래스를 정의하여 무작위 프록시 IP 기능을 구현하세요:
import requests import random class RandomProxyMiddleware(object): def __init__(self, proxy_list_path): with open(proxy_list_path, 'r') as f: self.proxy_list = f.readlines() @classmethod def from_crawler(cls, crawler): settings = crawler.settings return cls(settings.get('PROXY_LIST_PATH')) def process_request(self, request, spider): proxy = random.choice(self.proxy_list).strip() request.meta['proxy'] = "http://" + proxy
로그인 후 복사

이는 설정에서 설정해야 합니다. py 파일 프록시 IP 목록 경로:

PROXY_LIST_PATH = 'path/to/your/proxy/list'
로그인 후 복사

크롤링을 실행할 때 Scrapy는 액세스할 프록시 IP를 무작위로 선택하여 신원을 숨기고 크롤링 성공률을 보장합니다.

3. 크롤러 방지 전략 정보

현재 웹사이트에 대한 크롤러 방지 전략은 간단한 사용자 에이전트 판단부터 보다 복잡한 확인 코드 및 슬라이딩 바 확인에 이르기까지 매우 일반적입니다. 아래에서는 Scrapy 크롤러에서 몇 가지 일반적인 크롤링 방지 전략을 처리하는 방법에 대해 설명합니다.

  1. User-Agent 안티 크롤러

크롤러 액세스를 방지하기 위해 웹사이트에서는 User-Agent 필드가 브라우저의 방식이 아닌 경우 가로채는 경우가 많습니다. 따라서 User-Agent가 크롤러로 인식되지 않도록 Scrapy 크롤러에서 임의의 User-Agent를 설정해야 합니다.

middlewares.py에서 무작위 User-Agent 기능을 구현하기 위해 RandomUserAgentMiddleware 클래스를 정의합니다:

import random from scrapy.downloadermiddlewares.useragent import UserAgentMiddleware class RandomUserAgentMiddleware(UserAgentMiddleware): def __init__(self, user_agent): self.user_agent = user_agent @classmethod def from_crawler(cls, crawler): s = cls(crawler.settings.get('user_agent', 'Scrapy')) crawler.signals.connect(s.spider_closed, signal=signals.spider_closed) return s def process_request(self, request, spider): ua = random.choice(self.user_agent_list) if ua: request.headers.setdefault('User-Agent', ua)
로그인 후 복사

동시에 settings.py 파일에서 User-Agent 목록을 설정합니다:

USER_AGENT_LIST = ['Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36']
로그인 후 복사
  1. IP 안티 크롤러

동일한 IP 주소로부터의 다수의 요청을 방지하기 위해, 웹사이트에서는 동일한 IP 주소로부터의 요청에 대한 접근을 제한하거나 금지할 수 있습니다. 이러한 상황에서는 프록시 IP를 사용하여 IP 주소를 무작위로 전환함으로써 IP 안티 크롤러를 피할 수 있습니다.

  1. 쿠키 및 세션 안티 크롤러

웹사이트에서는 쿠키 및 세션 등을 설정하여 요청의 신원을 식별할 수 있습니다. 이러한 방법은 종종 계정에 바인딩되며 각 계정에 대한 요청 빈도도 제한됩니다. 따라서 불법 요청으로 식별되지 않도록 Scrapy 크롤러에서 쿠키 및 세션을 시뮬레이션해야 합니다.

Scrapy의 settings.py 파일에서 다음을 구성할 수 있습니다.

COOKIES_ENABLED = True COOKIES_DEBUG = True
로그인 후 복사

동시에 middlewares.py 파일에 CookieMiddleware 클래스를 정의하여 쿠키 기능을 시뮬레이션합니다.

from scrapy.exceptions import IgnoreRequest class CookieMiddleware(object): def __init__(self, cookies): self.cookies = cookies @classmethod def from_crawler(cls, crawler): return cls( cookies=crawler.settings.getdict('COOKIES') ) def process_request(self, request, spider): request.cookies.update(self.cookies)
로그인 후 복사

그 중 COOKIES 설정은 다음과 같습니다.

COOKIES = { 'cookie1': 'value1', 'cookie2': 'value2', ... }
로그인 후 복사

요청이 전송되기 전에 요청의 쿠키 필드에 쿠키를 추가해야 합니다. 요청에 쿠키가 포함되어 있지 않으면 웹사이트에서 불법적인 요청으로 식별될 가능성이 높습니다.

IV.요약

위는 Scrapy 크롤러의 프록시 IP 사용 및 크롤러 방지 전략에 대한 소개입니다. 프록시 IP 및 크롤러 방지 전략을 사용하는 것은 크롤러가 제한되고 금지되는 것을 방지하는 중요한 수단입니다. 물론 크롤러 방지 전략은 끝없이 등장하고 이에 따라 다양한 크롤러 방지 전략도 처리해야 합니다.

위 내용은 Scrapy 크롤러에서 프록시 IP 및 크롤링 방지 전략 사용의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿
회사 소개 부인 성명 Sitemap
PHP 중국어 웹사이트:공공복지 온라인 PHP 교육,PHP 학습자의 빠른 성장을 도와주세요!