Πίνακας περιεχομένων:

Spidering μιας ιστοσελίδας του Ajax με μια ασύγχρονη φόρμα σύνδεσης: 6 βήματα (με εικόνες)
Spidering μιας ιστοσελίδας του Ajax με μια ασύγχρονη φόρμα σύνδεσης: 6 βήματα (με εικόνες)

Βίντεο: Spidering μιας ιστοσελίδας του Ajax με μια ασύγχρονη φόρμα σύνδεσης: 6 βήματα (με εικόνες)

Βίντεο: Spidering μιας ιστοσελίδας του Ajax με μια ασύγχρονη φόρμα σύνδεσης: 6 βήματα (με εικόνες)
Βίντεο: ZAP Tutorial - Ajax Spidering authenticated websites 2024, Νοέμβριος
Anonim
Spidering μιας ιστοσελίδας Ajax με μια ασύγχρονη φόρμα σύνδεσης
Spidering μιας ιστοσελίδας Ajax με μια ασύγχρονη φόρμα σύνδεσης

Το πρόβλημα: Τα εργαλεία Spidering δεν επιτρέπουν τον έλεγχο ταυτότητας σύνδεσης AJAX.

Αυτό το εκπαιδευτικό θα σας δείξει πώς να συνδεθείτε μέσω μιας φόρμας AJAX χρησιμοποιώντας Python και μια ενότητα που ονομάζεται Mechanize. Οι αράχνες είναι προγράμματα αυτοματισμού ιστού που γίνονται όλο και πιο δημοφιλείς για τους ανθρώπους να συλλέγουν δεδομένα στο διαδίκτυο. Σέρνονται γύρω από τον ιστό συλλέγοντας πολύτιμα υλικά για να τροφοδοτήσουν τις πιο ισχυρές εταιρείες ιστού γύρω. Άλλοι σέρνονται γύρω και συλλέγουν συγκεκριμένα σύνολα δεδομένων για να βελτιώσουν τη λήψη αποφάσεων, ή να συμπεράνουν τι είναι αυτή τη στιγμή ή να βρουν τις φθηνότερες διαδρομές ταξιδιού. Οι αράχνες (ανιχνευτές ιστού, webbots ή ξύστρες οθόνης) είναι εξαιρετικές για να μετατρέψουν το HTML goop σε κάποια εμφάνιση έξυπνων δεδομένων, αλλά έχουμε πρόβλημα όταν πρόκειται για ιστοσελίδες με δυνατότητα AJAX που διαθέτουν περιόδους σύνδεσης με JavaScript και cookie που δεν μπορούν να πλοηγηθούν με την κανονική σύνολο εργαλείων spidering. Σε αυτό το διδακτικό θα έχουμε πρόσβαση στη δική μας σελίδα μελών στη διεύθυνση pubmatic.com. Αυτά τα βήματα θα σας δείξουν μια μέθοδο που πρέπει να ακολουθήσετε, αλλά η σελίδα σας θα είναι διαφορετική. Καλα να περνατε!

Βήμα 1: Συγκέντρωση υλικών

Συγκεντρώστε υλικά
Συγκεντρώστε υλικά

Θα πρέπει να αρχίσετε να συμπληρώνετε τους πόρους προγραμματισμού σας. Θα χρειαστείτε τα παρακάτω προγράμματα. Χρησιμοποιήστε τους οδηγούς τους για να σας βοηθήσουν να τα εγκαταστήσετε… Εγκαταστήστε το Firebug Είναι ένα πρόσθετο Firefox Εγκαταστήστε το Python Πηγαίνετε στο: python.org Πηγαίνετε στο: python.orgΕγκαταστήστε το Mechanize ModuleGet MechanizeGet MechanizeΆλλα χρήσιμα εργαλεία Spidering: BeautifulSoup

Βήμα 2: Βρείτε τις κεφαλίδες που είναι απαραίτητες για τη δημιουργία μιας συνεδρίας

Μια καλά κατασκευασμένη αράχνη θα έχει πρόσβαση σε μια ιστοσελίδα σαν να ήταν ένα πρόγραμμα περιήγησης που ελέγχεται από έναν άνθρωπο κρατώντας ενδείξεις για την πραγματική του προέλευση κρυμμένη. Μέρος της αλληλεπίδρασης μεταξύ περιηγητών και διακομιστών συμβαίνει μέσω αιτημάτων GET και POST που μπορείτε να βρείτε στις κεφαλίδες (αυτές οι πληροφορίες σπάνια εμφανίζονται σε ένα πρόγραμμα περιήγησης, αλλά είναι πολύ σημαντικές). Μπορείτε να δείτε μερικές από αυτές τις πληροφορίες πατώντας Ctrl I (στον firefox) για να ανοίξετε το παράθυρο Πληροφορίες σελίδας. Για να μεταμφιεστείτε σε ένα πρόγραμμα περιήγησης με ήπια συμπεριφορά, πρέπει να προσδιορίσετε τον εαυτό σας χρησιμοποιώντας τα ίδια διαπιστευτήρια. Εάν προσπαθήσατε να συνδεθείτε στο pubmatic με απενεργοποιημένη την javascript στο πρόγραμμα περιήγησής σας, δεν θα φτάσετε πολύ, καθώς οι ανακατευθύνσεις γίνονται μέσω javascript. Επομένως, λαμβάνοντας υπόψη ότι τα περισσότερα προγράμματα περιήγησης αράχνη δεν έχουν διερμηνείς javascript, θα πρέπει να συνδεθούμε μέσω μιας εναλλακτικής διαδρομής. Ας ξεκινήσουμε με την αποστολή των πληροφοριών κεφαλίδας από το πρόγραμμα περιήγησης όταν κάνετε κλικ στην υποβολή. Εάν αυτό ήταν μια συνηθισμένη σύνδεση στο πρόγραμμα περιήγησης, θα χρησιμοποιούσατε το Mechanize για να συμπληρώσετε τη φόρμα και να κάνετε κλικ στην υποβολή. Οι κανονικές φόρμες σύνδεσης περικλείονται σε μια ετικέτα… και το Mechanize θα είναι σε θέση να το υποβάλει και να κάνει δημοσκόπηση στην επόμενη σελίδα χωρίς πρόβλημα. Δεδομένου ότι δεν έχουμε μια συμπληρωμένη ετικέτα φόρμας, η συνάρτηση υποβολής γίνεται με javascript. Ας ελέγξουμε τη λειτουργία submitForm του pubmatic. Για να το κάνετε αυτό, ανοίξτε πρώτα την ιστοσελίδα στον firefox και ενεργοποιήστε το firebug κάνοντας κλικ στην πυγολαμπίδα στην κάτω δεξιά γωνία. Στη συνέχεια, κάντε κλικ στην καρτέλα δέσμης ενεργειών, αντιγράψτε όλο τον κώδικα που εμφανίζεται και επικολλήστε τον στο αγαπημένο σας κομμάτι λογισμικού επεξεργασίας κειμένου. Στη συνέχεια, μπορείτε να διαγράψετε όλο τον κώδικα εκτός από τη συνάρτηση submitForm. Ξεκινά με τη συνάρτηση "submitForm (theform) {" και ό, τι υπάρχει ανάμεσα σε αυτό και τις συναρτήσεις που κλείνουν τη σγουρή αγκύλη "}". Κατά την ανάλυση αυτής της συνάρτησης πολύ πρωτόγονα, παρατηρούμε ότι συμβαίνει κάποιος έλεγχος ταυτότητας που φέρνει πίσω μια μεταβλητή που ονομάζεται xmldoc και αναλύεται ως xml. Αυτό είναι ένα βασικό χαρακτηριστικό του AJAX, έχει κάνει δημοσκόπηση στον διακομιστή και έφερε πίσω ένα έγγραφο XML που περιέχει ένα δέντρο πληροφοριών. Ο κόμβος session_id περιέχει το session_id εάν ο έλεγχος ταυτότητας ήταν επιτυχής, μπορείτε να το πείτε κοιτάζοντας αυτό το κομμάτι κώδικα: "if (session_id! = Null) {// login επιτυχής". Τώρα θέλουμε να αποτρέψουμε αυτό το κομμάτι javascript να μας οδηγήσει οπουδήποτε, ώστε να μπορούμε να δούμε τι δημοσιεύεται στον διακομιστή κατά τη διάρκεια του ελέγχου ταυτότητας. Για να γίνει αυτό, σχολιάζουμε τυχόν ανακατευθύνσεις παραθύρων που μοιάζουν με αυτό: "window.location =…". Για να το σχολιάσετε, προσθέστε διπλές καμπύλες πριν από αυτές όπως: "//window.location…" αυτό εμποδίζει την εκτέλεση του κώδικα. Μπορείτε να κατεβάσετε το αρχείο Javascript παρακάτω το οποίο έχει ήδη πραγματοποιήσει αυτές τις τροποποιήσεις. Αντιγράψτε και επικολλήστε αυτό το επεξεργασμένο κομμάτι javascript στα παράθυρα της κονσόλας στη δεξιά πλευρά και κάντε κλικ στην εκτέλεση. Αυτό παρακάμπτει τη συνάρτηση javascript που υπάρχει ήδη στη σελίδα με τη νέα μας έκδοση. Τώρα, όταν συμπληρώνετε τα διαπιστευτήριά σας και κάνετε κλικ στην υποβολή, θα πρέπει να δείτε πληροφορίες κεφαλίδας POST και GET που γεμίζουν την κονσόλα, αλλά δεν πρόκειται να πάτε πουθενά. Οι πληροφορίες POST είναι οι πληροφορίες που μεταφέρονται στον διακομιστή από τις λειτουργίες AJAX, θέλετε να είστε το ίδιο όπως αυτό γίνεται, αντιγράψτε και επικολλήστε αυτές τις πληροφορίες στο σημειωματάριο.

Βήμα 3: Προετοιμάστε τον Κώδικα

Πριν προσθέσουμε τις νέες κεφαλίδες που βρήκαμε, ας δημιουργήσουμε έναν πρότυπο Mechanize κωδικό python σύνδεσης. Το κάνουμε αυτό για δύο λόγους, πρώτον, ώστε να έχουμε ένα στοιχείο που λειτουργεί για να προσθέσει νέα πράγματα και δεύτερον, για να δείτε πώς θα συνδεθείτε κανονικά σε μια ιστοσελίδα που δεν είναι AJAX-y. Ανοίξτε σημειωματάριο ή ισοδύναμο και αντιγράψτε και επικολλήστε ΕΠΟΜΕΝΟ. Όταν τελειώσετε, αποθηκεύστε το ως youfilename.py κάπου που μπορείτε να βρείτε.#!/Usr/bin/python#-*-κωδικοποίηση: utf-8-*-#Ξεκινήστε με τις εισαγωγές της μονάδας σας: από τη μηχανική εισαγωγή προγράμματος περιήγησης#Δημιουργία παρουσία προγράμματος περιήγησης μέσω της κλήσης λειτουργίας Browser (); br = Browser ()#Ρυθμίστε το πρόγραμμα περιήγησης έτσι ώστε να αγνοεί τις αράχνες. αιτήματα κειμένου#Κάντε αυτό προσεκτικά, αν η ιστοσελίδα δεν αρέσει στις αράχνες, μπορεί να είναι ενοχλημένοι που σας βρίσκουν εκεί.set_handle_robots (Λάθος) #Ανοίξτε τη σελίδα στην οποία θέλετε να συνδεθείτε tobr.open ("https://pubmatic.com/04_betasignin.jsp") #Επειδή γνωρίζω το όνομα της φόρμας, μπορώ απλά να επιλέξω τη φόρμα με το όνομαbr.select_form ("login")#Χρησιμοποιώντας τα ονόματα των στοιχείων φόρμας εισάγω τα ονόματα της φόρμας στοιχείαbr ['email'] = "[email protected]" br ['password'] = "Asquid22"#br.submit () στέλνει τη φόρμα και τραβάει τη σελίδα που προκύπτει, δημιουργείτε μια νέα παρουσία προγράμματος περιήγησης#η απάντηση παρακάτω περιέχει την προκύπτουσα σελίδα

Βήμα 4: Στείλτε τα σωστά σήματα

Στείλτε τα σωστά σήματα
Στείλτε τα σωστά σήματα

Το Mechanize έχει μια εύκολη λειτουργία για την προσθήκη κεφαλίδων στις επικεφαλίδες POST, αυτό θα μας επιτρέψει να εμφανιστούμε στο ίδιο πρόγραμμα περιήγησης που χρησιμοποιήσατε για να αποκτήσετε πρόσβαση στη σελίδα την πρώτη φορά. Ανοίξτε το αρχείο με κεφαλίδες που βρήκατε χρησιμοποιώντας το Firebug και επεξεργαστείτε αυτό το αρχείο κειμένου για να ταιριάζει. Αντικαταστήστε τα πάντα στα εισαγωγικά με το κατάλληλο στοιχείο από τη λίστα κεφαλίδων: USER_AGENT = "Mozilla/5.0 (X11; U; Linux i686; tr-TR; rv: 1.8.1.9) Gecko/20071102 Pardus/2007 Firefox/2.0.0.9" HOST = "pubmatic.com" ACCEPT = "text/xml, application/xml, application/xhtml+xml, text/html; q = 0.9, text/plain; q = 0.8, image/png, */ *; q = 0,5 "ACCEPT_LANGUAGE =" en-us, en; q = 0,5 "ACCEPT_ENCODING =" gzip, ξεφουσκώστε "ACCEPT_CHARSET =" ISO-8859-1, utf-8; q = 0,7, *; q = 0,7 "KEEP_ALIVE =" 300 " ΣΥΝΔΕΣΗ = "keep-alive" CONTENT_TYPE = "application / x-www-form-urlencoded" REFERER = "https://pubmatic.com/04_betasignin.jsp"CONTENT_LENGTH = "60" cookie =" utma = 103266945.1970108054.1210113004.1212104087.1212791201.20; KADUSERCOOKIE = EA2C3249-E822-456E-847A-1FF0D4085A85; utmz = 103266945.1210113004.1.1.utmccn = (άμεσο) | utmcsr = (άμεσο) | utmcmd = (μηδέν) no-cache "CACHE_CONTROL =" no-cache "Αυτό δημιουργεί ένα σύνολο μεταβλητών που μπορείτε στη συνέχεια να χρησιμοποιήσετε για να προσθέσετε στην κεφαλίδα μας στον κωδικό αυτό: br.add_header = [("Host", HOST)] br.add_headers = [("User-agent", USER_AGENT)] br.add_headers = [("Accept", ACCEPT)] br.add_header = [("Accept-Language", ACCEPT_LANGUAGE)] br.add_headers = [("Accept-Encoding", ACCEPT_ENCODING)] br.add_headers = [("Accept-Charset", ACCEPT_CHARSET)] br.add_header = [("Keep-Alive ", KEEP_ALIVE)] br.add_headers = [(" Connection ", CONNECTION)] br.add_header = [(" Content-Type ", CONTENT_TYPE)] br.add_header = [(" Referer ", REFERER)] br.add_header = [("Content-Length", CONTENT_LENGTH)] br.add_headers = [("Cookie", COOKIE)] br.add_headers = [("Pragma", PRAGMA)] br.add_headers = [("Cache-Control", CACHE_CONTROL)] Τώρα όταν καλέσουμε τη λειτουργία ανοίγματος σελίδας, οι κεφαλίδες θα σταλούν επίσης στο διακομιστή. br.open ("https://pubmatic.com/04_betasignin.jsp")

Βήμα 5: Μηχανοποιημένα Cookies

Μηχανοποιημένα Cookies
Μηχανοποιημένα Cookies

Αυτό το βήμα συμβαίνει επειδή η μηχανοποίηση αυτοματοποιεί το χειρισμό cookie, αλλά είναι σημαντικό να γνωρίζουμε τι συμβαίνει:

Όταν υποβάλλεται η φόρμα έχετε τις σωστές κεφαλίδες σαν να υποβάλατε χρησιμοποιώντας τη συνάρτηση javascript. Στη συνέχεια, ο διακομιστής πιστοποιεί αυτές τις πληροφορίες και δημιουργεί ένα αναγνωριστικό περιόδου σύνδεσης και το αποθηκεύει σε ένα cookie εάν το όνομα χρήστη και ο κωδικός πρόσβασης είναι σωστά. Τα καλά νέα είναι ότι το Mechanize τρώει και επαναφέρει αυτόματα cookie, ώστε να μην χρειάζεται να ανησυχείτε για την αποστολή και λήψη του cookie. Έτσι, μόλις δημιουργήσετε ένα αναγνωριστικό περιόδου λειτουργίας που λειτουργεί, μπορείτε στη συνέχεια να εισαγάγετε την ενότητα μόνο για μέλη του ιστότοπου.

Βήμα 6: Κλειδί για την καρδιά

Τώρα που αποκτήσαμε ένα αναγνωριστικό περιόδου σύνδεσης και το Mechanize το αποθηκεύσαμε στα cookie του, μπορούμε να ακολουθήσουμε το javascript για να δούμε πού πρέπει να πάμε. Κοιτάζοντας μέσα στο "if (session_id! = Null) {// login success" για να δείτε πού να συνεχίσετε με επιτυχία. Κοιτάζοντας τον κωδικό μετεγκατάστασης παραθύρου: "if (adurlbase.search (/pubmatic.com/)! = -1) {window.location =" https://pubmatic.com/05_homeloggedin.jsp " +"? V = " + Math.random ()*10000; " βλέπουμε ότι πρέπει να μεταβούμε σε έναν ιστότοπο που βρίσκεται στη διεύθυνση https://pubmatic.com/05_homeloggedin.jsp?v= μερικός τυχαίος αριθμός. Ας δημιουργήσουμε λοιπόν έναν ψεύτικο τυχαίο αριθμό για να εισάγουμε και να δημιουργήσουμε ένα νέο στιγμιότυπο προγράμματος περιήγησης για να διαβάσετε τη νέα σελίδα: respond2 = br.open ("https://pubmatic.com/05_homeloggedin.jsp?v=2703") Και αυτό πρέπει να είναι Ο κωδικός σας είναι πλέον πλήρης, χρησιμοποιώντας τις κατάλληλες κεφαλίδες και μηχανοποιήστε τον χειριστή cookie, μπορούμε τώρα να έχουμε πρόσβαση στα εσωτερικά του pubmatic. Ανοίξτε το τερματικό, φορτώστε το πακέτο python παρακάτω και συνδεθείτε μακριά. Για να κάνετε αυτόν τον τύπο python2.5 και στη συνέχεια το pathpath στο αρχείο.py.

Συνιστάται: