2011-01-05 3 views
3

Я пытаюсь создать скрипт python, который будет обращаться к веб-сайту с помощью файлов cookie в Firefox. cookielib.MozillaCookieJar будет работать, если он поддерживает Firefox 3. Есть ли способ получить доступ к Firefox 3 cookie внутри python?Доступ к Firefox 3 файлам cookie в Python

Я вижу, что есть два файла под [home] /. Mozilla/firefox/[randomletters] .default/называется cookies.sqlite и cookies-nontor.xml. Файл .xml выглядит так, что было бы легко написать функцию, которая вернет из нее CookieJar, но если уже есть модуль, который делает это, я бы хотел избежать повторного создания колеса.

ответ

2

Вот a recipe для доступа к куки SQLite в FF 3. Там есть патч на Python bug Tracker, а Mechanize также поддерживает это.

+0

Спасибо за ответ! Есть ли пример использования механизации для получения файлов cookie браузера? Я видел пример в документации для старого файла cookie.txt, но не для нового файла cookie.sqlite. – Hempage

+0

Мне удалось найти это раннее объяснение: http://osdir.com/ml/python.wwwsearch.general/2008-02/msg00012.html – TryPyPy

+0

Попытка механизировать совсем немного, мне не повезло ... Но после используя рецепт, с которым вы связались, у меня был большой успех. – Hempage

1

TryPyPy's answer меня на правильном пути, но код в связанном рецепт устарел и не будет работать с Python3. Вот Python3 код, который будет читать куков от запущенного Firefox и использовать его при запросе веб-страницы:

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) 

Испытано на Kubuntu Linux 14.10 с Python 3.4.2 и Firefox 39.0. Код также доступен от my Github repo.

 Смежные вопросы

  • Нет связанных вопросов^_^