firefox3のcookies.sqliteからクッキーを流用する(てきとー編)
(例)tumblrのfollowingページにアクセスするとき
<?php $url = 'http://www.tumblr.com/following'; $sqlitepath = 'C:\Documents and Settings \(ユーザ名)\Application Data\Mozilla \Firefox\Profiles\(なぞの文字列)\cookies.sqlite'; require_once 'Zend/Http/Client.php'; require_once 'Zend/Http/Cookie.php'; require_once 'Zend/Http/CookieJar.php'; require_once 'Zend/Db.php'; $db = Zend_Db::factory('Pdo_Sqlite', array('dbname' => $sqlitepath) ); $db->setFetchMode(Zend_Db::FETCH_OBJ); $host = parse_url($url, PHP_URL_HOST); $results = $db->fetchAll( "SELECT * FROM moz_cookies WHERE (host = '$host' or host = '.$host')"); //$db->fetchAll("SELECT * FROM moz_cookies WHERE //(host = '.hatena.ne.jp' or host = '.$host')"); //↑はてなだったら「.hatena.ne.jp」 $cookieJar = new Zend_Http_CookieJar(); foreach ($results as $count => $result) { $cookie = new Zend_Http_Cookie($result->name, //cookie->name $result->value, //cookie->value $result->host, //cookie->domain $result->expiry, //cookie->expires $result->path, //cookie->path = null, (boolean)$result->isSecure); $cookieJar->addCookie($cookie); } $client = new Zend_Http_Client($url); $client->setCookieJar($cookieJar); var_dump($client->request()->getBody());
fubaさんの極悪ぶっこ抜きツールexthtml*1のPHP版っぽいの作ろうとしてたとき*2に、
「ブラウザからのクッキー流用どうしようテキストファイルでかいからきちんとファイル操作できなきゃなあ。あー俺できないわー。」とか思ってて放り投げてた訳です。で、HTTP/Client/CookieManager用ですけどcookies.txtからのロード用クラス作る試みを去年の12月にしてる方がいる記事をこの前見つけて
http://d.hatena.ne.jp/muttyu/20071228/1198846183
「おぉー」とか思ってたんですが、Firefox3ってsqliteでクッキー管理してるんですな。今日気づいた。