Πίνακας περιεχομένων:
- Βήμα 1: Συγκέντρωση υλικών
- Βήμα 2: Βρείτε τις κεφαλίδες που είναι απαραίτητες για τη δημιουργία μιας συνεδρίας
- Βήμα 3: Προετοιμάστε τον Κώδικα
- Βήμα 4: Στείλτε τα σωστά σήματα
- Βήμα 5: Μηχανοποιημένα Cookies
- Βήμα 6: Κλειδί για την καρδιά
Βίντεο: Spidering μιας ιστοσελίδας του Ajax με μια ασύγχρονη φόρμα σύνδεσης: 6 βήματα (με εικόνες)
2024 Συγγραφέας: John Day | [email protected]. Τελευταία τροποποίηση: 2024-01-30 08:39
Το πρόβλημα: Τα εργαλεία 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
Αυτό το βήμα συμβαίνει επειδή η μηχανοποίηση αυτοματοποιεί το χειρισμό 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.
Συνιστάται:
Επαναχρησιμοποίηση της επιφάνειας αφής του παλιού φορητού υπολογιστή για τον έλεγχο μιας βηματικής μηχανής: 11 βήματα (με εικόνες)
Επαναχρησιμοποιήστε το Touchpad του Old Laptop για τον έλεγχο ενός Stepper Motor: Έφτιαξα αυτό το έργο πριν από μερικούς μήνες. Λίγες μέρες πριν, δημοσίευσα ένα βίντεο του έργου στο r/Arduino στο Reddit. Βλέποντας τους ανθρώπους να ενδιαφέρονται για το έργο, αποφάσισα να κάνω αυτό το Instructable όπου έχω κάνει κάποιες αλλαγές στον κώδικα Arduino
Φτιάξτε μια φόρμα κρυστάλλινου ραδιοπηνίου: 7 βήματα
Φτιάξτε μια φόρμα Crystal Radio Coil: Αυτό το Instructable θα σας βοηθήσει να φτιάξετε έναν ισχυρό και σταθερό σωλήνα στον οποίο θα τυλίξετε ένα πηνίο σύρματος. Τα κρυστάλλινα ραδιόφωνα ή τα ραδιόφωνα "foxhole" είναι ακόμα διασκεδαστικά, εκατό χρόνια αφότου τα αγόρια και τα κορίτσια άρχισαν να τα κατασκευάζουν στα πρώτα χρόνια του ραδιοφώνου. Ενώ πολλά πράγματα
Δημιουργήστε μια βάση σύνδεσης IPod από μια μικρή βάση σύνδεσης IPod: 5 βήματα
Δημιουργήστε μια βάση σύνδεσης IPod από μια μίνι βάση σύνδεσης IPod: Εξηγεί πώς να μετατρέψετε εύκολα μια παλιά βάση σύνδεσης που προορίζεται για ένα ipod mini για χρήση με ένα ipod nano (και η πρώτη και η δεύτερη γενιά μία φορά). Γιατί; Αν σας αρέσει είχα ένα iPod μίνι και πήρε την αποβάθρα για αυτό, και τώρα αγόρασε ένα iPod nano και ειλικρινά λεπτό
Χρήση του PSP ως Joystick του υπολογιστή και στη συνέχεια έλεγχος του υπολογιστή σας με το PSP: 5 βήματα (με εικόνες)
Χρήση του PSP ως Joystick του υπολογιστή και στη συνέχεια έλεγχος του υπολογιστή σας με το PSP: Μπορείτε να κάνετε πολλά ωραία πράγματα με το PSP homebrew και σε αυτό το εκπαιδευτικό πρόγραμμα θα σας μάθω πώς να χρησιμοποιείτε το PSP σας ως χειριστήριο για παιχνίδια, αλλά υπάρχει επίσης ένα πρόγραμμα που σας επιτρέπει να χρησιμοποιείτε το joystick ως ποντίκι. Εδώ είναι η μητέρα
Δημιουργήστε έναν φακό Joule Thief LED ή Nightlight ανακυκλώνοντας μια φωτογραφική μηχανή μίας χρήσης Kodak .: 11 βήματα (με εικόνες)
Δημιουργήστε έναν φακό Joule Thief LED ή Nightlight ανακυκλώνοντας μια φωτογραφική μηχανή μίας χρήσης Kodak .: Αφού είδα πληροφορίες σχετικά με τα προγράμματα οδήγησης Joule Thief LED στο διαδίκτυο, αποφάσισα να δοκιμάσω να τα φτιάξω. Αφού πήρα κάποιες μονάδες εργασίας άρχισα να πειραματίζομαι (όπως συνηθίζω να κάνω) με διαφορετικές πηγές τμημάτων από αντικείμενα που μπορώ να ανακυκλώσω. Βρήκα ότι δεν