linux एक पृष्ठ तक पहुंचने के लिए curl जिसके लिए किसी भिन्न पृष्ठ से लॉगिन की आवश्यकता होती है




bash cookies (3)

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

मैंने उपयोगकर्ता / पासवर्ड भाग के साथ और बिना दूसरी लाइन का उपयोग करने का प्रयास किया है और अभी भी काम नहीं करता है। दोनों पेज एक ही सीए का उपयोग करते हैं, इसलिए यह कोई समस्या नहीं है। कोई सुझाव? धन्यवाद


कुछ googling के बाद मुझे यह मिला:

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

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


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

डेवलपर टूल्स का नेटवर्क टैब खोलें, लॉग इन करें, आवश्यक पेज पर नेविगेट करें, "कर्ल के रूप में कॉपी करें" का उपयोग करें।


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

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

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

आपको पहले कमांड द्वारा बनाई गई कुकीज़ को सहेजने की ज़रूरत है:

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

और फिर दूसरे को चलाने के दौरान उन्हें वापस पढ़ें:

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

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







http-authentication