hyper-sdk 2.11.1__tar.gz → 2.12.0__tar.gz

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.
Files changed (31) hide show
  1. {hyper_sdk-2.11.1 → hyper_sdk-2.12.0}/PKG-INFO +26 -1
  2. {hyper_sdk-2.11.1 → hyper_sdk-2.12.0}/README.md +25 -0
  3. {hyper_sdk-2.11.1 → hyper_sdk-2.12.0}/hyper_sdk/kasada_input.py +22 -0
  4. {hyper_sdk-2.11.1 → hyper_sdk-2.12.0}/hyper_sdk/session.py +14 -1
  5. {hyper_sdk-2.11.1 → hyper_sdk-2.12.0}/hyper_sdk/session_async.py +14 -1
  6. {hyper_sdk-2.11.1 → hyper_sdk-2.12.0}/hyper_sdk.egg-info/PKG-INFO +26 -1
  7. {hyper_sdk-2.11.1 → hyper_sdk-2.12.0}/pyproject.toml +1 -1
  8. {hyper_sdk-2.11.1 → hyper_sdk-2.12.0}/LICENSE +0 -0
  9. {hyper_sdk-2.11.1 → hyper_sdk-2.12.0}/hyper_sdk/__init__.py +0 -0
  10. {hyper_sdk-2.11.1 → hyper_sdk-2.12.0}/hyper_sdk/akamai/__init__.py +0 -0
  11. {hyper_sdk-2.11.1 → hyper_sdk-2.12.0}/hyper_sdk/akamai/pixel.py +0 -0
  12. {hyper_sdk-2.11.1 → hyper_sdk-2.12.0}/hyper_sdk/akamai/script_path.py +0 -0
  13. {hyper_sdk-2.11.1 → hyper_sdk-2.12.0}/hyper_sdk/akamai/sec_cpt.py +0 -0
  14. {hyper_sdk-2.11.1 → hyper_sdk-2.12.0}/hyper_sdk/akamai/stop_signal.py +0 -0
  15. {hyper_sdk-2.11.1 → hyper_sdk-2.12.0}/hyper_sdk/akamai_input.py +0 -0
  16. {hyper_sdk-2.11.1 → hyper_sdk-2.12.0}/hyper_sdk/datadome/__init__.py +0 -0
  17. {hyper_sdk-2.11.1 → hyper_sdk-2.12.0}/hyper_sdk/datadome/parse.py +0 -0
  18. {hyper_sdk-2.11.1 → hyper_sdk-2.12.0}/hyper_sdk/datadome_input.py +0 -0
  19. {hyper_sdk-2.11.1 → hyper_sdk-2.12.0}/hyper_sdk/incapsula/__init__.py +0 -0
  20. {hyper_sdk-2.11.1 → hyper_sdk-2.12.0}/hyper_sdk/incapsula/dynamic.py +0 -0
  21. {hyper_sdk-2.11.1 → hyper_sdk-2.12.0}/hyper_sdk/incapsula/utmvc.py +0 -0
  22. {hyper_sdk-2.11.1 → hyper_sdk-2.12.0}/hyper_sdk/incapsula_input.py +0 -0
  23. {hyper_sdk-2.11.1 → hyper_sdk-2.12.0}/hyper_sdk/kasada/__init__.py +0 -0
  24. {hyper_sdk-2.11.1 → hyper_sdk-2.12.0}/hyper_sdk/kasada/parse.py +0 -0
  25. {hyper_sdk-2.11.1 → hyper_sdk-2.12.0}/hyper_sdk/shared.py +0 -0
  26. {hyper_sdk-2.11.1 → hyper_sdk-2.12.0}/hyper_sdk/trustdecision_input.py +0 -0
  27. {hyper_sdk-2.11.1 → hyper_sdk-2.12.0}/hyper_sdk.egg-info/SOURCES.txt +0 -0
  28. {hyper_sdk-2.11.1 → hyper_sdk-2.12.0}/hyper_sdk.egg-info/dependency_links.txt +0 -0
  29. {hyper_sdk-2.11.1 → hyper_sdk-2.12.0}/hyper_sdk.egg-info/requires.txt +0 -0
  30. {hyper_sdk-2.11.1 → hyper_sdk-2.12.0}/hyper_sdk.egg-info/top_level.txt +0 -0
  31. {hyper_sdk-2.11.1 → hyper_sdk-2.12.0}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: hyper_sdk
3
- Version: 2.11.1
3
+ Version: 2.12.0
4
4
  Summary: Hyper Solutions Python SDK
5
5
  License: MIT License
6
6
 
@@ -280,6 +280,31 @@ pow_payload = session.generate_kasada_pow(KasadaPowInput(
280
280
  ))
281
281
  ```
282
282
 
283
+ ## 🤖 Vercel BotID
284
+
285
+ Bypass **Vercel BotID** protection by generating the required `x-is-human` header.
286
+
287
+ ### Generating the x-is-human Header
288
+
289
+ Create the **x-is-human header** for Vercel BotID bypass:
290
+
291
+ ```python
292
+ from hyper_sdk import BotIDHeaderInput
293
+
294
+ header = session.generate_botid_header(BotIDHeaderInput(
295
+ script=script_body, # The c.js script content
296
+ user_agent="your-user-agent",
297
+ ip="your-proxy-ip",
298
+ accept_language="en-US,en;q=0.9",
299
+ ))
300
+
301
+ # Use the header in your requests
302
+ headers = {
303
+ "x-is-human": header,
304
+ # ... other headers
305
+ }
306
+ ```
307
+
283
308
  ### Script Path Extraction
284
309
 
285
310
  Extract **Kasada script paths** from blocked pages (HTTP 429):
@@ -237,6 +237,31 @@ pow_payload = session.generate_kasada_pow(KasadaPowInput(
237
237
  ))
238
238
  ```
239
239
 
240
+ ## 🤖 Vercel BotID
241
+
242
+ Bypass **Vercel BotID** protection by generating the required `x-is-human` header.
243
+
244
+ ### Generating the x-is-human Header
245
+
246
+ Create the **x-is-human header** for Vercel BotID bypass:
247
+
248
+ ```python
249
+ from hyper_sdk import BotIDHeaderInput
250
+
251
+ header = session.generate_botid_header(BotIDHeaderInput(
252
+ script=script_body, # The c.js script content
253
+ user_agent="your-user-agent",
254
+ ip="your-proxy-ip",
255
+ accept_language="en-US,en;q=0.9",
256
+ ))
257
+
258
+ # Use the header in your requests
259
+ headers = {
260
+ "x-is-human": header,
261
+ # ... other headers
262
+ }
263
+ ```
264
+
240
265
  ### Script Path Extraction
241
266
 
242
267
  Extract **Kasada script paths** from blocked pages (HTTP 429):
@@ -43,3 +43,25 @@ class KasadaPayloadInput:
43
43
  "ip": self.ip,
44
44
  }
45
45
  return result
46
+
47
+ class BotIDHeaderInput:
48
+ def __init__(self, script: str, user_agent: str, ip: str, accept_language: str):
49
+ # Script is the c.js script retrieved from the BotID script endpoint
50
+ self.script = script
51
+
52
+ # UserAgent must be a Chrome Windows User-Agent.
53
+ self.user_agent = user_agent
54
+
55
+ # IP is the IPV4 address of your network or proxy
56
+ self.ip = ip
57
+
58
+ # Your accept-language header
59
+ self.accept_language = accept_language
60
+
61
+ def to_dict(self):
62
+ return {
63
+ "script": self.script,
64
+ "userAgent": self.user_agent,
65
+ "ip": self.ip,
66
+ "acceptLanguage": self.accept_language,
67
+ }
@@ -7,7 +7,7 @@ import gzip
7
7
 
8
8
  from .shared import generate_signature, build_headers, validate_response
9
9
  from .akamai_input import SensorInput, PixelInput, SbsdInput
10
- from .kasada_input import KasadaPowInput, KasadaPayloadInput
10
+ from .kasada_input import KasadaPowInput, KasadaPayloadInput, BotIDHeaderInput
11
11
  from .datadome_input import DataDomeSliderInput, DataDomeInterstitialInput, DataDomeTagsInput
12
12
  from .incapsula_input import UtmvcInput, ReeseInput
13
13
  from .trustdecision_input import PayloadInput, DecodeInput, SignatureInput
@@ -226,6 +226,19 @@ class Session:
226
226
 
227
227
  return response_data["payload"], response_data["headers"]
228
228
 
229
+ def generate_botid_header(self, input_data: BotIDHeaderInput) -> str:
230
+ """
231
+ Returns the x-is-human header value for Vercel BotID using the Hyper Solutions API.
232
+
233
+ Args:
234
+ input_data (BotIDHeaderInput): An instance of BotIDHeaderInput containing the script,
235
+ user agent, IP, and accept language.
236
+
237
+ Returns:
238
+ str: The x-is-human header value as a string.
239
+ """
240
+ return self._send_request("https://kasada.hypersolutions.co/botid", input_data.to_dict())
241
+
229
242
  def generate_interstitial_payload(self, input_data: DataDomeInterstitialInput) -> Dict[str, Any]:
230
243
  """
231
244
  Returns the DataDome interstitial payload value and response headers using the Hyper Solutions API.
@@ -7,7 +7,7 @@ import gzip
7
7
 
8
8
  from .shared import generate_signature, build_headers, validate_response
9
9
  from .akamai_input import SensorInput, PixelInput, SbsdInput
10
- from .kasada_input import KasadaPowInput, KasadaPayloadInput
10
+ from .kasada_input import KasadaPowInput, KasadaPayloadInput, BotIDHeaderInput
11
11
  from .datadome_input import DataDomeSliderInput, DataDomeInterstitialInput, DataDomeTagsInput
12
12
  from .incapsula_input import UtmvcInput, ReeseInput
13
13
  from .trustdecision_input import PayloadInput, DecodeInput, SignatureInput
@@ -232,6 +232,19 @@ class SessionAsync:
232
232
 
233
233
  return response_data["payload"], response_data["headers"]
234
234
 
235
+ async def generate_botid_header(self, input_data: BotIDHeaderInput) -> str:
236
+ """
237
+ Returns the x-is-human header value for Vercel BotID using the Hyper Solutions API.
238
+
239
+ Args:
240
+ input_data (BotIDHeaderInput): An instance of BotIDHeaderInput containing the script,
241
+ user agent, IP, and accept language.
242
+
243
+ Returns:
244
+ str: The x-is-human header value as a string.
245
+ """
246
+ return await self._send_request("https://kasada.hypersolutions.co/botid", input_data.to_dict())
247
+
235
248
  async def generate_interstitial_payload(self, input_data: DataDomeInterstitialInput) -> Dict[str, Any]:
236
249
  """
237
250
  Returns the DataDome interstitial payload value and response headers using the Hyper Solutions API.
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: hyper_sdk
3
- Version: 2.11.1
3
+ Version: 2.12.0
4
4
  Summary: Hyper Solutions Python SDK
5
5
  License: MIT License
6
6
 
@@ -280,6 +280,31 @@ pow_payload = session.generate_kasada_pow(KasadaPowInput(
280
280
  ))
281
281
  ```
282
282
 
283
+ ## 🤖 Vercel BotID
284
+
285
+ Bypass **Vercel BotID** protection by generating the required `x-is-human` header.
286
+
287
+ ### Generating the x-is-human Header
288
+
289
+ Create the **x-is-human header** for Vercel BotID bypass:
290
+
291
+ ```python
292
+ from hyper_sdk import BotIDHeaderInput
293
+
294
+ header = session.generate_botid_header(BotIDHeaderInput(
295
+ script=script_body, # The c.js script content
296
+ user_agent="your-user-agent",
297
+ ip="your-proxy-ip",
298
+ accept_language="en-US,en;q=0.9",
299
+ ))
300
+
301
+ # Use the header in your requests
302
+ headers = {
303
+ "x-is-human": header,
304
+ # ... other headers
305
+ }
306
+ ```
307
+
283
308
  ### Script Path Extraction
284
309
 
285
310
  Extract **Kasada script paths** from blocked pages (HTTP 429):
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "hyper_sdk"
7
- version = "2.11.1"
7
+ version = "2.12.0"
8
8
  description = "Hyper Solutions Python SDK"
9
9
  readme = "README.md"
10
10
  requires-python = ">=3.7"
File without changes
File without changes