added proxy managament from dsqls module
This commit is contained in:
1 parent
1cb39e2e0d
commit
4f7dd161ef
3 files changed
+23
-13
No files matched your search
@@ -8,6 +8,7 @@ from typing import AsyncGenerator
|
||||
|
||||
import aiohttp
|
||||
import requests
|
||||
from aioproxies import AioProxies
|
||||
from curl_cffi.requests import AsyncSession
|
||||
from curl_cffi.requests.errors import RequestsError
|
||||
from curl_cffi.requests.exceptions import Timeout as CurlTimeout
|
||||
@@ -21,7 +22,6 @@ from tenacity import (
|
||||
wait_fixed,
|
||||
)
|
||||
|
||||
from monitor_utils.config import get_proxies
|
||||
from monitor_utils.constants import (
|
||||
CLIENT_TIMEOUT,
|
||||
TIMEOUT_SECONDS,
|
||||
@@ -40,12 +40,14 @@ async def get_base_session(
|
||||
cookies: dict | None = None,
|
||||
connector: aiohttp.TCPConnector | None = None,
|
||||
timeout: aiohttp.ClientTimeout = CLIENT_TIMEOUT,
|
||||
proxies: AioProxies | None = None,
|
||||
) -> AsyncGenerator[aiohttp.ClientSession, None]:
|
||||
headers = headers if headers else {}
|
||||
headers.setdefault("User-Agent", UA.random)
|
||||
session = aiohttp.ClientSession(
|
||||
headers=headers, cookies=cookies, connector=connector, timeout=timeout
|
||||
)
|
||||
session.proxy_pool = proxies
|
||||
try:
|
||||
yield session
|
||||
finally:
|
||||
@@ -54,7 +56,9 @@ async def get_base_session(
|
||||
|
||||
@asynccontextmanager
|
||||
async def get_tls_session(
|
||||
headers: dict | None = None, timeout: int = TIMEOUT_SECONDS
|
||||
headers: dict | None = None,
|
||||
timeout: int = TIMEOUT_SECONDS,
|
||||
proxies: AioProxies | None = None,
|
||||
) -> AsyncGenerator[AsyncSession, None]:
|
||||
headers = headers if headers else {}
|
||||
headers.setdefault("User-Agent", UA.chrome)
|
||||
@@ -63,15 +67,15 @@ async def get_tls_session(
|
||||
timeout=timeout,
|
||||
headers=headers,
|
||||
) as session:
|
||||
session.proxy_pool = proxies
|
||||
yield session
|
||||
|
||||
|
||||
def build_session_details(
|
||||
session: aiohttp.ClientSession | AsyncSession, headers: dict = None
|
||||
):
|
||||
# ik headers doesn't match tls i'm lazy and the antibots used don't care
|
||||
headers = headers or {}
|
||||
headers.setdefault("User-Agent", FakeUserAgent().random)
|
||||
headers.setdefault("User-Agent", UA.random)
|
||||
session.headers.update(headers)
|
||||
|
||||
|
||||
@@ -106,7 +110,8 @@ async def send_request(
|
||||
proxy = development_proxy
|
||||
verify = False
|
||||
else:
|
||||
proxy = random.choice(get_proxies())
|
||||
manager = getattr(session, "proxy_pool", None)
|
||||
proxy = manager.next().url() if manager else None
|
||||
|
||||
if isinstance(session, aiohttp.ClientSession):
|
||||
async with session.request(
|
||||
@@ -121,12 +126,6 @@ async def send_request(
|
||||
response.raise_for_status()
|
||||
text = await response.text()
|
||||
else:
|
||||
if (
|
||||
url
|
||||
== "https://www.hp.com/wcs/resources/store/10151/component/configure/addtocartconfig"
|
||||
):
|
||||
pass
|
||||
|
||||
response = await session.request(
|
||||
method=method.upper(),
|
||||
url=url,
|
||||
@@ -145,4 +144,4 @@ async def send_request(
|
||||
if reraise_json_error:
|
||||
raise
|
||||
|
||||
return text
|
||||
return text
|
||||
Reference in new issue
Block a user