Πώς δημιούργησα ένα Python Bot για να συνδεθώ αυτόματα σε Captive Portal

Ένα βήμα προς βήμα εκπαιδευτικό πρόγραμμα Python για τη δημιουργία bot σύνδεσης

Σήμερα το Διαδίκτυο δεν είναι προνόμιο, είναι αναγκαιότητα. Όπου κι αν πηγαίνουμε, χρειαζόμαστε μια συνεχή σύνδεση στο Διαδίκτυο χρησιμοποιώντας είτε ένα δίκτυο Wi-Fi είτε ένα δίκτυο δεδομένων κινητής τηλεφωνίας.

Φανταστείτε ότι συμμετέχετε σε ένα νέο πανεπιστήμιο ή έναν οργανισμό, ο οποίος μας παρέχει Διαδίκτυο μέσω Wi-Fi. Ο οργανισμός μπορεί να εφαρμόσει μια πολύ κοινή σελίδα σύνδεσης για έλεγχο ταυτότητας των χρηστών τους που ονομάζεται Captive Portal (επίσης γνωστή ως Walled Garden ).

Μια πύλη Captive χρησιμοποιείται για διάφορους λόγους.

  • Χρησιμοποιούνται από πανεπιστήμια και οργανισμούς για να περιορίσουν τον αριθμό των συσκευών που είναι συνδεδεμένες στο δίκτυο Wi-Fi από έναν λογαριασμό / άτομο.
  • Υλοποιούνται για την παροχή πρόσβασης σε υπηρεσίες που απαιτούν έλεγχο ταυτότητας, πληρωμή ή άλλα έγκυρα διαπιστευτήρια που συμφωνούν να συμμορφώνονται τόσο ο πάροχος υπηρεσιών όσο και ο χρήστης.

Υπάρχουν διάφοροι λόγοι και οφέλη από τη χρήση μιας πύλης δεσμευμένης, αλλά δεν είναι αυτό το θέμα.

Η εταιρεία μου είχε εφαρμόσει μια δεσμευμένη πύλη στην οποία οι χρήστες χρειάζονταν να συνδεθούν για να έχουν πρόσβαση στο Διαδίκτυο. Αμέσως μετά τη σύνδεσή μου στο ασύρματο δίκτυο, το πρόγραμμα περιήγησής μου χρησιμοποίησε το άνοιγμα της σελίδας της αιχμαλωσίας πύλης και χρειάστηκε να εισαγάγω το όνομα χρήστη και τον κωδικό πρόσβασής μου μετά από τον οποίο ήμουν σε θέση να αποκτήσω πρόσβαση στο Διαδίκτυο. Υπήρχε όμως ένα πρόβλημα.

Αν και η εφαρμογή μιας πύλης Captive είναι καλή για προστασία από μη εξουσιοδοτημένη πρόσβαση στο Διαδίκτυο, αναγνώριση κυκλοφορίας και διαχείριση χρηστών, έχει ελεγχόμενη σύνδεση σε κάθε συσκευή για να διασφαλίσει ότι όλοι οι χρήστες έχουν επαρκή πρόσβαση. Μια δεσμευμένη πύλη μπορεί,

  • Ελέγξτε τον αριθμό των τερματικών ανά χρήστη
  • Ελέγξτε την κατανάλωση εύρους ζώνης και / ή την ταχύτητα λήψης ανά περίοδο σύνδεσης
  • Περιορίστε τον επιτρεπόμενο τύπο επισκεψιμότητας και καθορίστε ακόμη και τη διάρκεια του χρονικού ορίου λήξης της περιόδου σύνδεσης

Λόγω αυτών των περιορισμών, εάν θέσω το σύστημά μου σε αναστολή λειτουργίας ή έμεινα σε αδράνεια για περισσότερο από λίγα λεπτά, το σύστημά μου αποσυνδέθηκε από το δίκτυο. Επομένως, μετά την υπέρβαση του χρόνου αδράνειας, έπρεπε να συνδεθώ ξανά.

Ως προγραμματιστής λογισμικού που απαιτεί συνεχή, εν κινήσει συνδεσιμότητα στο Διαδίκτυο στο σύστημά μου, έπρεπε να εισαγάγω ξανά το όνομα χρήστη και τον κωδικό πρόσβασής μου, γεγονός που το έκανε πολύ δυσκίνητο.

Τι γίνεται αν, αφού αποσυνδεθώ, μπορούσα να συνδεθώ στην πύλη αιχμαλωσίας με ένα μόνο κλικ σε ένα κουμπί / εικονίδιο στο σύστημά μου;

Πρέπει να είναι εφικτό! Δεν χρειάζεται να εισαγάγετε ένα όνομα χρήστη και έπειτα έναν κωδικό πρόσβασης που στις περισσότερες περιπτώσεις πρέπει να έχει μήκος 8 χαρακτήρων και πρέπει να έχει τουλάχιστον ένα κεφαλαίο γράμμα μπλα μπλα μπλα. Ας δούμε πώς μπορούμε να το κάνουμε αυτό.

Εκτέλεση

Ακόμα κι αν είστε αρχάριος στον προγραμματισμό, θα πρέπει να είναι πολύ εύκολο. Το έχω κωδικοποιήσει στη γλώσσα προγραμματισμού Python. Μπορείτε να κατεβάσετε το Python εδώ και απαιτούμε επίσης το Selenium το οποίο μπορείτε να το κατεβάσετε εδώ. Μπορείτε επίσης pip install selenium(συνιστάται).

Τώρα ας ρίξουμε μια ματιά στον κώδικα.

Μετά την εισαγωγή των απαραίτητων βιβλιοθηκών, πρέπει να καθορίσουμε τις ακόλουθες μεταβλητές στον κώδικα.

Επιτρέψτε μου να το εξηγήσω τώρα,

  • Ο σύνδεσμος ιστότοπου δεν είναι τίποτα άλλο από το σύνδεσμο σελίδας σύνδεσης ή τον σύνδεσμο δεσμευμένης πύλης έναντι του οποίου ο χρήστης θα έκανε έλεγχο ταυτότητας
  • Το όνομα χρήστη και ο κωδικός πρόσβασης είναι αυτό που εισάγετε για να συνδεθείτε
  • element_for_username, element_for_password, element_for_submit είναι τα ονόματα του στοιχείου στον κώδικα HTML της σελίδας σύνδεσης

Επιτρέψτε μου να σας δείξω πώς να τα βρείτε.

Όπως στο παραπάνω σχήμα,

  • Ανοίξτε το Inspect Element ανάλογα με το πρόγραμμα περιήγησής σας.
  • Αναζητήστε το στοιχείο HTML και αντιγράψτε το όνομα της ετικέτας εισαγωγής (στο παραπάνω παράδειγμα το όνομα_ χρήστη του ).
  • Κάντε το ίδιο για να βρείτε το στοιχείο HTML για τον κωδικό πρόσβασης και το κουμπί υποβολής επίσης.
  • Αυτές οι συμβολοσειρές θα είναι η τιμή για το element_for_username, element_for_password, element_for_submit.

Το μεγαλύτερο μέρος της δουλειάς έχει ολοκληρωθεί!

Σημείωση: Δουλεύω σε macOS, οπότε θα εφαρμόσω το bot για το Safari. Για το Chrome και άλλα άτομα, χρησιμοποιήστε το Chrome μέσω του chromedriver.

Αντιγράψτε αυτόν τον κωδικό με τον υπόλοιπο κώδικα και αποθηκεύστε τον ως Python (αρχείο .py). Εκτελέστε το αρχείο χρησιμοποιώντας python script.py. Θα δείτε ότι το πρόγραμμα περιήγησης ανοίγει αυτόματα τη σελίδα σύνδεσης και εισάγει τις λεπτομέρειες και την υποβάλλει. Δεν χρειάζεται καν να πληκτρολογήσετε το όνομα χρήστη και τον κωδικό πρόσβασης πια. Δεν είναι δροσερό;

Σημείωση: Ο πλήρης κωδικός είναι διαθέσιμος στο GitHub.

Χρήση του Automator σε macOS για τη δημιουργία μιας εφαρμογής (προαιρετικά)

Στο macOS μπορείτε να δημιουργήσετε μια εφαρμογή που μπορεί να ακολουθήσει ένα συγκεκριμένο σύνολο ροών εργασίας για οποιαδήποτε εργασία που εκτελείται επανειλημμένα.

Σε αυτήν την ενότητα θα εξηγήσω πώς να κάνω το παραπάνω σενάριο Python σε μια εφαρμογή αυτοματοποίησης. Αυτό θα επιτρέψει στο χρήστη να συνδεθεί στην δεσμευμένη πύλη και απλώς να κάνει κλικ στο αρχείο εφαρμογής αυτοματοποιητή.

Τώρα ας δούμε τα βήματα για την εφαρμογή αυτού:

Βήμα 1: Ανοίξτε το Automator . Δημιουργήστε μια νέα υπηρεσία ή Αρχείο & g t; Νέο > S υπηρεσία

Βήμα 2: Προσθέστε μια ενέργεια " Run Shell Script ", ρυθμίζοντας το Shell: to / bin / bash και Pass input: σε ως ορίσματα .

Βήμα 3: Τώρα προσθέστε τον κωδικό bash όπως παρακάτω. Αποθηκεύστε το αρχείο στην επιφάνεια εργασίας.

Βήμα 4: Κάντε κλικ στο αρχείο και Voilà!

Η εξεύρεση λύσης σε ένα πρόβλημα τόσο απλή όσο το να πληκτρολογείτε κάτι σαν τα διαπιστευτήρια σύνδεσης μπορεί να γίνει εύκολα. Μόλις μάθετε ποια είναι η δήλωση προβλήματος, η εύρεση της λύσης είναι ευκολότερη. Ελπίζω ότι αυτή η ανάρτηση σας έδωσε μια ιδέα για το πώς λειτουργούν τα Selenium και Python και πώς είναι εύκολο να δημιουργήσετε ένα bot Python.