ブラウザのクッキー欲しい!

IEFirefox の場合について。

Firefox

Firefox の場合、クッキーはプロファイルフォルダの cookies.sqlite に保存される。プロファイルフォルダの探し方は Firefox のサポートページに書いてある。

SQLiteアプリケーションに組み込まれて利用される軽量のデータベース で、裏で利用するアプリも多い。もちろん Python からも使える。

例えば、蓄えられているクッキーを表示するコードはこうなる:

# Python 2.6.2
import sqlite3
path = r"C:\Documents and Setting\foo\Application Data\Mozilla\Firefox\Profiles\zi825l15.foo\cookies.sqlite"
conn = sqlite3.connect(path)
for i in conn.execute('SELECT host, path, name, value FROM moz_cookies'):
    print i
conn.close()

データベースの構造は SQLite Manager を使うと楽に調べることができる。本家のプログラムでもいい。

Internet Explorer

知らん*1

google: IE クッキー 取得

わかった。 WinInet の InternetGetCookie() 使うと、「URL」を指定して取れる。

Yahoo のクッキーを取ってみよう。 pywin32 を入れた後で、

import win32inet
try:
    print win32inet.InternetGetCookie('http://www.yahoo.co.jp/', None)
except win32inet.error:
    print "取得できません。"

もしくは、標準ライブラリの ctypes を使って、

from ctypes import *
from ctypes import wintypes

InternetGetCookie = windll.wininet.InternetGetCookieA
InternetGetCookie.res_type = wintypes.BOOL

size = wintypes.DWORD(1024)
buf = ctypes.c_buffer(size.value)
nerr = InternetGetCookie('http://www.yahoo.co.jp/', None, buf, pointer(size))
if nerr:
    print buf.value
else:
    print "取得できません。"

まだ ctypes の扱いに慣れていないので、上のコードはちょっと怪しい。

*1:%USERPROFILE%\Cookies から盗ってくるというのはナシだ。