Het mobiele datagebruik bijhouden met BitBar en Python

BitBar (door Mat Ryer – @matryer) is een opensource-project op GitHub waarmee je de uitvoer van elk script / programma in je Mac OS X-menubalk kunt plaatsen. https://github.com/matryer/bitbar

BitBar stelt je in staat om basis UI-functionaliteit op je Mac te zetten met behulp van basisscripts, BitBar ondersteunt elke taal die naar stdout kan schrijven! Dat betekent bash, zsh, python 2/3, ruby, node, Go, lip, perl, php, Java, … vrijwel elke taal!

Voor de basisfunctionaliteit die u u wilt misschien gewoon één regel naar standaard afdrukken, is dit soort BitBar-app erg handig en dat is wat ik vandaag zal demonstreren een beetje hulp van Python en mijn Aldi mobiele sim-pakket dat ik gebruik om te tetheren om mijn werk vanuit huis te doen.

Stap 1: BitBar installeren

Stap 2: schrijf script om Bitbar uit te voeren

Aangezien ik mijn Aldi-gsm vaak gebruik voor mijn internetgebruik op mijn laptop, wil ik graag controleren hoeveel gegevens ik nog heb. Laten we een script maken in BitBar dat elke 15 minuten wordt uitgevoerd met de naam aldi-mobile.15m.sh en dit toevoegen aan onze BitBar-directory.

Geweldig, nu kan BitBar dit script elke 15 minuten uitvoeren! Maar het heeft nog geen functionaliteit. Laten we dus een Python 3-script schrijven dat naar de webpagina van Aldi voor mobiel gaat en het resterende saldo opvragen.

Stap 3: functionaliteit schrijven in Python zodat BitBar kan worden uitgevoerd

Laten we een python-script maken met de naam aldi-mobile.py en dat opslaan in de map onder onze BitBar-directory

Om de functionaliteit te laten werken, moeten we een sessie onderhouden met de mobiele Aldi-webservers wanneer we onze gebruikersgegevens opgeven. Om dit te doen zullen we de requests.Session () uit de Python Requests-bibliotheek gebruiken. De meeste websites onderhouden een sessie met behulp van een CSRF-token en we kunnen dit uit onze eerste halen. verzoek op de inlogpagina van de website. Om het patroon voor de regex te achterhalen, opent u de pagina in Chrome / Firefox, klikt u met de rechtermuisknop – inspecteert u de pagina en zoekt u naar ‘csrf’ of ‘token’.

Je moet controleren of er verzoeken op je computer zijn geïnstalleerd, aangezien we deze zullen gebruiken in ons Python-script.

Ga in Chrome / Firefox met de ontwikkelaarstools open naar het tabblad Netwerk, toets uw inloggegevens in en klik op inloggen. Dit toont u de HTTP-netwerktracering die is gebruikt om in te loggen op uw account. Hieruit kunnen we zien dat de url die we nodig hebben om in te loggen “https://www.aldimobile.com.au/login_check" en als je op de ‘params’ klikt, zie je je telefoonnummer, wachtwoord en csrf-token. Dit is wat we moeten toevoegen aan ons Python-verzoek om in te loggen.

Merk op dat ik de standaard Python-bibliotheek voor regex (re) hier heb gebruikt in plaats van de HTML te ontleden met zoiets als BeautifulSoup. Simpelweg omdat wat we zoeken erg basic is en geen zware machines nodig heeft.

Nu we zijn ingelogd op onze sessie, kunnen we toegang krijgen tot ons dashboard, dat al onze persoonlijke gegevens bevat. Helaas moeten we nog een verzoek indienen omdat Aldi Mobile een dynamisch verzoek gebruikt met xhr om het saldo van de gebruikers te krijgen nadat de pagina is weergegeven. Nogmaals, dit kan worden gezien door de pagina te inspecteren en naar het netwerktabblad te kijken. Dus we pakken onze gebruikers-ID en het plantype en sturen een laatste verzoek om het saldo te krijgen.

Nu we die functionaliteit uit de weg hebben, moeten we deze aan BitBar koppelen!

Stap 4: functionaliteit koppelen aan BitBar

De laatste stap is eenvoudig, ga je gang en open het shellscript dat we aan het begin hebben gemaakt (& lt; BITBAR-DIRECTORY & gt; /aldi-mobile.15m.sh) en voeg het volgende toe.

Leef in actie!

Zoals je kunt zien, heb ik een paar aangepaste BitBar-applicaties actief! Ik heb er momenteel 4 actief: