39 lines
1.2 KiB
Python
39 lines
1.2 KiB
Python
from typing import List
|
|
|
|
from core.config import Config
|
|
from core.exceptions import ProxyFetchError
|
|
|
|
from .fetch_manager import FetchManager
|
|
|
|
|
|
class ProxyPool:
|
|
def __init__(self, config: Config, fetch_manager: FetchManager):
|
|
self.config = config
|
|
self.fetch_manager = fetch_manager
|
|
|
|
async def batch_get(self, num: int) -> List[str]:
|
|
"""获取num个代理"""
|
|
# 临时代理
|
|
return ['c44f8c35c8455936c137:78842e9932e456b8@gw.dataimpulse.com:823'] * num
|
|
|
|
try:
|
|
response = await self.fetch_manager.request(
|
|
'GET',
|
|
self.config.proxy_config.api_url.format(num=num)
|
|
)
|
|
|
|
if 'error' in response:
|
|
raise ProxyFetchError(response['error'])
|
|
|
|
# 这里需要根据实际的代理API返回格式进行解析
|
|
proxies = self._parse_proxies(response['body'])
|
|
return proxies[:num]
|
|
|
|
except Exception as e:
|
|
raise ProxyFetchError(f"Failed to fetch proxies: {str(e)}")
|
|
|
|
def _parse_proxies(self, response_body: str) -> List[str]:
|
|
"""解析代理API返回的数据"""
|
|
# 需要根据实际API返回格式实现
|
|
...
|