pycurl

2010-02-08 10 views
7

में कुकीज़ में लॉग इन करना और उपयोग करना मुझे पासवर्ड संरक्षित पृष्ठ पर एक फ़ाइल डाउनलोड करने की आवश्यकता है। पृष्ठ पर मैन्युअल रूप से प्राप्त करने के लिए मुझे पहले सामान्य लॉगिन पृष्ठ के माध्यम से प्रमाणीकरण करना होगा। मैं इस पृष्ठ को स्क्रिप्ट में लाने के लिए कर्ल का उपयोग करना चाहता हूं।
मेरी स्क्रिप्ट पहले लॉगिन। यह सफल होने लगता है - यह एक पुट से/लॉगिन तक 200 लौटाता है। हालांकि, एक 500pycurl

साथ इच्छित पृष्ठ में विफल रहता है के लाने, मैं एक "कुकी जार" उपयोग कर रहा हूँ:

C.setopt(pycurl.COOKIEJAR, 'cookie.txt') 

वर्बोज़ मोड में, मैं देख सकता हूँ जब मैं फ़ाइल मैं लाने कुकीज़ आदान-प्रदान किया जा रहा है जरुरत। अब मेरा प्रश्न: क्या कुकीर का उपयोग करने के लिए और कुछ है?

उत्तर

11

मेरा मानना ​​है कि कर्ल कुकीज़ संग्रहीत करेगा लेकिन आपको उन्हें स्पष्ट रूप से उपयोग करने की आवश्यकता है। हालांकि मैंने कभी इसके लिए कमांड लाइन इंटरफ़ेस का उपयोग किया है। प्रलेखन मुझे लगता है कि आप की कोशिश करना चाहते हो सकता है स्कैनिंग: (दूसरा अनुरोध करने से पहले)

C.setopt(pycurl.COOKIEFILE, 'cookie.txt') 

+1

किसी को इसे सही के रूप में चिह्नित करना चाहिए। यह काम करता हैं!!! वांस, इस आदमी को कुछ प्रोप दे दो !!! –

2

WDS दाईं ओर है।

आपके आगे के संपादन के लिए, उपलब्ध विकल्प http://curl.haxx.se/libcurl/c/curl_easy_setopt.html पर (कुकी शॉर्टकट्स पर अनुभाग देखें) पर आधारित हैं।

एक 500 एक आंतरिक सर्वर त्रुटि है ... यह सुनिश्चित करना मुश्किल है कि इसे पर स्क्रिप्ट पर दोषी ठहराया जा सकता है, यहां क्या हो रहा है इसके बारे में अधिक जानकारी के बिना। आप अन्य डेटा पेज सब हम जानते हैं के लिए उम्मीद कर रही है (कुकीज़ असंबंधित करने के लिए) पारित करने में नाकाम रहने जा सकता है (और वे लागू नहीं किया है सुंदर त्रुटि हैंडलिंग!)

जेबी

7

आप कुकी पहले संग्रहीत करना चाहिए और फिर से पढ़ने के यह:

C.setopt(pycurl.COOKIEJAR, 'cookie.txt') 
C.setopt(pycurl.COOKIEFILE, 'cookie.txt') 

यहाँ लौटे --help कर्ल:

0123:

-b, --cookie STRING/FILE String or file to read cookies from (H) 
-c, --cookie-jar FILE Write cookies to this file after operation (H) 

इस नमूने देखें

def connect(self): 
    ''' 
    Connect to NGNMS server 
    ''' 
    host_url = self.ngnms_host + '/login' 

    c = pycurl.Curl() 
    c.setopt(c.URL, host_url) 
    c.setopt(pycurl.TIMEOUT, 10) 

    c.setopt(pycurl.FOLLOWLOCATION, 1) 
    c.setopt(pycurl.POSTFIELDS, 'j_username={ngnms_user}&j_password={ngnms_password}'.format(**self.ngnms_login)) 
    c.setopt(pycurl.COOKIEJAR, 'data/ngnms.cookie') 

    # c.setopt(c.VERBOSE, True) 

    c.setopt(pycurl.SSL_VERIFYPEER, 0); 
    session = c 
    return session 
संबंधित मुद्दे