ブラウザのクッキー欲しい!
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。
わかった。 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 から盗ってくるというのはナシだ。