Конвертировать Netscape cookie в json cookie на python
Затер до дыр весь гугл русский и английский, но так и не смог найти решения сего вопроса.
Собственно сабж.
У меня есть куки в base64 я их расшифровываю base64.b64decode().decode('utf-8') и получаю netscape куки которые мне нужно запихнуть в селениум и дальше с ними там работать. Для селениума нужны json куки соответсвенно, но облазив весь интернет я не нашел ни одного примера как запилить этот конвентер на python.
Все рабочие конвенторы это только сайты. С которых не понять как они там под капотом это делают.
Кто сможет подсказать как это правильно реализовать? Или можно есть какая то библиотечка, но у меня банальным поиском не получилось ее найти.
Ответы (2 шт):
Автор решения: Ruslan
→ Ссылка
def base64CookieToJsonCookie(base64Cookie):
encode_cookie = base64.b64decode(base64Cookie).decode('utf-8')
cookies = []
for cookie in encode_cookie.split('\n'):
try:
coookie = list(cookie.split('\t'))
json_cookie = {'domain': coookie[0], 'expirationDate': coookie[4], 'hostOnly': coookie[1], 'httpOnly': coookie[3],
'name': coookie[5].replace('\\', '\\\\').replace('"', '\\"'), 'path': coookie[2],
'value': coookie[6].replace('\\', '\\\\').replace('"', '\\"')}
cookies.append(json_cookie)
except:
pass
return cookies
Автор решения: n__
→ Ссылка
import json
def parse_netscape_cookies(netscape_cookie_str: str) -> list[dict]:
cookies = []
lines = netscape_cookie_str.strip().split('\n')
for line in lines:
if not line.startswith('#') and line.strip():
parts = line.split('\t')
if len(parts) == 7:
cookie = {
"domain": parts[0],
"httpOnly": parts[1].upper() == "TRUE",
"path": parts[2],
"secure": parts[3].upper() == "TRUE",
"expires": float(parts[4]),
"name": parts[5],
"value": parts[6],
"sameSite": "Lax"
}
cookies.append(cookie)
return cookies
netscape_cookie_str = """
# Netscape HTTP Cookie File
# http://curl.haxx.se/rfc/cookie_spec.html
example.com TRUE / TRUE 1740178100 testSameSite someValue
yandex.ru TRUE / TRUE 1740178100 tag 1
"""
json_cookies = parse_netscape_cookies(netscape_cookie_str)
print(json.dumps(json_cookies, indent=4))