Spaces:
Build error
Build error
File size: 2,648 Bytes
eda02a7 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 |
# backend/app/proxy_manager.py
import os
import requests # requests는 FreeProxy 테스트나 ScrapingBee API 직접 호출 시 유용
from loguru import logger
from dotenv import load_dotenv
# .env 파일에서 환경 변수 로드
load_dotenv()
# ScrapingBee API 키 (Proxy Mode를 사용한다면 필요 없을 수 있음)
SCRAPINGBEE_API_KEY = os.getenv("SCRAPINGBEE_API_KEY")
# ScrapingBee Proxy Mode 주소 (대시보드에서 확인한 실제 프록시 서버 주소)
SCRAPINGBEE_PROXY_ADDRESS = os.getenv("SCRAPINGBEE_PROXY_ADDRESS")
# FreeProxy 라이브러리 (필요하다면 주석 해제)
# from fp.fp import FreeProxy
# import asyncio # FreeProxy가 비동기로 동작한다면 필요
async def get_proxy_url() -> str | None:
"""
현재 설정된 프록시 제공자로부터 프록시 URL을 가져옵니다.
나중에 다른 프록시 제공자로 변경 시 이 함수 내부만 수정하면 됩니다.
"""
# ----------------------------------------------------
# ScrapingBee Proxy Mode 사용 예시 (추천)
# ScrapingBee 대시보드에서 얻은 프록시 주소를 사용합니다.
# .env 파일에 SCRAPINGBEE_PROXY_ADDRESS="us.scrapingbee.com:8880" 형태로 설정
if SCRAPINGBEE_PROXY_ADDRESS:
logger.info(f"ScrapingBee Proxy Mode 프록시 사용 시도: {SCRAPINGBEE_PROXY_ADDRESS}")
return SCRAPINGBEE_PROXY_ADDRESS
# ----------------------------------------------------
# ----------------------------------------------------
# FreeProxy 사용 예시 (폴백 또는 다른 선택지)
# 위에서 ScrapingBee 프록시를 찾지 못했거나 사용하지 않으려는 경우
# 주석을 해제하고 FreeProxy를 사용하도록 설정할 수 있습니다.
# try:
# logger.info("FreeProxy를 사용하여 무료 프록시 가져오기 시도...")
# # Hugging Face Spaces 허용 포트 (80, 443, 8080)만 필터링
# proxy_address = FreeProxy(timeout=1, port=[80, 443, 8080], https=True, rand=True).get()
# if proxy_address:
# logger.info(f"FreeProxy 사용: {proxy_address}")
# return proxy_address
# else:
# logger.warning("사용 가능한 FreeProxy를 찾을 수 없습니다.")
# except Exception as e:
# logger.warning(f"FreeProxy 가져오기 실패: {e}")
# ----------------------------------------------------
# 어떤 프록시도 설정되지 않았거나 가져오지 못한 경우
logger.warning("어떤 유효한 프록시도 구성되거나 가져올 수 없습니다. 프록시 없이 진행합니다.")
return None |