Как выгрузить куки (cookie) из браузера (firefox) в текстовый файл

Суть задачи

Требуется получить куки сформированные (накопленные) в браузере, отфильтровать по конкретному сайту и сохранить в текстовом формате.
Полученный куки (cookie) файл используем для автоматизации IT процессов в скриптах в связке с curl.

Краткий порядок действий:
– берем куки в формате sqlite из кэша браузера
– вытягиваем запросом нужные поля
– фильтруем, корректируем и сохраняем в текстовом файле

Пример действий для получения куки файла

1. Путь к каталогу кэша браузера firefox

В Linux кэш сохряняется обычно в каталоге пользователя $HOME/.mozilla/firefox/КАТАЛОГ, пример: $HOME/.mozilla/firefox/y06kjade.default
Зададим это в нашем скрипте переменной cdir:

cdir=$HOME/.mozilla/firefox/y06kjade.default

2. Нам нужен файл cookies.sqlite

Это по сути база, сформируем строку sql запроса и назначим результат переменной str:

str="select host, case substr(host,1,1)='.' when 0 then 'FALSE' else 'TRUE' end,
      path, case isSecure when 0 then 'FALSE' else 'TRUE' end,
      expiry, name, value
from moz_cookies
where baseDomain like '%mail.ru'"

в запросе мы преобразуем некоторые значения в логический тип, как того требует структура текстового формата кук для curl (см. http://www.cookiecentral.com/faq/), обозначение полей в текстовом файле (слева направо):

domain     - The domain that created AND that can read the variable.
flag       - A TRUE/FALSE value indicating if all machines within a given domain can access the variable.
             This value is set automatically by the browser, depending on the value you set for domain.
path       - The path within the domain that the variable is valid for.
secure     - A TRUE/FALSE value indicating if a secure connection with the domain is needed to access
             the variable.
expiration - The UNIX time that the variable will expire on. UNIX time is defined as the number of seconds
             since Jan 1, 1970 00:00:00 GMT.
name       - The name of the variable.
value      - The value of the variable. 

3. Преобразование

Выполним запрос утилитой sqlite3:

sqlite3 -noheader -separator $'\t' $cdir/cookies.sqlite "$str"

полученный результат сохраняем в файл.

Пример скрипта

#!/bin/bash
cdir=$HOME/.mozilla/firefox/y06kjade.default
str="select
 host, case substr(host,1,1)='.' when 0 then 'FALSE' else 'TRUE' end, path,
 case isSecure when 0 then 'FALSE' else 'TRUE' end, expiry, name, value
from moz_cookies
where baseDomain like '%mail.ru'"
sqlite3 -noheader -separator $'\t' $cdir/cookies.sqlite "$str" > $cdir/test-cookies.txt

Comments are closed.