Формат Netscape cookies.txt
Формат, на котором до сих пор говорят все консольные инструменты. Одна кука — одна строка, семь полей, разделённых табуляцией, а не пробелами. Строки, начинающиеся с #, считаются комментариями — с одним намеренным исключением.
# Netscape HTTP Cookie File
# https://curl.se/docs/http-cookies.html
# This file was generated by libcurl! Edit at your own risk.
.example.com TRUE / TRUE 1798761600 session_id 8f14e45fceea167a5a36dedd4bea2543
#HttpOnly_.example.com TRUE / TRUE 1798761600 auth_token eyJhbGciOiJIUzI1NiJ9.e30.ZRrHA1JJJW8opsbCGfG_HACGpVUMN_a9IV7pAx_Zmeo
example.com FALSE /account FALSE 1798761600 theme dark
.example.com TRUE / FALSE 0 cart_preview tmp-4471Семь полей
| # | Поле | Значение | Варианты |
|---|---|---|---|
| 1 | domain | Хост, которому принадлежит кука. Ведущая точка означает, что она действует и на поддоменах. | .example.com |
| 2 | includeSubdomains | Включены ли поддомены. Дублирует смысл ведущей точки, и парсеры расходятся в том, что важнее, — мы доверяем точке. | TRUE или FALSE |
| 3 | path | Путь URL, к которому привязана кука. | / или /app |
| 4 | secure | Передаётся ли кука только по HTTPS. | TRUE или FALSE |
| 5 | expires | Срок жизни — unix-время в секундах. Ноль означает сессионную куку. | 1767225600 или 0 |
| 6 | name | Имя куки. | session_id |
| 7 | value | Значение куки, берётся дословно до конца строки. Может свободно содержать = и ;. | abc123 |
Префикс #HttpOnly_
Исходный формат не умел выражать http-only куки, поэтому curl добавил свой способ: поставить перед доменом префикс #HttpOnly_. Строка начинается с решётки, так что парсеры, которые об этом не знают, считают её комментарием и просто пропускают вместо того, чтобы упасть. curl, wget и yt-dlp этот префикс понимают.
На чём обычно спотыкаются
Разделитель — табуляция. При пересылке файла через мессенджер или веб-форму табы часто превращаются в пробелы, и строгие парсеры ломаются. Этот конвертер такие файлы всё равно разбирает и предупреждает об этом.
Значение тянется до конца строки, поэтому в нём могут быть = и ; без всякого экранирования. Разбиение по этим символам испортит JWT и base64.
Строка с истёкшим сроком остаётся валидной. Инструменты просто проигнорируют такую куку, и со стороны это выглядит так, будто её вообще нет.
Некоторые программы не ставят завершающую табуляцию, когда значение пустое, — остаётся шесть полей вместо семи.
Кто использует этот формат
- curl
- curl -b cookies.txt — отправить, -c cookies.txt — сохранить.
- wget
- --load-cookies и --save-cookies.
- yt-dlp
- --cookies cookies.txt — самая частая причина конвертировать браузерный экспорт.
- Python requests
- Через http.cookiejar.MozillaCookieJar.
Попробовать в конвертере
Конвертер