मैं जिस साइट में लॉग इन हूं, उससे डाउनलोड करने के लिए मैं wget / curl का उपयोग कैसे करूं?


46

जब आप लॉग इन होते हैं तो विकिपीडिया के कुछ भाग अलग-अलग दिखाई देते हैं। मैं उपयोगकर्ता पृष्ठों को भूल जाना चाहूंगा ताकि वे इस तरह प्रकट हों जैसे कि मुझे लॉग इन किया गया था।

क्या कोई ऐसा तरीका है जिससे मैं उपयोगकर्ता पृष्ठों को इस तरह से भूल सकता हूँ

http://en.wikipedia.org/wiki/User:A

यह लॉगिन पृष्ठ है:

http://en.wikipedia.org/w/index.php?title=Special:UserLogin&returnto=Login&campaign=ACP3


Google Chrome + cURL
pterojacktyl

जवाबों:


50

आसान तरीका: अपने ब्राउज़र के साथ लॉगिन करें, और कुकीज़ को भूल जाने के लिए दें

सबसे आसान तरीका: सामान्य तौर पर, आपको पृष्ठों को लाने के लिए किसी विशेष वेबसाइट से (लॉग-इन) कुकीज़ के साथ विग या कर्ल प्रदान करने की आवश्यकता होती है जैसे कि आप लॉग इन किए गए थे

यदि आप फ़ायरफ़ॉक्स का उपयोग कर रहे हैं, तो निर्यात कुकीज़ ऐड-ऑन के माध्यम से करना आसान है । ऐड-ऑन स्थापित करें, और:

  1. टूल्स पर जाएं ... कुकीज़ निर्यात करें , और cookies.txtफ़ाइल को सहेजें (आप फ़ाइल नाम / गंतव्य बदल सकते हैं)।
  2. एक टर्मिनल खोलें, और विकल्प के wgetसाथ उपयोग करें --load-cookies=FILENAME, जैसे

    wget --load-cookies=cookies.txt http://en.wikipedia.org/wiki/User:A
    • के लिए कर्ल , यहcurl --cookie cookies.txt ...

(मैं क्रोम / क्रोमियम उपयोगकर्ताओं के लिए इस उत्तर को अपडेट करने का प्रयास करूंगा)

कठिन तरीका: पूरे सत्र को प्रबंधित करने के लिए कर्ल (अधिमानतः) या विग का उपयोग करें

  • एक विस्तृत कैसे इस उत्तर के दायरे से बाहर है, लेकिन आप का उपयोग कर्ल के साथ --cookie-jarया wget के साथ --save-cookies --keep-session-cookiesएक साइट पर लॉग इन करने के लिए विकल्प, HTTP / एस PUT विधि के साथ साथ, सेव लॉगिन कुकीज़, और फिर उन्हें करने के लिए उपयोग एक ब्राउज़र अनुकरण।
  • कहने की जरूरत नहीं है, इसके लिए लॉगिन पृष्ठ (इनपुट क्षेत्र के नाम, आदि प्राप्त करें) के लिए HTML स्रोत से गुजरना पड़ता है, और अक्सर सरल लॉगिन / पासवर्ड प्रमाणीकरण से परे कुछ भी उपयोग करने वाली साइटों के लिए काम करना मुश्किल होता है।
  • युक्ति: यदि आप इस मार्ग पर जाते हैं, तो अक्सर वेबसाइट के मोबाइल संस्करण (यदि उपलब्ध हो) से निपटने के लिए , कम से कम प्रमाणीकरण कदम के लिए यह बहुत सरल है ।

1
अच्छी टिप। मोबाइल साइट के लिए कोड अक्सर क्लीनर होता है।
कज़िनकोकीन

4
इस तरह की कुकीज़ कैसे दिखती है।
फ्रेडरिक नॉर्ड

यह "निर्यात कुकीज़" ऐड-ऑन ने कुकीज के साथ हर एक साइट के लिए कुकीज़ फ़ाइल बनाई है जो मैंने फ़ायरफ़ॉक्स में एक्सेस की है। इसलिए यदि आप इस उत्तर का पालन करते हैं, तो आप अपनी सभी कुकीज़ को जो भी साइट पर मार रहे हैं, उसे प्रस्तुत करेंगे। मैं इस जवाब में इसे सुरक्षा दोष मानता हूं। आप आसानी से इस समस्या के आसपास काम कर सकते हैं: grep mydomain cookies.txt > mydomain-cookies.txt
erik.weathers


आप केवल चयनित कुकीज़ निर्यात करने के लिए फ़ायरफ़ॉक्स में कुकी प्रबंधक ऐड-ऑन का उपयोग कर सकते हैं ।
हंस जिंजेल

7

एक और आसान समाधान जो मेरे लिए कुछ भी अतिरिक्त स्थापित किए बिना काम करता है:

यह आपको एक कमांड देगा जिसे आप सीधे अपने शेल में पेस्ट कर सकते हैं, जिसमें आपके सभी कुकी क्रेडेंशियल्स जैसे हैं

curl 'https://mysite.test/my-secure-dir/picture1.jpg' \ 
-H 'User-Agent: Mozilla/5.0 ...' \
-H 'Cookie: SESSIONID=abcdef1234567890'

फिर आप जो चाहें प्राप्त करने के लिए कमांड में URL को संशोधित कर सकते हैं।


4

CURL के साथ दोनों तरह से कुकीज़ को संभालना वास्तव में आसान है।

curl www.target-url.com -c cookie.txtफिर कुकी नामक एक फाइल को सेव करेगा। लेकिन आपको लॉग इन करने की आवश्यकता है, इसलिए उपयोग करने की आवश्यकता है - जैसे तर्क के साथ डेटा curl -X --data "var1=1&var2=2" www.target-url.com/login.php -c cookie.txt:। एक बार जब आप लॉग इन कुकी प्राप्त कर लेते हैं, तो आप इसे भेज सकते हैं: curl www.target-url.com/?user-page.php -b cookie.txt

बचाने और भेजने के लिए बस -c (- cookie) या -b (- cookie-jar) का उपयोग करें।

Note1: CURL CLI का उपयोग करना PHP की तुलना में बहुत आसान है और शायद तेज;)

अंतिम सामग्री को बचाने के लिए आप आसानी > filename.htmlसे अपने cURL कमांड में जोड़ सकते हैं फिर पूर्ण HTML कोड को बचा सकते हैं ।

नोट 2 के बारे में "पूर्ण": यो cURL के साथ जावास्क्रिप्ट प्रस्तुत नहीं कर सकता, बस स्रोत कोड प्राप्त करें।


1
-Xपैरामीटर "डू पोस्ट" के लिए खड़ा है, लेकिन उपयोग --data=xxx -Xकरना निहित है, इसलिए आप इसे निश्चित रूप से हटा सकते हैं।
erm3nda

-bहैread cookie
टिमो

3

अभी भी इस सवाल में दिलचस्पी रखने वालों के लिए, एक बहुत ही उपयोगी क्रोम एक्सटेंशन है, जिसे कर्लगेट कहा जाता है, जो आपको एक क्लिक के साथ प्रमाणीकरण उपायों आदि के लिए एक अनुरोध wget/ उत्पन्न करने की अनुमति देता है curl। इस एक्सटेंशन को स्थापित करने के लिए, नीचे दिए गए चरणों का पालन करें:

  1. Chrome वेबस्टोर से एक्सटेंशन इंस्टॉल करें ।
  2. उस वेब पेज पर जाएं जिसे आप डाउनलोड करना चाहते हैं।
  3. डाउनलोड शुरू करें।
  4. एक्सटेंशन आपके लिए एक लिंक उत्पन्न करेगा।

का आनंद लें!


2

फ़ायरफ़ॉक्स कुकीज के साथ ब्लॉग पोस्ट Wget दिखाता है कि कैसे स्क्लाइट डेटा फ़ाइल का उपयोग किया जाता है जिसमें फ़ायरफ़ॉक्स अपने कुकीज़ स्टोर करता है। इस तरह एक को मैन्युअल रूप से उपयोग के लिए कुकीज़ को निर्यात करने की आवश्यकता नहीं है। एक टिप्पणी से पता चलता है कि यह सत्र कुकीज़ के साथ काम नहीं करता है, लेकिन मैंने उन साइटों के लिए ठीक काम किया जिनके साथ मैंने इसकी कोशिश की थी।


2

फ़ायरफ़ॉक्स के लिए क्लिगेट पर एक नज़र है ।

जब आप डाउनलोड करने वाले हों, तो अंतिम डाउनलोड संवाद पर आपको क्लिपबोर्ड में कर्ल कमांड लाइन के रूप में डाउनलोड को कॉपी करने का विकल्प मिलता है।


1

क्या आपने यह कोशिश की है?

wget --user=username --password=password http://en.wikipedia.org/wiki/User:A

हाँ - दुर्भाग्य से यह काम नहीं किया = (
user784637

6
नोट: यह सिंटैक्स केवल मूल HTTP प्रमाणीकरण के लिए काम करता है (जहां आपका ब्राउज़र एक विशेष उपयोगकर्ता नाम / पासवर्ड संवाद बॉक्स पॉप अप करता है), वेबपेज-आधारित प्रमाणीकरण के लिए नहीं।
ish

बुनियादी HTTP प्रमाणीकरण url प्रारूप व्यवस्थापक है: admin@www.url.com लेकिन जैसा कि @izx ने कहा है, बुनियादी HTTP ब्राउज़र सुविधा है, न कि PHP प्रोग्रामिंग और न ही कोड। यदि किसी दिन आपको एक htaccess संरक्षित url का उपयोग करने की आवश्यकता होती है, तो आप उस मोड का उपयोग कर सकते हैं; D
erm3nda

मैंने इसे कम नहीं किया, लेकिन यह प्रमाणित करने का एक अच्छा तरीका नहीं है: यदि आप गलती से ऐसी स्क्रिप्ट को सार्वजनिक कर देते हैं, तो लोग आपके पासवर्ड का उपयोग कर सकते हैं।
विल्म वान ओन्सेम

1
नीचे के साथ क्या है? हो सकता है कि सभी उत्तर न पकड़ें लेकिन फिर भी एक उत्तर हो।
ओवरकोड

1

कुछ इस तरह की कोशिश करें:

wget --keep-session-cookies --save-cookies cookies.txt --post-data 'user=goyamy&passwrd=mypassword' http://forum.ubuntu-it.org/

इस लिंक को भी देखें:

इस वेबपेज को wget के साथ कैसे डाउनलोड करें?


बिल्कुल किसी आउटपुट की तरह। > filename.htmlवर्तमान dir पर आउटपुट को सहेजने के लिए उपयोग करें या एक पूरी फ़ाइलपथ डालें। यह लिनक्स और विंडोज सिस्टम दोनों पर लागू होता है।
erm3nda

तो, यह देखते हुए कि wget में cURL, या इसके अलावा कई विशेषताएं हैं। यह POST कर सकता है, इसलिए यह वेबसाइटों पर लॉगिन कर सकता है। दिलचस्प।
erm3nda

1

अधिक जटिल वेबसाइट आधारित प्रवेशों के लिए आप भी एक अजगर स्क्रिप्ट और कुछ मॉड्यूल जो एक ब्राउज़र नकल की तरह उपयोग करने के लिए विचार करना चाहिए http://wwwsearch.sourceforge.net/mechanize/ के बजाय curlया wget

इस तरह सत्र कुकीज़ को स्वचालित रूप से नियंत्रित किया जाता है, आप लिंक का अनुसरण कर सकते हैं और लॉगिन फ़ॉर्म भर सकते हैं, और इसलिए लॉगिन प्रक्रिया के माध्यम से अपने आप को "स्क्रिप्ट" करें जैसे कि आपके वेब ब्राउज़र का उपयोग कर रहे हैं।


हाँ, मैकेनाइज का उपयोग करना वास्तव में अच्छा हो सकता है। Perl में भी (और मूल रूप से) उपलब्ध है, यदि वह आपकी चाय का कप है।
औरोल
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.