개발언어 Back-End/Python

requests-random-user-agent - User-Agent 값을 무작위로 설정하는 파이썬 라이브러리

bluebamus 2025. 2. 21.

1. 설치

pip install requests-random-user-agent

 

2. 개요

   - requests-random-user-agent는 requests 라이브러리와 함께 사용되며, 매 요청마다 랜덤한 User-Agent 값을 자동으로 설정해준다.

   - 이 라이브러리는 requests 라이브러리 전용이므로, Selenium에서는 직접 사용할 수 없다.
   - 즉, requests-random-user-agent는 Selenium과 호환되지 않는다.

 

   1) 주요 특징

      - 자동 User-Agent 변경: 요청할 때마다 다양한 브라우저와 플랫폼의 User-Agent를 랜덤하게 적용
      - requests와 통합: requests.Session()과 함께 사용 가능
      - 가벼운 패키지: 추가적인 설정 없이 간단하게 적용 가능

 

3. 기본 사용법

   1) requests와 함께 사용하기

import requests
from requests_random_user_agent import UserAgentMiddleware

session = requests.Session()
session.headers.update({'User-Agent': UserAgentMiddleware().random})  # 랜덤 User-Agent 적용

response = session.get("https://httpbin.org/user-agent")  # 요청 보내기
print(response.json())  # 결과 출력

 

   2) 요청마다 랜덤 User-Agent 적용

from requests_random_user_agent import UserAgentMiddleware

ua_middleware = UserAgentMiddleware()

for _ in range(5):
    print(ua_middleware.random)  # 매 요청마다 다른 User-Agent 출력

 

4. 주요 기능

   1) 랜덤 User-Agent 가져오기

from requests_random_user_agent import UserAgentMiddleware

ua = UserAgentMiddleware()
print(ua.random)  # 무작위 User-Agent 값 출력

 

   2) 특정 브라우저 기반 User-Agent 설정

      - 현재 requests-random-user-agent는 특정 브라우저나 운영체제를 직접 지정하는 기능을 제공하지 않는다. 하지만, 특정 패턴을 가진 User-Agent를 필터링하는 방법은 가능하다.

ua = UserAgentMiddleware()

# 특정 브라우저의 User-Agent만 필터링
user_agent = ua.random
if "Chrome" in user_agent:
    print(f"사용 중인 User-Agent: {user_agent}")

 

   3) requests.Session()과 함께 사용

import requests
from requests_random_user_agent import UserAgentMiddleware

session = requests.Session()
session.headers.update({'User-Agent': UserAgentMiddleware().random})

response = session.get("https://example.com")
print(response.text)

 

   4) 직접 헤더에 적용하기

import requests
from requests_random_user_agent import UserAgentMiddleware

headers = {'User-Agent': UserAgentMiddleware().random}
response = requests.get("https://example.com", headers=headers)

print(response.request.headers)  # 실제 요청된 User-Agent 확인

 

5. 고급 기능

   1) 커스텀 User-Agent 풀 설정

from requests_random_user_agent import UserAgent

custom_agents = [
    'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36',
    'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7)',
    'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36'
]

ua = UserAgent()
ua.set_user_agents(custom_agents)

 

6. 활용 예제

   1) 여러 번 요청하며 User-Agent 변경

import requests
from requests_random_user_agent import UserAgentMiddleware

ua_middleware = UserAgentMiddleware()

for _ in range(3):
    headers = {'User-Agent': ua_middleware.random}
    response = requests.get("https://httpbin.org/user-agent", headers=headers)
    print(response.json())  # 요청마다 다른 User-Agent 확인

 

   2) BeautifulSoup과 함께 사용하기

import requests
from bs4 import BeautifulSoup
from requests_random_user_agent import UserAgentMiddleware

headers = {'User-Agent': UserAgentMiddleware().random}
response = requests.get("https://example.com", headers=headers)

soup = BeautifulSoup(response.text, "html.parser")
print(soup.title.text)  # 웹 페이지 제목 출력

 

7. requests-random-user-agent의 한계

한계점 설명
특정 브라우저 선택 불가 fake_useragent처럼 특정 브라우저의 User-Agent를 직접 선택할 수 없음
User-Agent 리스트 고정 제공되는 User-Agent 목록이 업데이트되지 않을 경우 최신 브라우저 정보가 반영되지 않을 수 있음
User-Agent 차단 가능성 일부 사이트에서는 특정 User-Agent 패턴을 차단할 가능성이 있음
프록시 미지원 requests-random-user-agent 자체적으로 프록시 기능을 제공하지 않음

 

8. 대안 및 비교

라이브러리 주요 기능 특징
fake-useragent 특정 브라우저의 User-Agent 선택 가능 외부 데이터를 가져와야 하며, 가끔 작동하지 않을 수 있음
requests-random-user-agent 요청마다 자동으로 User-Agent 변경 가볍고 간단하지만 특정 브라우저 선택 기능이 없음
scrapy-fake-useragent Scrapy에서 User-Agent 변경 가능 Scrapy 프로젝트에서 유용
undetected_chromedriver Selenium 기반의 탐지 우회 실제 브라우저 환경을 모방

댓글