रेफ़र + कुकी का उपयोग करके wget के साथ डाउनलोड करना


1

मैं एक वेबसाइट से एक फ़ाइल डाउनलोड करने की कोशिश कर रहा हूं जिसमें लॉगिन की आवश्यकता होती है। यह आदेश cookie.txt को पुनः प्राप्त करता है और डाउनलोड किए गए HTML शो मैं लॉग इन (ठीक) करता हूं:

(मैंने पठनीयता के लिए लाइनों को तोड़ दिया)

wget 
--user-agent="Mozilla/5.0 (Windows NT 10.0; WOW64; rv:45.0) 
Gecko/20100101 Firefox/45.0" 
--keep-session-cookies
--save-cookies cookies.txt
--post-data "login_username=MyUserName&login_password=*******" 
--header="Host: somewebsite.com"
--header="Referer: http://somewebsite.com/files/download.php?i=2157716" 
http://somewebsite.com/login.php

यहां मुझे कुकीज़ मिल गई हैं। (सब ठीक है)। और उसके बाद: (डाउनलोड करने की कोशिश कर रहा है)

wget 
--user-agent="Mozilla/5.0 (Windows NT 10.0; WOW64; rv:45.0) 
Gecko/20100101 Firefox/45.0" 
--load-cookies cookies.txt
--header="Host: somewebsite.com"
--header="Referer: http://somewebsite.com/files/download.php?i=2157716" 
--header="Connection: keep-alive" --header="Accept-Language: en-US,en;q=0.5"
--header="Accept-Encoding: gzip, deflate"
http://somewebsite.com/files/dl.php?t=2157716

लेकिन फ़ाइल को डाउनलोड करने के बजाय यह कहकर एक HTML लौटाता है कि फ़ाइल केवल वेबसाइट से डाउनलोड की जा सकती है।

यहाँ डाउनलोड शुरू होने से ठीक पहले फ़ायरफ़ॉक्स से POST डेटा है:

वास्तविक फ़ायरफ़ॉक्स डाउनलोड से डेटा पोस्ट करें

क्या चीज़ छूट रही है?


हो सकता है कि आपको लगता है कि url डाउनलोड नहीं है। उदाहरण के लिए, wgetजावास्क्रिप्ट रीडायरेक्ट को हैंडल नहीं करता है।
ओरूरबोरस

जवाबों:


1

हल किया। HTML में एक छिपा हुआ रूप है जो POST के माध्यम से अनुरोध भेजता है। मुझे बस जोड़ना था --post-data "login_username=****&login_password=****"। सर्वर केवल डाउनलोड शुरू करता है यदि यह POST अनुरोध है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.