feat: add curl_cffi session support with browser impersonation

Add new session utility with curl_cffi support for anti-bot protection
Update all manifest parsers (DASH, HLS, ISM, M3U8) to accept curl_cffi sessions
Add browser impersonation support (Chrome, Firefox, Safari)
Fix cookie handling compatibility between requests and curl_cffi
Suppress HTTPS proxy warnings for better UX
Maintain full backward compatibility with requests.Session
This commit is contained in:
Andy
2025-09-25 06:27:14 +00:00
parent 63b7a49c1a
commit 35efdbff6d
8 changed files with 123 additions and 39 deletions

View File

@@ -2,9 +2,10 @@
from __future__ import annotations
from typing import Optional
from typing import Optional, Union
import m3u8
from curl_cffi.requests import Session as CurlSession
from requests import Session
from unshackle.core.manifests.hls import HLS
@@ -15,7 +16,7 @@ def parse(
master: m3u8.M3U8,
language: str,
*,
session: Optional[Session] = None,
session: Optional[Union[Session, CurlSession]] = None,
) -> Tracks:
"""Parse a variant playlist to ``Tracks`` with basic information, defer DRM loading."""
tracks = HLS(master, session=session).to_tracks(language)