2012-01-11 24 views
7

संदर्भ:
मैं ओपनआईडी उपभोक्ता (वास्तव में स्टैक एक्सचेंज) में बैकएंड एक्सेस पर काम कर रहा हूं। यदि मैं उपयोगकर्ता के लिए एक विकल्प के रूप में सभी संभावित ओपनआईडी प्रदाताओं को प्रदान करना चाहता हूं, तो मुझे ओपन आईडी यूआरएल जमा करने से पहले इन प्रदाताओं में से प्रत्येक को प्रमाणित करने के लिए ब्राउज़र इंटरैक्शन को अनुकरण करना होगा। हालांकि, मुझे लगता है कि मैं उपयोगकर्ता के वेब ब्राउज़र की मौजूदा कुकीज़ तक पहुंचने और यूआरएल के साथ उपभोक्ता को प्रमाणीकरण का अनुरोध करके यह छोटा कर सकता हूं।पाइथन के साथ वेब ब्राउज़र से कुकीज़ कैसे प्राप्त करें?

समस्या:
उपयोगकर्ता के वेब-ब्राउज़र की कुकी कैसे उपयोग करने के लिए? मैंने पाइथन के साथ इसे कैसे करना है, इस बारे में बहुत कम जानकारी देखी है। यह previous question आंशिक रूप से फ़ायरफ़ॉक्स से संबंधित समस्या का उत्तर देता है, जो विशेष रूप से नीचे the code sample पर इंगित करता है। हालांकि, मुझे केवल फ़ायरफ़ॉक्स पर लिनक्स पर उपयोग किए जाने वाले सबसे आम वेब ब्राउज़र से कुकीज़ तक पहुंचने की आवश्यकता होगी।

#! /usr/bin/env python 
# Protocol implementation for handling gsocmentors.com transactions 
# Author: Noah Fontes nfontes AT cynigram DOT com 
# License: MIT 

def sqlite2cookie(filename): 
    from cStringIO import StringIO 
    from pysqlite2 import dbapi2 as sqlite 

    con = sqlite.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 = cookielib.MozillaCookieJar() 
    cookie_jar._really_load(s, '', True, True) 
    return cookie_jar 

प्रश्न: अजगर एक मॉड्यूल है कि वेब ब्राउज़र से कुकी निकासी की सुविधा कर सकते प्रदान करता है? अन्यथा, क्रोमियम आदि जैसे अन्य ब्राउज़रों से कुकीज़ खींचने के लिए मैं उपरोक्त कोड को कैसे अनुकूलित कर सकता हूं?

पीएस: या क्या मैं प्रारंभिक समस्या (यानी ओपनआईडी प्रदाता को प्रमाणीकृत) गलत तरीके से देख रहा हूं? (मुझे लगता है मैं सिर्फ एक और से एक समस्या की जगह हूँ लग रहा है।)

+1

आप http://stackoverflow.com/questions/4634408/can-non-web-applications-use-openid – Amber

+0

या http को देखने के लिए चाहते हो सकता है: // stackoverflow। कॉम/प्रश्न/921532/पुनर्प्राप्ति-कुकीज़-पायथन – monkut

+0

@ मोनकुट: असल में वह केवल सत्रों में कुकीज़ रखने के लिए प्रासंगिक है, जो मुझे पहले से ही पता है कि कैसे करना है। मैं जो करने की कोशिश कर रहा हूं वह है कि ब्राउज़र से कुकीज़ प्राप्त करें। – Benjamin

उत्तर

11

मैं बिल्कुल ऐसा करने के लिए एक मॉड्यूल बनाया, यहाँ उपलब्ध है: https://bitbucket.org/richardpenman/browsercookie/

उदाहरण उपयोग:

import requests 
import browsercookie 
cj = browsercookie.chrome() 
r = requests.get('http://stackoverflow.com', cookies=cj) 

python3 कांटा:https://github.com/borisbabic/browser_cookie3

+0

आपका मॉड्यूल कहां है? –

+1

लिंक अपडेट किया गया है। 'पाइप इंस्टॉल ब्राउज़रकुकी' का उपयोग करके भी उपलब्ध है। –

+4

इस पोस्ट में आने वाले अन्य लोगों के लिए नोट करें: मॉड्यूल वर्तमान क्रोम संस्करणों का समर्थन नहीं करता है। –

संबंधित मुद्दे