api.simpel.nl werkt niet meer

  • 2 September 2022
  • 2 reacties
  • 194 Bekeken

Beste,

Al weer een jaar geleden had ik een python script geschreven wat iedere 1800 seconden inlogde bij api.mijnsimpel.nl en zo voor iedere gebruiker welke aan mijn account gekoppeld zat de verbruiksgegevens op haalde. Ik kon op de ze manier voor alle gebruikers mooie grafiekjes maken met hoe het verbruik was en zo konden ze zien of ze moesten gaan minderen. Dit heeft tot een week of 2 probleemloos gewerkt en nu lijkt api.mijnsimpel.nl niet meer te bestaan.
Ik begrijp dat dit een ‘unsupported’ dingetje was maar ik (en zeker mijn kinderen) missen de grafiek enorm.

Is er een andere manier om de mijn.simpel.nl gegevens te scrapen?

 

import requests
import http.cookiejar
import json
import paho.mqtt.client as mqtt
import time

# MIJN SIMPEL SETTINGS
mijnsimpel_loginurl = "https://api.simpel.nl/login"
mijnsimpel_username = "xxxxxxxxx"
mijnsimpel_password = "xxxxxxxxx"
mijnsimpel_userlist = [
{"username": "xxxxxxxx", "sid" : "xxxxxxxxxx"},
{"username": "xxxxxxxx", "sid": "xxxxxxxxxxx"}]
mijnsimpel_sleepbetweenrequests = 1800

# MQTT SETTINGS
mqtt_servername = "xxxxxxxxx"
mqtt_serverport = xxxxxx
mqtt_username = "xxxxxx"
mqtt_password = "xxxxxxxxx"
mqtt_clientname = "mijnsimpel-mqtt"
mqtt_topic = "mijnsimpel"


def get_mijnsimpel_usage(user, sid):
global usagedata
global response
global mijnsimpel_statuscode

s = requests.Session()
mijnsimpel_logindata = {"username": mijnsimpel_username, "password": mijnsimpel_password, "remember": None}
url = mijnsimpel_loginurl
r = s.post(url, json=mijnsimpel_logindata)

response = requests.get('https://mijn.simpel.nl/api/usage/usage-summary?sid=' + sid, cookies=s.cookies)
mijnsimpel_statuscode = response.status_code
if mijnsimpel_statuscode == 200:
json_usagedata = json.loads(response.text)
usagedata = '{"voiceAmountLeft":' + '{}'.format(json_usagedata['voiceAmountLeft']) + ', "dataAmountLeft":' + '{}'.format(json_usagedata['dataAmountLeft']) + ', "smsAmountLeft":' + '{}'.format(json_usagedata['smsAmountLeft']) + '}'
print (time.strftime('%Y-%m-%d %H:%M:%S ') + "Request for data succesfull for sid: " + sid + " {}".format(response) + "... ")
print (time.strftime('%Y-%m-%d %H:%M:%S ') + "Requested data: {}".format(usagedata))
else:
usagedata = None
print (time.strftime('%Y-%m-%d %H:%M:%S ') + "Request for data failed for sid: " + sid + " {}".format(response) + "! ")
return usagedata, mijnsimpel_statuscode, json_usagedata
return response



def mqtt_mijnsimpel_usage(user, data):
client = mqtt.Client(mqtt_clientname)
client.username_pw_set(mqtt_username, mqtt_password)
client.connect(mqtt_servername, mqtt_serverport)
client.publish(mqtt_topic + "/" + (user), str(data), qos=1, retain=0)

while True:

for user in mijnsimpel_userlist:
mijnsimpel_user = user.get('username')
mijnsimpel_sid = user.get('sid')

get_mijnsimpel_usage(mijnsimpel_username, mijnsimpel_sid)

if usagedata != None:
mqtt_mijnsimpel_usage(mijnsimpel_user, usagedata)

#some sleep between each user because mijnsimpel can't deliver the data fast enough!
time.sleep(2.0)
print(time.strftime('%Y-%m-%d %H:%M:%S ') + "Wait {} seconds for next request...".format(mijnsimpel_sleepbetweenrequests))
time.sleep(mijnsimpel_sleepbetweenrequests)



 


2 reacties

Grappig idee. Heb zelf ook wel iets vergelijkbaars gedaan met Ben. Maar door de grote bundels ben ik daar eigenlijk mee gestopt.

Het heeft mogelijk iets te maken met Cloudflare die sites juist probeert te beschermen voor dit soort geautomatiseerd verkeer. Maar dit hangt natuurlijk compleet af aan wat voor foutmeldingen je scraper ontvangt.

Een eenvoudige troubleshoot is proberen om je useragent te vervangen met bijvoorbeeld Firefox en Chrome en niet teveel verzoeken tegelijk af te vuren.

Ook merkte ik laatst dat Simpel je een captcha laat oplossen als je vanuit sommige andere landen probeert in te loggen, je draait het niet op een VPS een eind hier van daan? ;)

Ben je nog wel in staat de gegevens in een browser op te vragen?

Het zou inderdaad mooi zijn als er een officiele API was. Maar dat is niet echt de kant die het internet op gaat helaas ;)

https://mijn.simpel.nl/api/usage/usage-summary?sid=s1312

Geeft hier nog bruikbare gegevens terug:

Jelle

Reputatie 2
Badge +7

Hi @RTTY45 & @Remco Bierings,

Leuk dat jullie beide deelnemen aan onze community!

Ik ben blij dat @RTTY45 reageert op je bericht aangezien ik eerlijk gezegd geen antwoord kan geven op je vraag. Onze website en app worden continue verbeterd en daarom kan het zijn dat de URL verdwenen is. 

Wellicht kan je hulp vinden bij andere Python schrijvers :)

Fijne middag!

Groet,

Janine

Simpel

Reageer