2012-09-13 22 views
66

मेरे पास 2 पृष्ठ हैं: xyz.com/a और xyz.com/b। मैं केवल xyz.com/b तक पहुंच सकता हूं अगर केवल अगर मैं xyz.com/a पर लॉगिन करता हूं। यदि दूसरे के माध्यम से xyz.com/b तक पहुंचने के बिना, मुझे ब्राउज़र के माध्यम से आसानी से पहुंच अस्वीकार (लॉगिन करने के लिए रीडायरेक्ट नहीं) मिलता है। एक बार जब मैं xyz.com/a पर लॉगिन करता हूं, तो मैं दूसरे तक पहुंच सकता हूं।एक पृष्ठ तक पहुंचने के लिए कर्ल जो किसी भिन्न पृष्ठ से लॉगिन की आवश्यकता है

मेरी समस्या curl कमांड का उपयोग कर ऐसा कर रही है। मैं curl का उपयोग कर xyz.com/a पर सफलतापूर्वक लॉगिन कर सकता हूं, लेकिन फिर xyx.com/b आज़माएं और मुझे पहुंच से वंचित कर दिया गया है।

curl --user user:pass https://xyz.com/a #works ok 
curl https://xyz.com/b #doesn't work 

मैं उपयोगकर्ता/कूटशब्द हिस्सा बिना & साथ दूसरी पंक्ति उपयोग करने की कोशिश है और अब भी कर दिया है काम नहीं करता:

मैं निम्नलिखित का उपयोग करें। दोनों पेज एक ही सीए का उपयोग करते हैं, इसलिए यह कोई समस्या नहीं है। कोई सुझाव? धन्यवाद

उत्तर

81

आपकी साइट जानकारी संग्रहीत करने के लिए वेब साइट संभावित रूप से cookies का उपयोग करती है। जब आप

curl --user user:pass https://xyz.com/a #works ok 
curl https://xyz.com/b #doesn't work 

curl चलाने दो अलग-अलग सत्रों में दो बार चलाया जाता है,। इस प्रकार जब दूसरा आदेश चलता है, तो पहली कमांड द्वारा निर्धारित कुकीज़ उपलब्ध नहीं होती हैं; ऐसा लगता है कि आपने एक ब्राउज़र सत्र में पृष्ठ a पर लॉग इन किया है, और एक अलग में पृष्ठ b तक पहुंचने का प्रयास किया है।

curl --user user:pass --cookie-jar ./somefile https://xyz.com/a 

और फिर उन्हें वापस पढ़ा जब दूसरी चलाने में:

curl --cookie ./somefile https://xyz.com/b 

वैकल्पिक रूप से आप कोशिश कर सकते हैं

आपको क्या करने की जरूरत है सेव पहले आदेश के द्वारा बनाई गई कुकीज़ है एक ही कमांड में दोनों फाइलें डाउनलोड करना, जो मुझे लगता है कि एक ही कुकीज़ का उपयोग करेगा।

+0

यह अजीब बात है क्योंकि जब मैं इसे आज़माता हूं, तो यह काम नहीं करता है क्योंकि 'somefile' में संग्रहीत कुकी में पथ पैरामीटर ('/ a' इस मामले में होता है)) और यह दूसरी कॉल को अग्रेषित नहीं किया जाता है। अगर मैं फ़ाइल में कुकी संपादित करता हूं और केवल स्लैश डालता हूं, तो यह काम करता है (कुकी दूसरी कॉल पर अग्रेषित की जाती है)।क्या आपको पता है कि कुकी फ़ाइल में पथ के भंडारण को रोकना संभव है? –

36

कुछ Googling के बाद मैं इस पाया:

curl -c cookie.txt -d "LoginName=someuser" -d "password=somepass" https://oursite/a 
curl -b cookie.txt https://oursite/b 

कोई विचार करता है, तो यह काम करता है, लेकिन यह सही दिशा में हो सकती है।

+0

बिना कि '-d" xxx "' धन्यवाद वैसे भी – deadfish

+5

यदि आप एक वेब साइट को उम्मीद है कि एक फार्म प्रस्तुत किया जाना है काम करेंगे काम किया। आपको स्रोत को देखने और

छवि ढूंढने की आवश्यकता होगी और देखें कि फ़ील्ड का नाम क्या है और किस URL को पोस्ट करने की आवश्यकता है। पोस्ट अनुरोध देखने के लिए आप अपने वेब ब्राउज़र डीबगर का उपयोग कर सकते हैं ताकि आप देख सकें कि क्या भेजा जा रहा है। यह थोड़ा आसान है। – stonefury

+0

धन्यवाद उस टिप्पणी के लिए @stonefury - मुझे इतना डिबगिंग समय बचाया :) – Rob1991

36

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

ओपन डेवलपर उपकरण का नेटवर्क टैब, में प्रवेश करें, जरूरत पेज पर जाएं, "cURL के रूप में कॉपी" का उपयोग ।

screenshot

+5

यह एक गहरा जवाब है! यह सीधे सवाल का जवाब नहीं देता है, क्योंकि यह दिखाता है कि * कैसे * इसका उत्तर देना है। – bgStack15

+2

जो सबसे उपयोगी उत्तरों में से एक है। यह वास्तव में आपको बहु-चरण प्रमाणीकरण को देखने और समझने की अनुमति देता है। –

+0

कृपया एक ही समस्या के बारे में मेरा प्रश्न जांचें https://stackoverflow.com/questions/48391862/login-to-page-using-html-form-and-cookies-for- प्रमाणीकरण –

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

  • कोई संबंधित समस्या नहीं^_^