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.
@@ -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 HTTPError, Session
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"], # required
132
- value=cookie["value"], # required
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", ""),
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: anti_cf
3
- Version: 1.0.1
3
+ Version: 1.1.0
4
4
  Summary: Anti-CloudFlare package
5
5
  License: MIT
6
6
  Author: Steven Van Ingelgem
@@ -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,,
@@ -1,4 +1,4 @@
1
1
  Wheel-Version: 1.0
2
- Generator: poetry-core 2.1.2
2
+ Generator: poetry-core 2.1.3
3
3
  Root-Is-Purelib: true
4
4
  Tag: py3-none-any
@@ -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,,