应对 BiliBili 最近将 SESSDATA cookie 设为 HTTP-Only

This commit is contained in:
yzqzss 2023-07-11 23:44:59 +08:00
parent b9b0e7a0b9
commit ba04749029

View File

@ -148,14 +148,21 @@ def update_cookies_from_file(client: AsyncClient, cookies_path: Union[str, Path]
with HttpOnlyCookie_Handler(cookies_path):
cj.load(f'{cookies_path}', ignore_discard=True, ignore_expires=True)
loadded_cookies = 0
loadded_keys = []
for cookie in cj:
# only load bilibili cookies
if 'bilibili' in cookie.domain:
assert cookie.value is not None
client.cookies.set(
cookie.name, cookie.value, domain=cookie.domain, path=cookie.path
)
loadded_cookies += 1
if not 'bilibili.com' in cookie.domain:
continue
if cookie.name in loadded_keys:
print(f'跳过重复的 cookies: {cookie.name}')
# httpx 不能处理不同域名的同名 cookies只好硬去重了
continue
assert cookie.value is not None
client.cookies.set(
cookie.name, cookie.value, domain=cookie.domain, path=cookie.path
)
loadded_keys.append(cookie.name)
loadded_cookies += 1
print(f'{cookies_path} 品尝了 {loadded_cookies} 块 cookies')
if loadded_cookies > 100:
print('吃了过多的 cookies可能导致 httpx.Client 怠工,响应非常缓慢')