Mozilla cookie export format fields
Categories:
Understanding Mozilla's Cookie Export Format Fields
Explore the structure and meaning of fields within Mozilla's cookie export format, crucial for developers and users managing browser data.
Mozilla Firefox, like other web browsers, stores website-specific data in 'cookies'. These small pieces of data are essential for maintaining user sessions, personalization, and tracking. When you export cookies from Firefox, they typically follow a specific format, often a tab-separated values (TSV) file, which can then be imported into other browsers or tools. Understanding the fields within this format is key to correctly interpreting and manipulating cookie data.
Standard Cookie Export Fields
The standard Mozilla cookie export format, often seen in files like cookies.txt
(Netscape format), includes several distinct fields. Each line in the file represents a single cookie and its associated properties. These fields are crucial for defining the cookie's behavior, scope, and lifespan. The order and interpretation of these fields are consistent, making it possible for various tools to parse them reliably.
flowchart LR subgraph Cookie Fields A[Domain] --> B[Flag] B --> C[Path] C --> D[Secure] D --> E[Expiration] E --> F[Name] F --> G[Value] end G --> H{Cookie Data Line}
Flowchart illustrating the sequence of fields in a Mozilla cookie export line.
# .netscape HTTP Cookie File
# This is a generated file! Do not edit.
.example.com TRUE / FALSE 1678886400 mycookie myvalue
.another.org FALSE /path TRUE 1709424000 sessionid abcdef123456
Example of a Mozilla-style cookies.txt
file.
Detailed Field Breakdown
Let's delve into each field to understand its purpose and the type of data it holds. This detailed breakdown will help in debugging cookie-related issues or when manually constructing cookie files.
cookies.txt
format is a legacy format. While still widely supported, modern browser APIs and extensions often provide more structured (e.g., JSON) export options for greater flexibility.1. Domain
This field specifies the domain for which the cookie is valid. A leading dot (.
) indicates that the cookie is valid for all subdomains of the specified domain (e.g., .example.com
means www.example.com
, sub.example.com
, etc.). If there's no leading dot, the cookie is only valid for the exact domain specified.
2. Flag
Often referred to as 'Include Subdomains' or 'Domain-level cookie'. This boolean field (TRUE
or FALSE
) indicates whether the cookie is accessible by subdomains. In the Netscape format, TRUE
typically means the cookie is valid for subdomains (matching the leading dot convention in the Domain field), while FALSE
means it's only for the exact domain.
3. Path
This field defines the URL path within the domain for which the cookie is valid. For example, /
means the cookie is valid for all paths on the domain, while /app/
means it's only valid for URLs starting with /app/
.
4. Secure
Another boolean field (TRUE
or FALSE
). If TRUE
, the cookie will only be sent over secure (HTTPS) connections. If FALSE
, it can be sent over both HTTP and HTTPS.
5. Expiration
This field contains a Unix timestamp (number of seconds since January 1, 1970, UTC) indicating when the cookie will expire. After this time, the browser should delete the cookie. A value of 0
or a very low number often indicates a session cookie, which expires when the browser session ends.
6. Name
This is the actual name of the cookie, as set by the web server. It's a string that identifies the cookie (e.g., sessionid
, user_pref
).
7. Value
This is the data associated with the cookie's name. It's a string that holds the actual information the server wants to store (e.g., abcdef123456
, dark_theme
).
Parsing and Using Exported Cookies
When working with exported cookies, especially in scripting or development contexts, understanding how to parse these fields is essential. Many programming languages offer libraries or simple string manipulation functions to handle TSV files. The key is to split each line by the tab character and then interpret each resulting token based on its position.
Python Parsing Example
def parse_cookie_line(line): parts = line.strip().split('\t') if len(parts) == 7: return { 'domain': parts[0], 'flag': parts[1] == 'TRUE', 'path': parts[2], 'secure': parts[3] == 'TRUE', 'expiration': int(parts[4]), 'name': parts[5], 'value': parts[6] } return None
cookie_line = '.example.com\tTRUE\t/\tFALSE\t1678886400\tmycookie\tmyvalue' parsed_cookie = parse_cookie_line(cookie_line) print(parsed_cookie)
JavaScript Parsing Example
function parseCookieLine(line) { const parts = line.trim().split('\t'); if (parts.length === 7) { return { domain: parts[0], flag: parts[1] === 'TRUE', path: parts[2], secure: parts[3] === 'TRUE', expiration: parseInt(parts[4], 10), name: parts[5], value: parts[6] }; } return null; }
const cookieLine = '.example.com\tTRUE\t/\tFALSE\t1678886400\tmycookie\tmyvalue'; const parsedCookie = parseCookieLine(cookieLine); console.log(parsedCookie);