2013-06-17 12 views
5

मैं ऐसी सेवा पर काम कर रहा हूं जो यूआरएल सुनता है, उनमें से प्रत्येक पर जाएं और प्रत्येक अनुरोध के लिए कुकीज़ प्राप्त करें।तृतीय पक्ष कुकीज़ कैसे प्राप्त करें?

वर्तमान में मैं कुछ इस तरह है:

browser = webdriver.Firefox() 
browser.get('http://google.com') 
cookies = browser.get_cookies() 

#parse cookies 

बहरहाल, यह केवल मुझे 1 पक्ष कुकीज़ देता है, लेकिन मैं यह भी 3 पार्टी कुकीज़ प्राप्त करने की आवश्यकता। मुझे पता चला कि सेलेनियम वेब ड्राइवर इसका समर्थन नहीं करते हैं। मैं जानना चाहता हूं कि मैं इसे कैसे प्राप्त कर सकता हूं? मैं सेलेनियम तक ही सीमित नहीं हूं, इसलिए अन्य समाधानों की सराहना करता हूं।

+0

यहाँ कैसे जावास्क्रिप्ट में यह करने के लिए है: http: // www.electrictoolbox.com/javascript-get-all-cookie s/ – mitchfish36

+0

@ mitchfish36: मुझे इसे पायथन के साथ करने की ज़रूरत है, लेकिन फिर भी, आपका उदाहरण केवल प्रथम पार्टी कुकीज़ (कुकीज़ जो एक ही डोमेन से सेट हैं) प्राप्त कर सकते हैं। मेरा वर्तमान समाधान प्रॉक्सी का उपयोग करना है और प्रतिक्रियाओं पर सेट-कुकी शीर्षलेख की जांच करना है, लेकिन मैं कुछ कम जटिल का उपयोग करना चाहूंगा। – deanrock0

उत्तर

4
import requests 
s = requests.session() 
r = s.get('http://google.com') 
r = s.get('http://facebook.net') 
for cookie in s.cookies: 
    print(cookie) 

http://python-requests.org/


का उपयोग करना: सेलेनियम + PhantomJS

from selenium import webdriver 

cookie_file_path = 'cookie.txt' 

args = ['--cookies-file={}'.format(cookie_file_path)] 
driver = webdriver.PhantomJS(service_args=args) 
driver.get('http://google.com') 
driver.get('http://facebook.com') 
with open(cookie_file_path) as f: 
    print(f.read()) 

आउटपुट (लिपटे):

[General] 
cookies="@Variant(\0\0\0\x7f\0\0\0\x16QList<QNetworkCookie>\0\0\0\0\x1\0\0\0\a\0 
\0\0\xd6NID=67=SZetUV-oLq_M8ik40VT2GEIb45LMaXkhm6H3zx1wULO52qkCHPc9AML_p5eubW4zL 
Ms158YAYKQTdCJzb4mInix_Zek6P8Ej1XZh9h5Ng3I7X4gZuE_S-Fl2YpaSYd9B; HttpOnly; expir 
es=Wed, 18-Dec-2013 02:44:31 GMT; domain=.google.co.kr; path=/\0\0\0ldatr=kMm_Ue 
0P06lxFANs8c-wCgwG; HttpOnly; expires=Thu, 18-Jun-2015 02:44:32 GMT; domain=.fac 
ebook.com; path=/\0\0\0Kreg_fb_gate=https%3A%2F%2Fwww.facebook.com%2F; domain=.f 
acebook.com; path=/\0\0\0Jreg_fb_ref=https%3A%2F%2Fwww.facebook.com%2F; domain=. 
facebook.com; path=/\0\0\0\xa2PREF=ID=be651672f1ddac52:U=515e3545a8a53080:FF=0:T 
M=1371523471:LM=1371524047:S=iqfF3qNRUwVsInZR; expires=Thu, 18-Jun-2015 02:54:07 
GMT; domain=.google.com; path=/\0\0\0\xd4NID=67=pm8Ws9703eugHhhImX_hBpqhUyAhCUG 
TebjDZ6YY_cP7CuvIA4x8ElgGaj6tOweXFxxjALoX1PwqFvHHkUY1kerw3vwM-VaIyyPVSADMqOnR-Ty 
ed_bGU3bk6YSwUUeG; HttpOnly; expires=Wed, 18-Dec-2013 02:54:07 GMT; domain=.goog 
le.com; path=/\0\0\0\xa9PREF=ID=9769c9a2d96728cf:U=3d59c2548337b74e:FF=0:NW=1:TM 
=1371523471:LM=1371524047:S=vE5Y_06LhP4unse7; expires=Thu, 18-Jun-2015 02:54:07 
GMT; domain=.google.co.kr; path=/)" 
+1

यह केवल सर्वर द्वारा भेजी गई पहली पार्टी कुकीज़ प्राप्त करता है। मुझे जावास्क्रिप्ट से कुकीज़ सेट की भी आवश्यकता है। – deanrock0

+1

@ deanrock0, [इसे आज़माएं।] (Http://stackoverflow.com/a/15179516/2225682) – falsetru

+0

धन्यवाद, दोनों समाधान, सेलेनियम + फ़ैंटोमजेएस और सेलेनियम + Google क्रोम का काम। Google क्रोम के साथ आपको कुकी फ़ाइल की भी आवश्यकता नहीं है, क्योंकि .get_cookies() सभी डोमेन के लिए कुकीज़ पुनर्प्राप्त करता है। – deanrock0

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