1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
|
# Cookies and Uzbl #
The speed of cookie lookups is important, since a single page load can involve
dozens of HTTP requests, each of which needs a separate cookie lookup (since
another instance of uzbl may have obtained new cookies for a site).
It is possible handle cookie lookup (and storage) using a `spawn_async` cookie
handler, but spawning new processes is inherently slow so a `talk_to_socket`
cookie daemon (like the default uzbl-cookie-manager) is recommended.
## uzbl-cookie-manager ##
uzbl-cookie-manager is a cookie daemon based on libsoup's SoupCookieJar. Cookies
are stored in a file in the Mozilla cookies.txt format (default location
$XDG_DATA_HOME/.local/share/cookies.txt).
### uzbl-cookie-manager Whitelist ###
If a whitelist file is present (default location
$XDG_CONFIG_HOME/uzbl/cookie_whitelist), then website attempts to set cookies
will be ignored unless the site's domain is present in the whitelist.
The whitelist can contain comment lines beginning with `#`, and domain lines. A
domain line beginning with . will whitelist the given domain name and any
subdomain of it. Otherwise only exact matches of the domain are whitelisted.
For instance, given this whitelist file:
example.com
.uzbl.org
uzbl-cookie-manager would accept cookies for example.com, uzbl.org and
www.uzbl.org, but ignore cookies set for www.example.com (and any other
domain that is not a subdomain of uzbl.org).
## uzbl-cookie-daemon ##
uzbl-cookie-daemon is a Python cookie daemon based on Python's cookielib.
Cookielib's lookup algorithm isn't very efficient for our needs, so
uzbl-cookie-daemon is noticeably slow.
## Cookie Daemon Protocol ##
When uzbl's `cookie_handler` variable is set to `talk_to_socket path`, uzbl
connects to the Unix domain socket located at `path`. uzbl will send a cookie
lookup request on this socket every time it makes an HTTP request. The format of
this lookup request is:
GET\0scheme\0host\0path\0
where `\0` is the null character, `scheme` is the URL scheme (http or https),
`host` is the hostname from the URL and `path` is the requested path. The cookie
daemon should respond with the names and values of cookies that match the
request, in the format used by the `Cookie` header, terminated with a `\0`.
When a website adds, deletes or changes a cookie, uzbl notifies the cookie
daemon with a request in the format:
PUT\0scheme\0host\0path\0name=value\0
where `scheme`, `host` and `path` are (approximately) as above, and `name=value`
is the cookie name-value pair to store. The cookie daemon should respond by
writing `\0` to the socket.
|