2011-01-05 17 views
3

FirefoxでCookieを使用してWebサイトにアクセスするPythonスクリプトを作成しようとしています。 cookielib.MozillaCookieJarはFirefox 3をサポートしていれば動作します。Pythonの内部でFirefox 3のCookieにアクセスする方法はありますか?PythonでFirefox 3のCookieにアクセスする

mozilla/firefox/[randomletters] .default/cookies.sqliteとcookies-nontor.xmlの2つのファイルがあります。 .xmlファイルはCookieJarを返す関数を書くのが簡単なようですが、既にこれを行うモジュールがある場合は、ホイールを再発明しないでください。

答えて

2

FF3のSQLite Cookieにアクセスするためのa recipeがあります。Python bug Trackerにパッチがあり、Mechanizeもこれをサポートしています。

+0

返信いただきありがとうございます!ブラウザクッキーを取得するためにmechanizeを使用する例はありますか?私は古いcookies.txtのドキュメントの例を見ましたが、新しいcookies.sqliteの例は見ませんでした。 – Hempage

+0

私はこの初期の説明を見つけることができました:http://osdir.com/ml/python.wwwsearch.general/2008-02/msg00012.html – TryPyPy

+0

かなり機械化を試みた後、私は運がなかった...しかしその後リンクしたレシピを使用して、私は大きな成功を収めました。 – Hempage

1

私はここで入手できるのFirefoxからクッキーをロードするためにモジュールを作成しました:https://bitbucket.org/richardpenman/browser_cookie/

使用例:

import requests 
import browser_cookie 
cj = browser_cookie.firefox() 
r = requests.get(url, cookies=cj) 
1

TryPyPy's answerは、右のトラックに私を得たが、リンクレシピのコードが時代遅れだったとし、 Python3では動作しません。

import requests 

url = 'http://github.com' 
cookie_file = '/home/user/.mozilla/firefox/f00b4r.default/cookies.sqlite' 



def get_cookie_jar(filename): 
    """ 
    Protocol implementation for handling gsocmentors.com transactions 
    Author: Noah Fontes nfontes AT cynigram DOT com 
    License: MIT 
    Original: http://blog.mithis.net/archives/python/90-firefox3-cookies-in-python 

    Ported to Python 3 by Dotan Cohen 
    """ 

    from io import StringIO 
    import http.cookiejar 
    import sqlite3 

    con = sqlite3.connect(filename) 
    cur = con.cursor() 
    cur.execute("SELECT host, path, isSecure, expiry, name, value FROM moz_cookies") 

    ftstr = ["FALSE","TRUE"] 

    s = StringIO() 
    s.write("""\ 
# Netscape HTTP Cookie File 
# http://www.netscape.com/newsref/std/cookie_spec.html 
# This is a generated file! Do not edit. 
""") 

    for item in cur.fetchall(): 
     s.write("%s\t%s\t%s\t%s\t%s\t%s\t%s\n" % (
      item[0], ftstr[item[0].startswith('.')], item[1], 
      ftstr[item[2]], item[3], item[4], item[5])) 

    s.seek(0) 
    cookie_jar = http.cookiejar.MozillaCookieJar() 
    cookie_jar._really_load(s, '', True, True) 

    return cookie_jar 



cj = get_cookie_jar(cookie_file) 
response = requests.get(url, cookies=cj) 
print(response.text) 

のPython 3.4.2とFirefox 39.0でKubuntuのLinuxの14.10でテスト:ここでは、Webページを照会するときに実行しているのFirefoxからクッキージャーを読んで、それを使用しますのpython3コードがあります。コードはmy Github repoからも入手できます。

関連する問題