विषयसूची:

अतुल्यकालिक लॉगिन फॉर्म के साथ एक अजाक्स वेबसाइट को स्पाइडर करना: 6 चरण (चित्रों के साथ)
अतुल्यकालिक लॉगिन फॉर्म के साथ एक अजाक्स वेबसाइट को स्पाइडर करना: 6 चरण (चित्रों के साथ)

वीडियो: अतुल्यकालिक लॉगिन फॉर्म के साथ एक अजाक्स वेबसाइट को स्पाइडर करना: 6 चरण (चित्रों के साथ)

वीडियो: अतुल्यकालिक लॉगिन फॉर्म के साथ एक अजाक्स वेबसाइट को स्पाइडर करना: 6 चरण (चित्रों के साथ)
वीडियो: ZAP Chat 10 Automation Framework Part 4 - Spidering 2024, जुलाई
Anonim
अतुल्यकालिक लॉगिन फॉर्म के साथ एक अजाक्स वेबसाइट को स्पाइडर करना
अतुल्यकालिक लॉगिन फॉर्म के साथ एक अजाक्स वेबसाइट को स्पाइडर करना

समस्या: स्पाइडरिंग टूल AJAX लॉगिन प्रमाणीकरण की अनुमति नहीं देते हैं।

यह निर्देश आपको दिखाएगा कि पायथन और मैकेनाइज नामक एक मॉड्यूल का उपयोग करके AJAX फॉर्म के माध्यम से कैसे लॉगिन किया जाए। स्पाइडर वेब ऑटोमेशन प्रोग्राम हैं जो लोगों के लिए ऑनलाइन डेटा एकत्र करने का तेजी से लोकप्रिय तरीका बन रहे हैं। वे आसपास की सबसे शक्तिशाली वेब कंपनियों को ईंधन देने के लिए कीमती सामग्री इकट्ठा करने वाले वेब के चारों ओर रेंगते हैं। अन्य लोग क्रॉल करते हैं और निर्णय लेने में सुधार करने के लिए डेटा के विशिष्ट सेट एकत्र करते हैं, या अनुमान लगाते हैं कि वर्तमान में "इन" क्या है, या सबसे सस्ता यात्रा मार्ग खोजें। स्पाइडर (वेब क्रॉलर, वेबबॉट्स, या स्क्रीन स्क्रेपर्स) एचटीएमएल गोप को कुछ बुद्धिमान डेटा में बदलने के लिए महान हैं, लेकिन हमें एक समस्या है जब AJAX सक्षम वेबपेजों की बात आती है जिनमें जावास्क्रिप्ट और कुकी सक्षम सत्र होते हैं जो सामान्य के साथ नेविगेट करने योग्य नहीं होते हैं स्पाइडरिंग टूल्स का सेट। इस निर्देशयोग्य में हम pubmatic.com पर अपने स्वयं के सदस्य पृष्ठ पर पहुंचेंगे। ये चरण आपको अनुसरण करने की एक विधि दिखाएंगे, लेकिन आपका पृष्ठ अलग होगा। मज़े करो!

चरण 1: सामग्री इकट्ठा करें

सामग्री इकट्ठा करें
सामग्री इकट्ठा करें

आपको अपने प्रोग्रामिंग संसाधनों को पूरक करना शुरू करना होगा। आपको निम्नलिखित कार्यक्रमों की आवश्यकता होगी। इन्हें स्थापित करने में आपकी सहायता के लिए उनके गाइड का उपयोग करें… फायरबग स्थापित करेंयह एक फ़ायरफ़ॉक्स ऐडऑन हैपायथन स्थापित करें: python.orgइस पर जाएं: python.org मैकेनाइज मॉड्यूल स्थापित करें मैकेनाइज प्राप्त करें अन्य उपयोगी स्पाइडरिंग टूल प्राप्त करें: ब्यूटीफुल सूप

चरण 2: सत्र बनाने के लिए आवश्यक शीर्षलेख खोजें।

एक अच्छी तरह से तैयार किया गया मकड़ी एक वेबपेज तक पहुंचेगा जैसे कि यह एक ब्राउज़र था जिसे एक इंसान द्वारा नियंत्रित किया जा रहा था क्योंकि यह सुराग रखता है कि इसकी असली उत्पत्ति छिपी हुई है। ब्राउज़र और सर्वर के बीच बातचीत का एक हिस्सा GET और POST अनुरोधों के माध्यम से होता है जो आप हेडर में पा सकते हैं (यह जानकारी शायद ही कभी ब्राउज़र पर प्रदर्शित होती है, लेकिन बहुत महत्वपूर्ण है)। पृष्ठ जानकारी विंडो खोलने के लिए आप Ctrl I (फ़ायरफ़ॉक्स में) दबाकर कुछ जानकारी देख सकते हैं। अपने आप को एक हल्के व्यवहार वाले ब्राउज़र के रूप में छिपाने के लिए आपको उन्हीं क्रेडेंशियल्स का उपयोग करके अपनी पहचान बनानी होगी। यदि आपने अपने ब्राउज़र में जावास्क्रिप्ट अक्षम के साथ पबमैटिक में लॉग इन करने का प्रयास किया है तो आप बहुत दूर नहीं होंगे क्योंकि रीडायरेक्ट जावास्क्रिप्ट के माध्यम से किए जाते हैं। इसलिए यह देखते हुए कि अधिकांश स्पाइडर ब्राउज़र में जावास्क्रिप्ट दुभाषिए नहीं होते हैं, हमें एक वैकल्पिक मार्ग के माध्यम से लॉगिन करना होगा। जब आप सबमिट पर क्लिक करते हैं, तो ब्राउज़र से हेडर जानकारी भेजकर शुरुआत करते हैं। यदि यह एक सामान्य ब्राउज़र लॉगिन होता तो आप फ़ॉर्म भरने के लिए मैकेनाइज़ का उपयोग करते और सबमिट पर क्लिक करते। सामान्य लॉगिन फॉर्म एक … टैग के भीतर समाहित होते हैं और मैकेनाइज इसे सबमिट करने और अगले पृष्ठ को बिना किसी परेशानी के मतदान करने में सक्षम होगा। चूंकि हमारे पास एक पूर्ण फॉर्म टैग नहीं है, इसलिए सबमिट करने का कार्य जावास्क्रिप्ट द्वारा नियंत्रित किया जा रहा है। आइए पबमैटिक के सबमिटफॉर्म फ़ंक्शन की जांच करें। ऐसा करने के लिए, पहले फ़ायरफ़ॉक्स में वेबपेज खोलें और निचले दाएं कोने में जुगनू पर क्लिक करके फायरबग को चालू करें। फिर स्क्रिप्ट टैब पर क्लिक करें, दिखाई देने वाले सभी कोड को कॉपी करें और इसे अपने पसंदीदा टेक्स्ट एडिटिंग बिट सॉफ्टवेयर में पेस्ट करें। फिर आप सबमिटफॉर्म फ़ंक्शन को छोड़कर सभी कोड हटा सकते हैं। यह फ़ंक्शन "submitForm (theform) {" और इसके बीच में सब कुछ और घुंघराले ब्रैकेट को बंद करने वाले फ़ंक्शन "}" से शुरू होता है। इस फ़ंक्शन का बहुत ही प्रारंभिक रूप से विश्लेषण करने पर हम देखते हैं कि कुछ प्रमाणीकरण xmldoc नामक एक चर को वापस लाते हैं जिसे xml के रूप में पार्स किया जा रहा है। यह AJAX की एक प्रमुख विशेषता है, इसने सर्वर को पोल किया है और कुछ XML दस्तावेज़ों को वापस लाया है जिसमें सूचना का एक वृक्ष है। नोड session_id में session_id होता है यदि प्रमाणीकरण सफल होता है, तो आप इसे इस बिट कोड को देखकर बता सकते हैं: "if (session_id!= null) {//login सफल"। अब हम जावास्क्रिप्ट के इस बिट को हमें कहीं भी ले जाने से रोकना चाहते हैं ताकि हम देख सकें कि प्रमाणीकरण के दौरान सर्वर पर क्या पोस्ट किया जा रहा है। ऐसा करने के लिए हम किसी भी विंडो रीडायरेक्ट पर टिप्पणी करते हैं जो इस तरह दिखता है: "window.location=…"। इस पर टिप्पणी करने के लिए उनके सामने डबल स्लैश जोड़ें जैसे: "//window.location…" यह कोड को चलने से रोकता है। आप नीचे दी गई जावास्क्रिप्ट फ़ाइल को डाउनलोड कर सकते हैं जिसमें ये संपादन पहले ही हो चुके हैं। जावास्क्रिप्ट के इस संपादित बिट को कंसोल विंडो में दाईं ओर कॉपी और पेस्ट करें और रन पर क्लिक करें। यह हमारे नए संस्करण के साथ पेज में पहले से मौजूद जावास्क्रिप्ट फ़ंक्शन को ओवरराइड करता है। अब जब आप अपने क्रेडेंशियल्स भरते हैं और सबमिट पर क्लिक करते हैं तो आपको POST और GET हेडर की जानकारी कंसोल को भरते हुए देखना चाहिए, लेकिन आप कहीं नहीं जा रहे हैं। POST जानकारी AJAX फ़ंक्शन द्वारा सर्वर पर शूट की गई जानकारी है, आप उतना ही बनना चाहते हैं इस तरह जितना संभव हो, उस जानकारी को नोटपैड में कॉपी और पेस्ट करें।

चरण 3: कोड तैयार करें

नए हेडर जोड़ने से पहले हमने पाया है कि एक टेम्प्लेटेड मैकेनाइज लॉगिन पायथन कोड बनाते हैं। हम ऐसा दो कारणों से कर रहे हैं, पहला तो हमारे पास एक घटक है जो नई सामग्री को जोड़ने के लिए काम करता है और दूसरा ताकि आप देख सकें कि आप सामान्य रूप से एक गैर AJAX-y वेबपेज पर कैसे लॉगिन करेंगे। नोटपैड या समकक्ष खोलें, और कॉपी और पेस्ट करें निम्नलिखित। जब आप पूरा कर लें तो इसे youfilename.py के रूप में सेव करें जहां आप पा सकते हैं। ब्राउजर () फंक्शन कॉल के जरिए ब्राउजर इंस्टेंस; बीआर = ब्राउजर ()# ब्राउजर को इस तरह से सेट करें कि वह स्पाइडर को नजरअंदाज कर दे।.set_handle_robots(False) # जिस पेज पर आप लॉग इन करना चाहते हैं, उसे खोलें। ("लॉगिन")# प्रपत्र तत्वों के नामों का उपयोग करके मैं प्रपत्र तत्वों के नाम दर्ज करता हूंbr['email'] = "[email protected]"br['password'] = "Asquid22"#br.submit () फॉर्म भेजता है और परिणामी पृष्ठ को खींचता है, आप एक नया ब्राउज़र उदाहरण बनाते हैं#प्रतिक्रिया में परिणामी पृष्ठ प्रतिक्रिया = br.submit () # यह प्राप्त वेबपेज के मुख्य भाग को प्रिंट करेगा # प्रिंट प्रतिक्रिया। पढ़ें ()

चरण 4: सही संकेत भेजें।

सही संकेत भेजें।
सही संकेत भेजें।

शीर्षलेख POST में हेडर जोड़ने के लिए मैकेनाइज़ का एक आसान कार्य है, यह हमें उसी ब्राउज़र में प्रदर्शित करने में सक्षम करेगा जिसका उपयोग आपने पहली बार पृष्ठ तक पहुँचने के लिए किया था। फ़ायरबग का उपयोग करके आपको मिले शीर्षलेखों के साथ फ़ाइल खोलें और मिलान करने के लिए इस टेक्स्ट फ़ाइल को संपादित करें। शीर्ष लेख सूची से उचित आइटम के साथ उद्धरणों में सब कुछ बदलें:USER_AGENT = "मोज़िला/5.0 (X11; U; Linux i686; tr-TR; rv:1.8.1.9) Gecko/20071102 Pardus/2007 Firefox/2.0.0.9" होस्ट = "pubmatic.com" स्वीकार करें = "टेक्स्ट/एक्सएमएल, एप्लिकेशन/एक्सएमएल, एप्लिकेशन/एक्सएचटीएमएल+एक्सएमएल, टेक्स्ट/एचटीएमएल;क्यू=0.9, टेक्स्ट/प्लेन;क्यू=0.8, इमेज/पीएनजी, */*;क्यू= 0.5"ACCEPT_LANGUAGE = "en-us, en;q=0.5"ACCEPT_ENCODING = "gzip, deflate"ACCEPT_CHARSET = "ISO-8859-1, utf-8;q=0.7, *;q=0.7"KEEP_ALIVE = "300" CONNECTION = "कीप-अलाइव" CONTENT_TYPE = "एप्लिकेशन/x-www-form-urlencoded"REFERER = "https://pubmatic.com/04_betasignin.jsp"CONTENT_LENGTH = "60"COOKIE = "utma=103266945.1970108054.1210113004.121210.2087.; KADUSERCOOKIE=EA2C3249-E822-456E-847A-1FF0D4085A85; utmz=103266945.1210113004.1.1.utmccn=(direct)|utmcsr=(direct)|utmcmd=(कोई नहीं); no-cache"CACHE_CONTROL ="no-cache" यह वेरिएबल का एक सेट बनाता है जिसका उपयोग आप हमें हेडर में जोड़ने के लिए कर सकते हैं इस कोड में:br.add_header = [("होस्ट", HOST)]br.add_headers = [("उपयोगकर्ता-एजेंट", USER_AGENT)]br.add_headers = [("स्वीकार करें", ACCEPT)]br.add_header = [("स्वीकार-भाषा", ACCEPT_LANGUAGE)]br.add_headers = [("स्वीकार-एन्कोडिंग", ACCEPT_ENCODING)]br.add_headers = [("स्वीकार-वर्णसेट", ACCEPT_CHARSET)]br.add_header = [("रखें-जीवित रहें ", KEEP_ALIVE)]br.add_headers = [("Connection", CONNECTION)]br.add_header = [("Content-Type", CONTENT_TYPE)]br.add_header = [("Referer", REFERER)]br.add_header = [("सामग्री-लंबाई", CONTENT_LENGTH)]br.add_headers = [("कुकी", कुकी)]br.add_headers = [("प्राग्मा", PRAGMA)]br.add_headers = [("कैश-कंट्रोल", CACHE_CONTROL)] अब जब हम पेज ओपन फंक्शन को कॉल करते हैं तो हेडर सर्वर पर भी भेजे जाएंगे। br.open ("https://pubmatic.com/04_betasignin.jsp")

चरण 5: यंत्रीकृत कुकीज़

यंत्रीकृत कुकीज़
यंत्रीकृत कुकीज़

यह कदम इसलिए है क्योंकि मशीनीकरण कुकी प्रबंधन को स्वचालित करता है, लेकिन यह जानना महत्वपूर्ण है कि क्या हो रहा है:

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

चरण 6: दिल की कुंजी

अब जब हमने एक सत्र आईडी प्राप्त कर ली है और मैकेनाइज ने इसे अपनी कुकीज़ में सहेज लिया है तो हम यह देखने के लिए जावास्क्रिप्ट का अनुसरण कर सकते हैं कि हमें कहां जाना है। सफलता के लिए कहां जाना है, यह देखने के लिए "if (session_id != null) {//login सफल" के अंदर देखें। विंडो रिलोकेशन कोड को देखते हुए: "if (adurlbase.search(/pubmatic.com/) != -1) {window.location="https://pubmatic.com/05_homeloggedin.jsp" + "?v=" + गणित.यादृच्छिक ()*१००००;" हम देखते हैं कि हमें https://pubmatic.com/05_homeloggedin.jsp?v=some random number पर स्थित वेबसाइट पर जाने की आवश्यकता है। तो चलिए दर्ज करने के लिए एक नकली रैंडम नंबर बनाते हैं और नए खुले हुए पेज को पढ़ने के लिए एक नया ब्राउज़र इंस्टेंस बनाते हैं:response2 = br.open("https://pubmatic.com/05_homeloggedin.jsp?v=2703")और वह होना चाहिए यह हो। आपका कोड अब पूरा हो गया है, उचित हेडर का उपयोग करके और कुकी हैंडलर को मशीनीकृत करके हम अब पबमैटिक के अंदरूनी हिस्सों तक पहुंच सकते हैं। टर्मिनल खोलें, नीचे पायथन पैकेज लोड करें और लॉग इन करें। ऐसा करने के लिए.py फ़ाइल में python2.5 और फिर फ़ाइलपथ टाइप करें।

सिफारिश की: