어두운 proxyscrape 로고

How To Use Proxies To Rotate IP Addresses In Python? 5 Easy Steps In 2024

방법, 프록시, Python, Nov-02-20225분 읽기

목차

프록시를 사용하면 대상 서버에 직접 연결하지 않고 요청을 평가하고 응답을 반환하는 프록시 서버로 요청을 전달합니다. 프록시는 실제 IP 주소를 숨기고 필터, 검열 등을 우회하는 등 많은 이점이 있습니다. 

동일한 IP 주소에서 여러 요청을 전송하기 때문에 고급 웹 스크래핑을 수행하기가 어려울 때가 있습니다. 웹 스크래퍼는 스크래핑하는 웹사이트에 의해 차단되는 일반적인 문제에 직면합니다. 하지만 다음과 같은 다양한 기술을 사용하여 차단을 방지할 수 있습니다.
  • 회전하는 IP 주소
  • 헤드리스 브라우저 사용
  • 크롤링 속도 감소,
  • 프록시 사용

프록시 로테이터는 대부분의 스크래핑 방지 조치를 우회하는 데 도움이 될 수 있습니다. 또한 대상 웹사이트에 적용된 속도 제한을 우회하고 데이터를 성공적으로 추출하는 데 사용할 수도 있습니다. 하지만 로테이팅 프록시란 무엇인가요? 프록시 풀의 모든 연결에 대해 새 IP 주소를 할당하는 프록시입니다. 즉, 스크립트를 실행하고 1000개의 서로 다른 IP 주소를 가져와서 원하는 수의 웹사이트에 1000개의 요청을 보낼 수 있습니다.

이 문서는 파이썬에서 프록시를 사용하여 IP 주소를 회전하는 방법을 이해하는 데 도움이 됩니다.

파이썬에서 프록시를 사용하여 IP 주소를 회전하는 방법

무료 프록시 목록을 스크랩하여 list_proxy.txt라는 텍스트 파일에 저장할 수 있습니다. 그런 다음 아래 단계에 따라 Python에서 IP 주소를 회전할 수 있습니다.

라이브러리 가져오기

아래 명령을 사용하여 Python의 요청 모듈을 가져와야 합니다.

가져오기 요청

사용 중인 환경에 모듈이 설치되어 있지 않은 경우 아래 명령을 사용하여 설치할 수 있습니다.

!pip 설치 요청

함수 만들기

두 개의 매개 변수, 즉 세션과 프록시를 받는 send_request 함수를 만들어야 합니다. 대부분의 무료 프록시는 HTTPS 프로토콜을 사용하지 않으므로 HTTP 프록시를 사용하는 것이 좋습니다. 대부분의 무료 프록시는 차단 목록에 등록되어 작동하지 않으므로 시도 예외 블록을 사용할 것입니다.
def send_request(session, proxy):
   try:
       response = session.get('http://httpbin.org/ip', proxies={'http': f"http://{proxy}"})
       print(response.json())
   except:
       pass

.txt 파일 읽기

다음은 코드의 주요 부분입니다. 아래와 같이 list_proxy.txt 파일을 읽고 proxies라는 변수에 저장해야 합니다.

if __name__ == "__main__":
  open('list_proxy.txt', 'r')  파일로 사용합니다:
       proxies = file.readlines()

For 루프 사용

파이썬에서 세션을 생성하려면 요청 모듈을 사용해야 합니다. 아래 코드에서 프록시를 반복하기 위해 for 루프를 사용했습니다. 그런 다음 세션과 프록시를 send_request 함수에 전달했습니다. 

요청.세션() 세션으로 사용합니다:
  프록시의 프록시에 대해 
       send_request(세션, 프록시)

스크립트 실행

스크립트를 실행하면 아래와 같이 출력을 확인할 수 있습니다. 프록시 목록이 길게 표시되지만 프록시는 작동하지 않는다는 점을 기억하세요. 

파이썬 회전 프록시

전체 코드는 다음과 같습니다:

import requests


def send_request(session, proxy):
   try:
       response = session.get('http://httpbin.org/ip', proxies={'http': f"http://{proxy}"})
       print(response.json())
   except:
       pass


if __name__ == "__main__":
   with open('list_proxy.txt', 'r') as file:
       proxies = file.readlines()

   with requests.Session() as session:
       for proxy in proxies:
           send_request(session, proxy)

프록시 로테이터를 구축하는 팁

다음은 파이썬에서 회전 프록시를 사용할 때 프록시를 회전하는 몇 가지 팁입니다.

신뢰할 수 있는 무료 프록시 서비스 사용

사용 가능한 대부분의 무료 프록시 서비스는 혼잡하기 때문에 예기치 않은 충돌과 짜증스러운 지연이 발생합니다. 따라서 무료 프록시를 사용할 계획이라면 스크래핑 요구 사항에 맞는지 확인해야 합니다.

대부분의 무료 프록시는 제한된 시간 동안만 유효하므로 Python에서 무료 프록시 목록 로테이터를 작동하는 IP 주소로 회전시킬 수 있는 자체 로직을 구축할 수 있습니다. 이렇게 하면 웹 스크래핑 중에 중단이 발생하지 않습니다. 

예측 가능한 프록시 IP 주소 사용 자제

특정 시퀀스를 따르거나 같은 그룹에 속하는 등 예측 가능한 형식을 따르는 IP 주소는 사용하지 않아야 합니다. 대부분의 스크래핑 방지 도구가 이러한 IP 주소에서 전송된 요청을 쉽게 감지할 수 있기 때문입니다. 예를 들어, 다음과 같은 순서로 회전하는 IP 주소는 빠르게 적신호를 발생시키므로 사용을 자제해야 합니다.

103.243.132.11

103.243.132.12

103.243.132.13

103.243.132.14

프리미엄 프록시 서비스 고려하기

무료 프록시 IP 로테이터는 안전하지 않고 느립니다. 따라서 고급 및 대규모 웹 스크래핑 프로젝트를 수행하는 경우 사용하기에 적합하지 않습니다. 좋은 프리미엄 프록시를 사용하면 차단이나 중단 없이 고품질의 서비스를 받고 수천 개의 웹 페이지를 스크랩할 수 있습니다. 

프리미엄 프록시 서비스를 사용하려면 몇 달러를 지불하고 데이터 추출 요구 사항을 충족하고 개인 정보를 보장하는 제공업체를 찾아야 합니다.

엘리트 프록시 사용

다음은 인터넷에서 프록시를 사용하는 세 가지 주요 범주입니다.

  • 엘리트 프록시
  • 익명 프록시
  • 투명한 프록시
엘리트 프록시는 탐지를 방지하고 제한을 우회할 수 있으므로 이러한 프록시 중에서 고려할 수 있는 가장 좋은 옵션입니다. 엘리트 프록시를 사용하면 다른 헤더는 비워두고 REMOTE_ADDR 헤더만 전송할 수 있습니다. 이렇게 하면 이러한 프록시를 사용하여 최적의 개인정보 보호를 달성할 수 있습니다.
반면, 투명 프록시는 사용자의 IP 주소 세부 정보를 공개하고 HTTP_VIA 헤더와 HTTP_X_FORWARDED_FOR 헤더를 통해 실제 IP를 전송합니다. 익명 프록시는 사용자의 실제 IP 주소를 공개하지 않습니다. 프록시는 프록시의 IP를 전송하거나 비워둡니다.

IP 로테이션과 사용자 에이전트 로테이션 결합

여러 IP 주소를 순환하여 탐지를 피하기 위해 IP 로테이션을 사용할 수 있습니다. 그러나 일부 스크래핑 방지 조치는 이러한 활동을 식별하여 데이터 수집을 차단할 수 있습니다. 따라서 성공 확률을 높이려면 IP 주소 로테이션과 별도로 사용자 에이전트도 로테이션해야 합니다. 

자주 묻는 질문:

1. How to use proxies to rotate IP addresses using python?
파이썬 라이브러리 요청의 도움으로 프록시를 쉽게 로테이션할 수 있습니다. 먼저 ProxyScrape웹사이트에서 무료 프록시 목록을 다운로드하고, 전체 IP 로테이션 프로세스를 수행하는 데 사용할 수 있는 함수를 만든 다음, 읽기 함수를 사용하여 다운로드한 무료 프록시를 읽고, 마지막으로 for loop를 사용하여 스크립트를 실행하여 세션에 사용할 수 있는 프록시를 가져오면 됩니다.
2. Is there a proxy rotator available online?
예, 온라인에서 프록시 로테이터를 사용할 수 있습니다. 데이터센터의 프록시를 수동으로 로테이션하는 대신 이러한 프록시 로테이터를 사용하여 무거운 작업을 수행할 수 있습니다. 그러나 이러한 서비스는 유료 서비스이므로 무료 프록시 로테이터를 원한다면 Python을 사용하여 로테이터를 구축하는 것이 가장 좋은 방법입니다.
3. How do proxies help in web scraping?
프록시는 원래 IP 주소를 마스킹하고 해당 IP 주소를 사용하여 필요한 정보를 얻기 위해 대상 서버에 여러 요청을 전송하는 데 도움을 줍니다. 웹 스크래핑의 경우 많은 요청을 빠르게 보내야 하는데, 대상 서버는 이를 비정상적인 동작으로 간주하고 사용자의 IP 주소를 차단할 수 있습니다. 프록시는 이러한 시나리오를 방지하는 데 도움이 됩니다.

결론

파이썬에서 프록시 로테이터를 만드는 것은 간단합니다. 임의의 프록시를 생성한 다음 로직을 작성하여 웹사이트에서 데이터를 스크랩할 수 있습니다. 데이터 센터 주거용 프록시 외에 다른 카테고리는 엘리트, 익명, 투명 프록시입니다. 엘리트 프록시는 대상 웹사이트에서 탐지하기 어렵기 때문에 가장 좋은 옵션입니다. 인터넷에서 개인 정보를 보호하고 싶다면 익명 프록시를 사용할 수 있습니다. 마지막으로 투명 프록시를 사용할 수 있지만 성공 확률이 가장 낮습니다. 이 글에서는 간단한 코딩 단계를 통해 파이썬에서 프록시를 사용하여 IP 주소를 회전하는 방법에 대한 심층적인 정보를 제공하고 예제를 제공하고자 합니다.