कर्ल का उपयोग करके वेब अनुरोधों को स्वचालित करना?


13

मेरे पास कुछ "कॉर्पोरेटिव" सिस्टम हैं जिनका मुझे काम में उपयोग करना है। उनमें से कुछ भयानक हैं, फ्रेम, पॉप-अप और ऐसे।

मैं कर्ल या ऐसा कुछ का उपयोग करके कुछ सामान को स्वचालित करने के बारे में सोच रहा था। मुझे लॉगिन की आवश्यकता है, हाइपरलिंक पर क्लिक करें, कुछ डेटा सेट करें, और वे कुछ पोस्ट करते हैं।

क्या कर्ल का उपयोग करना संभव है? या मैं सेलेनियम की तरह कुछ का उपयोग करने के लिए बेहतर हो रहा हूँ?


1
मैं उस के लिए पायथन के zope.testbrowser का उपयोग करूंगा
फुनेहे

2
क्या आपको जावास्क्रिप्ट का उपयोग करने में सक्षम होना चाहिए?
intuited


2
सत्र का उपयोग करना प्रत्येक अनुरोध के साथ सत्र आईडी भेजना है। या तो कुकी में या जीईटी पैरामीटर में। wgetऔर curlनेटस्केप कुकी फ़ाइल का उपयोग कर सकते हैं, इसलिए यदि आपका ब्राउज़र भी इस तरह का उपयोग करता है, तो यह केवल डाउनलोडर को निर्दिष्ट करने के लिए पर्याप्त हो सकता है। तो, आप किस तरह के ब्राउज़र का उपयोग कर रहे हैं?
मैनटवर्क

2
उन लोगों के साथ एक सरल समाधान के लिए कोई भाग्य नहीं। फ़ायरफ़ॉक्स और क्रोम SQLite का उपयोग करता है, ओपेरा में एक बाइनरी डेटा फ़ाइल प्रारूप है। ऐसा लगता है कि आपको सत्र आईडी की खोज करनी होगी और इसे डाउनलोडर को मैन्युअल रूप से पास करना होगा।
मैनटवर्क

जवाबों:


13

हां, यह पूरी तरह से कर्ल के साथ संभव है। सबसे महत्वपूर्ण बात यह है कि कर्ल के उपयोग के बीच कुकीज़ को सहेजना और पुनः लोड करना होगा --cookie-jar। आवश्यकतानुसार फॉर्म डेटा भी पोस्ट कर सकते हैं। जब मैं किसी वेबसाइट पर नेविगेट करता हूं तो कैप्चर करने के लिए मैं आमतौर पर लाइव HTTP हेडर्स नामक फ़ायरफ़ॉक्स ऐड का उपयोग करता हूं। यह किसी भी हेडर को रिकॉर्ड करेगा, लेकिन किसी भी फॉर्म पोस्ट को भी, जो कर्ल के साथ क्या करना है, यह पता लगाने में बहुत मददगार है। मैंने विभिन्न कर्ल इनवोकेशन को स्वचालित करने के लिए बैश स्क्रिप्ट लिखी है और mktempवेबपेज पर कुछ सीमित प्रसंस्करण करने के लिए पाइप और अस्थायी फ़ाइलों (शिष्टाचार ) का उपयोग किया है, लेकिन अगर बहुत सारे वेबपेज प्रसंस्करण करना है तो मैं आमतौर पर LiblWW के साथ पर्ल पर स्विच करता हूं।


फ़ायरफ़ॉक्स लाइव HTTP हेडर्स के अलावा, सफारी और क्रोम दोनों वेब इंस्पेक्टर में ऑब्जेक्ट द्वारा टूटे हुए हेडर को प्रदर्शित कर सकते हैं।
भामत

15

किसी पृष्ठ की सामग्री को डाउनलोड करने के सरल मामलों के लिए, कर्ल या विग का उपयोग करें । दोनों कमांड लाइन टूल हैं जो HTTP पर फाइलें डाउनलोड करने के लिए डिज़ाइन किए गए हैं और कई विकल्प हैं। आपके मामले में, आपको इन उपकरणों को एक ब्राउज़र की तरह अधिक दिखने की संभावना होगी; लुट्स्की के जवाब और पेंगुइन 359 के जवाब में कुछ कर्ल और वेट विकल्पों का उल्लेख है जो उस संबंध में उपयोगी हैं।

कभी-कभी, जब आपको लॉग इन करने की आवश्यकता होती है , तो पहले वेब ब्राउज़र में मैन्युअल रूप से लॉग इन करना बहुत आसान होता है, फिर वेब ब्राउज़र की कुकीज़ ( ऑलूक्यूज जैसे एक्सटेंशन या फ़ायरफ़ॉक्स के लिए एक्सपोर्ट कुकीज़ ) मदद कर सकते हैं।

यदि आपको कुछ पृष्ठों या पोस्ट फ़ॉर्म की सामग्री को पार्स करने की आवश्यकता है , तो आपको कर्ल और विग की तुलना में कट्टर उपकरण की आवश्यकता हो सकती है। कुछ अच्छे उपकरण वहाँ पर्ल (libwww) और (HTML- ट्री) या मानक पुस्तकालयों (विशेष रूप से और ) के साथ पायथन हैं ।LWPHTML::TreeBuilderhttplibhtmllib

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

अंत में, जब आपको जावास्क्रिप्ट की आवश्यकता होती है , तो सामान्य दृष्टिकोण वेब ब्राउज़र का उपयोग करना होता है जो ब्राउज़र ऑटोमेशन फ्रेमवर्क द्वारा संचालित होता है। सेलेनियम और वतिर लोकप्रिय विकल्प हैं; यह भी देखें कि क्या सेलेनियमआरसी के अलावा कोई अच्छा उपकरण है जो जावास्क्रिप्ट द्वारा कंटेंट पोस्ट-पेंट सहित वेबपेज ला सकता है?


6

मेरा पसंदीदा है wget, इसलिए मैं इसके साथ एक उदाहरण दूंगा। आप जो करना चाहते हैं, वह आपके ब्राउज़र सत्र को यथासंभव बारीकी से दोहराता है, इसलिए संबंधित कमांडलाइन तर्कों का उपयोग करें। जो आवश्यक हैं वे इस बात पर निर्भर करते हैं कि साइट आपके ब्राउज़र की कितनी अच्छी तरह जांच करती है। --referer(sic) आमतौर पर पर्याप्त है, लेकिन आप भी आवश्यकता हो सकती है --user-agentऔर --load-cookies

यह तकनीक मूल रूप से ब्राउज़र स्पूफिंग है - आप wgetखुद को ब्राउज़र के रूप में साइट पर पेश करने की कोशिश कर रहे हैं । आपके द्वारा सामना की जा रही सबसे बड़ी समस्या कैप्चा है, जो आपके द्वारा दिए गए उदाहरण साइट में मौजूद नहीं है। इसके अलावा, सुनिश्चित करें कि आप साइट की समय की नीतियों (इस मामले में 45 सेकंड) का पालन करते हैं, या आप शायद अवरुद्ध हो जाएंगे।

यह शायद है नहीं साइट किसी खास सत्र के लिए विशिष्ट फ़ाइल पर विशेषाधिकार डाउनलोड करने अनुदान - संभव विभिन्न सत्रों में एक ही फाइल डाउनलोड करने के लिए।


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