anti-cf 1.0.1__py3-none-any.whl → 1.1.0__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
anti_cf/_persistent_session.py
CHANGED
@@ -6,6 +6,7 @@ from typing import TYPE_CHECKING, ClassVar
|
|
6
6
|
|
7
7
|
import fake_useragent
|
8
8
|
from logprise import logger
|
9
|
+
from requests import HTTPError
|
9
10
|
|
10
11
|
from ._constants import CACHE_PATH, DEFAULT_TIMEOUT, FLARESOLVERR_PROXY
|
11
12
|
from ._flaresolverr import ensure_flaresolverr_running, get_flaresolverr_settings
|
@@ -16,7 +17,7 @@ try:
|
|
16
17
|
_HAS_CACHE = True
|
17
18
|
logger.info("Using CachedSession for persistent session")
|
18
19
|
except ImportError:
|
19
|
-
from requests import
|
20
|
+
from requests import Session
|
20
21
|
|
21
22
|
_HAS_CACHE = False
|
22
23
|
|
@@ -46,10 +47,11 @@ class PersistentSession(Session):
|
|
46
47
|
super().__init__()
|
47
48
|
|
48
49
|
self._load_cookies()
|
49
|
-
ensure_flaresolverr_running()
|
50
50
|
self.set_user_agent()
|
51
|
+
self._flaresolverr_initialized = False
|
51
52
|
|
52
53
|
def _get_user_agent(self) -> str:
|
54
|
+
# Try FlareSolverr first, but don't start it if not running
|
53
55
|
flaresolverr_settings = get_flaresolverr_settings()
|
54
56
|
if flaresolverr_settings is not None:
|
55
57
|
return flaresolverr_settings["userAgent"]
|
@@ -86,6 +88,12 @@ class PersistentSession(Session):
|
|
86
88
|
self.save_cookies()
|
87
89
|
return response
|
88
90
|
|
91
|
+
def _ensure_flaresolverr_initialized(self) -> None:
|
92
|
+
"""Ensure FlareSolverr is ready when needed."""
|
93
|
+
if not self._flaresolverr_initialized:
|
94
|
+
ensure_flaresolverr_running()
|
95
|
+
self._flaresolverr_initialized = True
|
96
|
+
|
89
97
|
def get(self, url: str | bytes, *, try_with_cloudflare: bool = False, _cloudflare_counter: int = 0, **kwargs: object) -> Response | None:
|
90
98
|
if not try_with_cloudflare or "cf_clearance" in self.cookies:
|
91
99
|
try:
|
@@ -106,10 +114,10 @@ class PersistentSession(Session):
|
|
106
114
|
else:
|
107
115
|
logger.warning("Cloudflare detected, but `try_with_cloudflare` wasn't set to True!")
|
108
116
|
|
117
|
+
self._ensure_flaresolverr_initialized()
|
118
|
+
|
109
119
|
try:
|
110
120
|
self._get_url_via_flaresolverr(url)
|
111
|
-
# After the url is retrieved from the flaresolverr proxy, it's not necessarily the one we want
|
112
|
-
# --> So we'll re-request it here:
|
113
121
|
return super().get(url, **kwargs)
|
114
122
|
except Exception:
|
115
123
|
logger.error("FlareSolverr didn't solve it :(")
|
@@ -128,8 +136,8 @@ class PersistentSession(Session):
|
|
128
136
|
dta = response.json()
|
129
137
|
for cookie in dta["solution"]["cookies"]:
|
130
138
|
self.cookies.set(
|
131
|
-
name=cookie["name"],
|
132
|
-
value=cookie["value"],
|
139
|
+
name=cookie["name"],
|
140
|
+
value=cookie["value"],
|
133
141
|
version=cookie.get("version", 0),
|
134
142
|
port=cookie.get("port", None),
|
135
143
|
domain=cookie.get("domain", ""),
|
@@ -0,0 +1,7 @@
|
|
1
|
+
anti_cf/__init__.py,sha256=ZFXXzfWeiBqKC56vdyod1yXj5_Kg4NXJeTejs2WoEEU,71
|
2
|
+
anti_cf/_constants.py,sha256=xFIXkeBVkuHsTQKQU4p2leJkySHdJ_6xApgIoVrBWHA,262
|
3
|
+
anti_cf/_flaresolverr.py,sha256=vOuut3fH1CstumQrNyIhm7B58ybLCSPUaK5NDTiQwj8,1633
|
4
|
+
anti_cf/_persistent_session.py,sha256=UqDLEMrZ4ybJGWySn2AIDOlSCz43kzx14hlZNsuzjU4,5853
|
5
|
+
anti_cf-1.1.0.dist-info/METADATA,sha256=vmHncM9A664cySSKGwQ4aK9m_SqSZnw8GJFIvSnx9pM,3187
|
6
|
+
anti_cf-1.1.0.dist-info/WHEEL,sha256=b4K_helf-jlQoXBBETfwnf4B04YC67LOev0jo4fX5m8,88
|
7
|
+
anti_cf-1.1.0.dist-info/RECORD,,
|
anti_cf-1.0.1.dist-info/RECORD
DELETED
@@ -1,7 +0,0 @@
|
|
1
|
-
anti_cf/__init__.py,sha256=ZFXXzfWeiBqKC56vdyod1yXj5_Kg4NXJeTejs2WoEEU,71
|
2
|
-
anti_cf/_constants.py,sha256=xFIXkeBVkuHsTQKQU4p2leJkySHdJ_6xApgIoVrBWHA,262
|
3
|
-
anti_cf/_flaresolverr.py,sha256=vOuut3fH1CstumQrNyIhm7B58ybLCSPUaK5NDTiQwj8,1633
|
4
|
-
anti_cf/_persistent_session.py,sha256=exxEpwqfRXonezFh3BEu4JclZ1lTGShM4l0fSlOIeeI,5634
|
5
|
-
anti_cf-1.0.1.dist-info/METADATA,sha256=9exeaEIAuWMlnuLceXcoo8A9dftwHKDh6NLZ5UIWZgk,3187
|
6
|
-
anti_cf-1.0.1.dist-info/WHEEL,sha256=fGIA9gx4Qxk2KDKeNJCbOEwSrmLtjWCwzBz351GyrPQ,88
|
7
|
-
anti_cf-1.0.1.dist-info/RECORD,,
|