Hallo,
nach vielen Jahren habe ich nach Umzug wieder mal einen FHEM Server aufgesetzt und mir kommen viele neue Ideen;)
Ich möchte gerne den aktuellen Datenverbrauch von O2 SIM-Karten abfragen.
Diese Info ist über die App und www.O2online.de abrufbar.
Meine Erkenntnisse bisher (Mit *CENSORED* habe ich sensible Daten abgeändert):
Im Browser nach LOGIN kann ich unter https://www.o2online.de/vt-usage-data/api/usage-data
im JSON-Format die gewünschten Infos sehen:
{"tariffDeviceWrapper":{"devices":[{"label":"IPhone 8","msisdn":"*CENSORED*","iccId":"*CENSORED*","subscriptionId":*CENSORED*,"showMsisdn":true,"status":"ACTIVE","simAction":null,"o2Free":false,"simcardTechnology":"PLASTIC","simReplacementInfo":null,"esimState":null,"asid":null,"usage":{"deviceType":"MULTI_CARD","nationalUsage":{"value":0,"unit":"MB"},"internationalUsage":{"value":0,"unit":"MB"}}},
Mit Burp habe ich folgenden GET ermittelt:
GET /vt-usage-data/api/usage-data HTTP/1.1
Host: www.o2online.de
Cookie: cust=*CENSORED*; touchPoints=PPP|20240115153402; lorip-o2=!t+UGXw22CVHlMDDv82XreAGJpoS9Yy02D10zr3kebbxHniDa1ibEI4HP8IIehbTDiMI3XncTcxGEFSc=; tefMarker=ZWEzZGMyMDMtZWE4Yy1hODY1LTZkZmYtZTg0ZWRkMGJhMWZj; o2online=P=22137+60729+1289+54037+7689+28390+21084+58546+11000+7473+6691+19993+31945+35441+20456+36299+48072+47138+11154+20291+51499+4005+34122+61995+15382+3816+63906+28461+42908+24437+31578+28551&L=63600+59029+23442+47561+8759+63087+39481+18766&A=40665+46324+56983+51845&S=21952+47827+28434+17306+17527+31623+26424+61438+21+19199+4880+28629+43505+13770+26470+64555&T=40587+18212+64873+17016+29171+27631+7401+40561+10002+15945+62947+48147&X=45248+18440+5576+52506&U=15221+24040+23925+35998+44939+19407+37761+63199&D=11135+37401+48229+35441+30692+18013+23766+33153+13568+6685+21540+39004&C=17594+58633+33886+53630+40665+46324+56983+51845&K=23057+26238+28446+2595&N=7067+207+24665+27950&M=40665+46324+56983+51845&F=22477+1436+31299+40648+40665+46324+56983+51845&G=14461+11314+7877+43724+40312+62659+35545+51521&Z=MCwCFHImyP02jFwyHxlK3MUk3kirvN00AhRmvoDUTygazZYEyEp8kNXICkBNhA==; CM_SESSIONID=D377C2CC9B63AFC58AC760E2B7D15E34; tefJwt=eyJ0eXAiOiJKV1QiLCJraWQiOiJqLzdzb3JlWUtnamxKQzJrdE1BRnNQWmppSEk9IiwiYWxnIjoiUlMyNTYifQ.eyJpc3MiOiJodHRwczovL2xvZ2luLm8yb25saW5lLmRlL3Nzby9vYXV0aDIiLCJhdWQiOiJwb3J0YWxfY2FyZV9vMiIsInBlcm1pc3Npb25zIjoiMTExMTAwMDEwMDExMTEwMTEwMDAwMDAxMTExMTExMDEwMTAwMDExMDAwMDExMTAwMTAxMDAwMDAwMDAwMCJ9.C-JiP7NhHr_kmC2K5ByyJjOrbe_iXb4QwTFDx4-ujvy7PC_jEzyDZdnrehT1rAxGB1ksPbLvvas9ApZV1rer-Lc7f7yt5-NkaEdEukDGBL7LzuyTWOrcv5hknz-84ji5CiASHIQ2Ocz0WUKaYIC2uniUWNA-6HDVldIjD0fjnoVjbSzAIqtwtiSjBRGeqI9eUSj7wZXYOccOeCmCcHVeLFIj354kqhmdJj3r3jro6EcLqvei8fLdrsSLzgd37gB1MXcpppIWVN-OLSpkQRA2nTUkKpI0iaR1OCqzQH4mAujrpDECwXJqa0PsugJSDYHjKR_1fDXCn7p2TWZCuxeLCbbBi0j_Xb6alhb8PcQlxRGRpHdxD1R_659dgkOREO4F1XZDOGrAWFvsbRxrI96eRYcUpnfYiyHk8JFZKYLyax0ZxdgA_XhePZN_DywOqno6vOOSGb-MSjRs9Oaku7cjDRPMLAb5JVXfYsmTP9zQdYr5sU4OcxhMZjy-yg8IN97bcbw57KHfuy4TMJFBXFZocx7SDyH9tP1esLUW_0jCsobreKOuFWAv53ZvasXJksgCJtPOMa7q9RjzbsE_4gf1Hl2TiosZspvS-zhyXr8PKgXqnUP3WHw10DDitmp06qlT_pjDXk_ilPVK11s3MljzGwMlrDL07-cXtvFjq_XHSbI; selfcaresid=553536a7-a6e0-445e-a7cd-13c43796a501; AWSALB=q87rI9LJqMhUotiE5kJ54GN6+FZZf/RJA/zJig3vjEOjHOaLsurOA5rbq7KcN7JA8qSDcYg0Ume+m1vZwVbnOC1YB3I4AVysXCdWIcBmuY5nUzp1qD0NBwojgYcn; AWSALBCORS=q87rI9LJqMhUotiE5kJ54GN6+FZZf/RJA/zJig3vjEOjHOaLsurOA5rbq7KcN7JA8qSDcYg0Ume+m1vZwVbnOC1YB3I4AVysXCdWIcBmuY5nUzp1qD0NBwojgYcn
Sec-Ch-Ua: "Not_A Brand";v="8", "Chromium";v="120", "Microsoft Edge";v="120"
Accept: application/json, text/plain, */*
Sec-Ch-Ua-Mobile: ?0
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36 Edg/120.0.0.0
Ecareng-Selected-Subscription: *CENSORED*
Sec-Ch-Ua-Platform: "Windows"
Sec-Fetch-Site: same-origin
Sec-Fetch-Mode: cors
Sec-Fetch-Dest: empty
Referer: https://www.o2online.de/ecareng/uebersicht
Accept-Encoding: gzip, deflate, br
Accept-Language: de,de-DE;q=0.9,en;q=0.8,en-GB;q=0.7,en-US;q=0.6
Connection: close
HTTPMOD ist wie folgt konfiguriert:
define Mobilfunk_Christian HTTPMOD https://www.o2online.de/ecareng/uebersicht 6000
attr Mobilfunk_Christian bodyDecode auto
attr Mobilfunk_Christian enableCookies 1
attr Mobilfunk_Christian extractAllJSON 1
attr Mobilfunk_Christian get01Data {"get" :["usage"]}
attr Mobilfunk_Christian get01Name Usage
attr Mobilfunk_Christian get01URL http://www.o2online.de/vt-usage-data/api/usage-data
attr Mobilfunk_Christian getHeader1 Content-Type: application/json
attr Mobilfunk_Christian getHeader2 Accept: application/json, text/plain, */*
attr Mobilfunk_Christian getHeader3 Ecareng-Selected-Subscription: *CENSORED*
attr Mobilfunk_Christian getHeader4 Referer: https://www.o2online.de/ecareng/uebersicht?subscriptionId=*CENSORED*
attr Mobilfunk_Christian getHeader5 Cookie: JSESSIONID=$sid
attr Mobilfunk_Christian handleRedirects 1
attr Mobilfunk_Christian reAuthRegex id="login"|Unauthorized
attr Mobilfunk_Christian room Mobilfunk
attr Mobilfunk_Christian showBody 0
attr Mobilfunk_Christian showError 1
attr Mobilfunk_Christian sid01Data email=*CENSORED*&password=*CENSORED*
attr Mobilfunk_Christian sid01URL https://login.o2online.de/sso/UI/Login
attr Mobilfunk_Christian verbose 5
# BUSY 0
# DEF https://www.o2online.de/ecareng/uebersicht 6000
# FUUID 65a2783e-f33f-c82d-5e30-cc34bab8a29c04ab
# Interval 6000
# MainURL https://www.o2online.de/ecareng/uebersicht
# ModuleVersion 4.1.16 - 4.4.2023
# NAME Mobilfunk_Christian
# NOTIFYDEV global
# NR 393
# NTFY_ORDER 50-Mobilfunk_Christian
# STATE ???
# TYPE HTTPMOD
# value
# CompiledRegexes:
# HTTPCookieHash:
# CM_SESSIONID;:
# Name CM_SESSIONID
# Options Path=/
# Path
# Value 524*CENSORED*
# cust;:
# Name cust
# Options Domain=.o2online.de; Expires=Wed, 14-Jan-2026 16:44:14 GMT; Path=/
# Path
# Value CUST*CENSORED*
# touchPoints;:
# Name touchPoints
# Options Domain=.o2online.de; Expires=Tue, 14-Jan-2025 18:24:13 GMT; Path=/
# Path
# Value PP|202*CENSORED*
# HttpUtils:
# NAME
# addr https://www.o2online.de:443
# auth 0
# buf
# code 200
# compress 1
# conn
# data
# displayurl https://www.o2online.de/mein-o2/ecare/
# header Cookie: CM_SESSIONID=00D*CENSORED*; cust=CUST*CENSORED*; touchPoints=PP|202*CENSORED*
# host www.o2online.de
# httpheader HTTP/1.1 200 OK
#date: Mon, 15 Jan 2024 18:24:13 GMT
#server: Apache
#vary: Origin,Accept-Encoding,Access-Control-Request-Method,Access-Control-Request-Headers
#access-control-allow-origin: *
#cache-control: max-age=60
#x-content-type-options: nosniff
#x-xss-protection: 1; mode=block
#content-type: text/html;charset=UTF-8
#content-language: de-DE
#set-cookie: CM_SESSIONID=524*CENSORED*; Path=/
#content-encoding: gzip
#content-security-policy: object-src 'none';script-src 'self' 'unsafe-inline' 'unsafe-eval' *.tiktok.com *.o2.com *.o2.de *.spatialbuzz.com *.usercentrics.eu *.baqend.com *.o2online.de *.telefonica.de *.o9.de *.googletagmanager.com *.trbo.com *.google-analytics.com *.kampyle.com *.adoberesources.net *.matelso.de *.contentsquare.net *.nowinteract.com *.demoup.com *.auracognitive.com *.adtelligence.de *.aklamio.com *.promisejs.org *.usabilla.com *.jsdelivr.net *.cloudflare.com *.abtasty.com *.blob.core.windows.net *.blau.o9.de *.blau.de *.ad4m.at track.adform.net www.facebook.com *.doubleclick.net adservice.google.com a.twiago.com www.youtube.com o2-music-cms-a.preprod.ava-digi.de www.google.co.in analytics.google.com dpm.demdex.net www.google-analytics.com imagesrv.adition.com www.google.com dsum-sec.casalemedia.com rtb-csync.smartadserver.com ih.adscale.de trc.taboola.com ad11.adfarm1.adition.com ad4m.at, frame-ancestors 'self' https://deploy.mca.tid.es https://deploy.tid.es *.o2.de *.o2.com *.o2online.de *.telefonica.com;
#content-length: 14544
#x-varnish: 40453636
#age: 0
#x-cache: MISS
#via: 1.1 varnish-live-1-0
#connection: close
# httpversion 1.0
# hu_blocking 0
# hu_filecount 1
# hu_port 443
# hu_portSfx
# ignoreredirects 1
# loglevel 4
# path /mein-o2/ecare/
# protocol https
# redirects 0
# timeout 2
# url https://www.o2online.de/mein-o2/ecare/
# sslargs:
# QUEUE:
# READINGS:
# 2024-01-14 15:59:46 LAST_ERROR gethostbyname login.www.o2online.de failed
# REQUEST:
# context reading
# data
# header
# ignoreredirects 0
# num unknown
# priority 1
# retryCount 0
# type update
# url https://www.o2online.de/mein-o2/ecare/
#
setstate Mobilfunk_Christian 2024-01-14 15:59:46 LAST_ERROR gethostbyname login.www.o2online.de failed
Leider funktioniert die Umsetzung noch nicht.
Ich erhalte in FHEM ,,Error occured on server". Dies ist auch der Fall, wenn ich ohne Anmeldung https://www.o2online.de/vt-usage-data/api/usage-data im Browser eingebe.
Im Logfile erhalte ich:
2024.01.15 17:18:06 4: Mobilfunk_Christian: HandleSendQueue sends get01 with timeout 2 to https://www.o2online.de/vt-usage-data/api/usage-data,
data: {"get" :["usage"]},
header: Content-Type: application/json
Accept: application/json, text/plain, */*
Ecareng-Selected-Subscription: *CENSORED*
Referer: https://www.o2online.de/ecareng/uebersicht?subscriptionId=*CENSORED*
Cookie: JSESSIONID=$sid
Cookie: AMAuthCookie=AQIC*CENSORED*-dO8oTehWjjsBYvs7hA.*AAJTSQACMDQAAlNLABM4NjQxNDk5MDEzMjc4MTA4MzMxAAJTMQAA*; JSESSIONID=65557350631901A5011AEAA92392C5D7; Max-Age=0; amlbcookie=LOGOUT; cookieenabled=1; lorip-o2-p-=!pi0LlGpsR0/DrBvrPXEPLbUjFNbI9PzHKqYlbUqiVnA1n0if9GT3EYujUT84O8AfqTd+BzRdL5A+gisbsYRfc67s0G*CENSORED*
2024.01.15 17:18:06 5: Mobilfunk_Christian: ReadCallback called from __ANON__
2024.01.15 17:18:06 4: Mobilfunk_Christian: Read callback: request type was get01 retry 1,
header: HTTP/1.1 401 Unauthorized
Date: Mon, 15 Jan 2024 16:18:06 GMT
Content-Type: application/json;charset=UTF-8
Content-Length: 23
Connection: close
Server: TEF-NG3
x-o2-logtraceid: 4350611944832178660
vary: Origin,Access-Control-Request-Method,Access-Control-Request-Headers
www-authenticate: FormBased
x-o2-authredirectwithouttarget: https://www.o2online.de/vt-login/authenticate/?clientId=portal_care_o2&target-app=
x-content-type-options: nosniff
x-xss-protection: 1; mode=block
cache-control: no-cache, no-store, max-age=0, must-revalidate
pragma: no-cache
expires: 0
x-frame-options: DENY
X-APACHE: NG3
X-APACHE2: O2, body length 23
2024.01.15 17:18:06 5: Mobilfunk_Christian: Read callback: body
Error occured on server
Ziel soll übrigens sein:
1. Einen Überblick über die Verbräuche zu bekommen, wir nutzen in 2 Verträgen mehrere SIM und teilen den Internetzugang derzeit indem wir zwischen SIMs aus beiden Verträgen wechseln
2. Den Internetzugang per FHEM umzuschalten auf eine andere SIM (LTE/5G-Router) wenn ein gewisses Volumen aufgebraucht ist
Vielleicht kann mir jemand auf die Sprünge helfen.
Vielen Dank im Voraus!
Christian
Ich habe die Cookies im Verdacht. Der Cookie, gesendet von HTTPMOD ist anders aufgebaut wie der mitgelesene in Burp.
Ich habe beide mal gegenübergestellt und Umbrüche eingefügt:
FHEM:
Cookie:
AMAuthCookie=AQIC5wM2LY4SfczReIZCygXy5UVs-dO8oTehWjjsBYvs7hA.*AAJTSQACMDQAAlNLABM4NjQxNDk5MDEzMjc4MTA4MzMxAAJTMQAA*;
JSESSIONID=65557350631901A5011AEAA92392C5D7;
Max-Age=0;
amlbcookie=LOGOUT;
cookieenabled=1;
lorip-o2-p-=!VVvPnNz7Zxj2RnnrPXEPLbUjFNbI9K1iXS0468TJU0c6Z+Ljm8R1B1deiSu+6Aa8qyVyFkDhjngCdRAkYM3kBQkpvJkwhEIHg+Lpkw2X
Burp:
Cookie:
cust=CUST*CENSORED*;
touchPoints=PPP|20240115153402;
lorip-o2=!t+UGXw22CVHlMDDv82XreAGJpoS9Yy02D10zr3kebbxHniDa1ibEI4HP8IIehbTDiMI3XncTcxGEFSc=;
tefMarker=ZWEzZGMyMDMtZWE4Yy1hODY1LTZkZmYtZTg0ZWRkMGJhMWZj;
o2online=P=22137+60729+1289+54037+7689+28390+21084+58546+11000+7473+6691+19993+31945+35441+20456+36299+48072+47138+11154+20291+51499+4005+34122+61995+15382+3816+63906+28461+42908+24437+31578+28551&L=63600+59029+23442+47561+8759+63087+39481+18766&A=40665+46324+56983+51845&S=21952+47827+28434+17306+17527+31623+26424+61438+21+19199+4880+28629+43505+13770+26470+64555&T=40587+18212+64873+17016+29171+27631+7401+40561+10002+15945+62947+48147&X=45248+18440+5576+52506&U=15221+24040+23925+35998+44939+19407+37761+63199&D=11135+37401+48229+35441+30692+18013+23766+33153+13568+6685+21540+39004&C=17594+58633+33886+53630+40665+46324+56983+51845&K=23057+26238+28446+2595&N=7067+207+24665+27950&M=40665+46324+56983+51845&F=22477+1436+31299+40648+40665+46324+56983+51845&G=14461+11314+7877+43724+40312+62659+35545+51521&Z=MCwCFHImyP02jFwyHxlK3MUk3kirvN00AhRmvoDUTygazZYEyEp8kNXICkBNhA==;
CM_SESSIONID=D377C2CC9B63AFC58AC760E2B7D15E34;
tefJwt=eyJ0eXAiOiJKV1QiLCJraWQiOiJqLzdzb3JlWUtnamxKQzJrdE1BRnNQWmppSEk9IiwiYWxnIjoiUlMyNTYifQ.eyJpc3MiOiJodHRwczovL2xvZ2luLm8yb25saW5lLmRlL3Nzby9vYXV0aDIiLCJhdWQiOiJwb3J0YWxfY2FyZV9vMiIsInBlcm1pc3Npb25zIjoiMTExMTAwMDEwMDExMTEwMTEwMDAwMDAxMTExMTExMDEwMTAwMDExMDAwMDExMTAwMTAxMDAwMDAwMDAwMCJ9.C-JiP7NhHr_kmC2K5ByyJjOrbe_iXb4QwTFDx4-ujvy7PC_jEzyDZdnrehT1rAxGB1ksPbLvvas9ApZV1rer-Lc7f7yt5-NkaEdEukDGBL7LzuyTWOrcv5hknz-84ji5CiASHIQ2Ocz0WUKaYIC2uniUWNA-6HDVldIjD0fjnoVjbSzAIqtwtiSjBRGeqI9eUSj7wZXYOccOeCmCcHVeLFIj354kqhmdJj3r3jro6EcLqvei8fLdrsSLzgd37gB1MXcpppIWVN-OLSpkQRA2nTUkKpI0iaR1OCqzQH4mAujrpDECwXJqa0PsugJSDYHjKR_1fDXCn7p2TWZCuxeLCbbBi0j_Xb6alhb8PcQlxRGRpHdxD1R_659dgkOREO4F1XZDOGrAWFvsbRxrI96eRYcUpnfYiyHk8JFZKYLyax0ZxdgA_XhePZN_DywOqno6vOOSGb-MSjRs9Oaku7cjDRPMLAb5JVXfYsmTP9zQdYr5sU4OcxhMZjy-yg8IN97bcbw57KHfuy4TMJFBXFZocx7SDyH9tP1esLUW_0jCsobreKOuFWAv53ZvasXJksgCJtPOMa7q9RjzbsE_4gf1Hl2TiosZspvS-zhyXr8PKgXqnUP3WHw10DDitmp06qlT_pjDXk_ilPVK11s3MljzGwMlrDL07-cXtvFjq_XHSbI; selfcaresid=553536a7-a6e0-445e-a7cd-13c43796a501; AWSALB=bAh7FEbKdziAxzubmwFE3xPtKfxh9rFwG6N0KFDROqc0nG9G8+6/QAtOCke6oqMPWa+jYTHX0wCwfNs3Knb3S7GFAnQLUschZqXnmGus5E7NTqKVMDc6ZO2QcCL0;
AWSALBCORS=bAh7FEbKdziAxzubmwFE3xPtKfxh9rFwG6N0KFDROqc0nG9G8+6/QAtOCke6oqMPWa+jYTHX0wCwfNs3Knb3S7GFAnQLUschZqXnmGus5E7NTqKVMDc6ZO2QcCL0