मैं एक कमांड लाइन टूल का उपयोग कैसे कर सकता हूं जैसे कि एक ओपनआईडी साइट में लॉग इन करने के लिए Wget?


10

विशेष रूप से, मैं विभिन्न स्टैक एक्सचेंज साइटों पर अपने उपयोगकर्ता प्रोफ़ाइल से कुछ पृष्ठ डाउनलोड करने में सक्षम होना चाहूंगा। हालाँकि, मैं यह स्वचालित रूप से ( cronनौकरी का उपयोग करके ) कमांड लाइन से और पार्स करने योग्य प्रारूप में करना चाहूंगा। मैं इसके लिए लिनक्स का उपयोग करना ज्यादा पसंद करता हूं, लेकिन यदि आवश्यक हो तो मैं मैक या विंडोज मशीन का उपयोग कर सकता हूं।

आदर्श रूप से, मैं पृष्ठों को लाने के लिए Wget या cURL जैसे टूल का उपयोग करना चाहूंगा । मैं नहीं जानता कि कैसे लॉग में पिछले पाने के लिए। मैंने उन सुझावों को देखा है जिनका उल्लेख है कि आप फ़ायरफ़ॉक्स के माध्यम से लॉग इन कर सकते हैं, प्रासंगिक कुकी को निर्यात कर सकते हैं और इसे अपने --load-cookiesविकल्प के माध्यम से Wget में आयात कर सकते हैं । उदाहरण के लिए यहाँ और यहाँ । हालांकि यह काम करता है अगर मैंने अभी लॉग इन किया है, तो यह थोड़ी देर के बाद नहीं होता है। मुझे लगता है क्योंकि आईडी टोकन को ताज़ा किया जाना है।

इसलिए, बस में लॉग इन करने के बाद एसयू और मेरे कुकीज़ का निर्यात मैं कर सकता हूं:

wget --load-cookies cookies.txt \
  https://superuser.com/users/151431/terdon?tab=responses

हालांकि कुछ मिनटों के बाद, मुझे 404 त्रुटि मिली:

wget -O ~/stack/$(date +%s) --load-cookies ~/cookies.txt \
   https://superuser.com/users/151431/terdon?tab=responses

--2013-08-06 04:04:14--  https://superuser.com/users/151431/terdon?tab=responses
Resolving superuser.com (superuser.com)... 198.252.206.16
Connecting to superuser.com (superuser.com)|198.252.206.16|:80... connected.
HTTP request sent, awaiting response... 404 Not Found
2013-08-06 04:04:15 ERROR 404: Not Found.

तो, मैं स्वचालित रूप से कमांड लाइन से एक OpenID सक्षम वेबसाइट में कैसे प्रवेश कर सकता हूं?


पुनश्च। मुझे लगता है कि यह वेब अनुप्रयोगों की तुलना में यहां बेहतर है क्योंकि मेरा प्रश्न वास्तव में कमांड लाइन पहलू के बारे में है न कि प्रश्न में वेब पेज का वास्तविक विवरण। मुझे लगता है कि सभी OpenID साइटों पर कोई भी समाधान लागू होगा ।


3
क्या आपने यह देखने के लिए SE एपीआई ( api.stackexchange.com ) पर गौर किया है कि क्या वह वह जानकारी प्रदान करता है जिसे आप खोज रहे हैं? यह प्रोग्रामेटिक डेटा तक पहुंचने का आधिकारिक तरीका है और यह प्रमाणित करने के लिए OAuth का उपयोग करता है।
हैवीड

@ हयवेद हाँ, मैं उम्मीद कर रहा था कि मुझे इसके लिए एपीआई में तल्लीन नहीं होना पड़ेगा। अगर मुझे लगता है कि मेरे पास एक ही रास्ता है। एक सरसरी नज़र से, ऐसा नहीं लगता है कि यद्यपि मैं एपीआई के माध्यम से लॉगिन प्रक्रिया को स्वचालित कर सकता हूं। क्या आप जानते हैं कि क्या मैं इस तरह से प्रमाणित कर सकता हूं कि मुझे किसी सक्रिय इनपुट की आवश्यकता नहीं है? अगर मुझे डेटा प्राप्त करने के लिए डॉक्स को सही ढंग से समझ में आता है, जिसे प्रमाणीकरण की आवश्यकता होती है, तो मुझे मैन्युअल रूप से लॉग इन करने की आवश्यकता होगी।
टेराडॉन

मैंने वास्तव में SE API का उपयोग नहीं किया है, लेकिन अन्य OAuth कार्यान्वयनों में मैंने आपको एक बार लॉगिन किया है और आपको एक टोकन दिया गया है जो अनिश्चित काल के लिए अच्छा है।
हैवीडेड

जवाबों:


1

तुम खिचड़ी भाषा, क्योंकि कुकीज़ हर इतनी बार ताज़ा करते हैं। यह सुरक्षा उद्देश्यों के लिए है, एकमात्र तरीका आप ऐसा कर सकते हैं, जिस तरह से आपने पहले ही किया था। कम से कम, मेरी समझ से।


मैंने अभी देखा कि यह वास्तव में एक पुराना सवाल है .... उफ़।
मार्टन

-3

(पुनः-) के लिए आदमी पृष्ठ पढ़ें और झंडे के wgetलिए विवरण देखें ।--user--password

ध्यान दें कि कमांड लाइन तर्क के रूप में पासवर्ड पास करना अनुशंसित नहीं है, क्योंकि जो कोई भी psइसे चलाता है वह इसे देख सकता है। सबसे अच्छा अभ्यास कहीं भी कच्चे पासवर्ड को बचाने के लिए नहीं है, लेकिन अगला सबसे अच्छा यह है कि इसे एक फ़ाइल में रखा जाए जिसे केवल मालिक ही पढ़ सके।


3
आपके द्वारा उल्लिखित झंडे HTTP आधारित प्रमाणीकरण (मूल, पाचन, आदि) के लिए हैं। एसई प्रमाणीकरण के लिए इनमें से किसी का उपयोग नहीं करता है। वे प्रमाणीकरण के लिए तीसरे पक्ष के OpenID प्रदाता पर भरोसा करते हैं ।
हैवीड
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.