jegbareAntar... Skrevet 11. januar Skrevet 11. januar (endret) Antar de skal lansere noe stort og derfor limiter tilgang til API for at de skal få mest mulig penger.... Endret 11. januar av jegbareAntar... typo Siter
hansfredriksen Skrevet 11. januar Skrevet 11. januar jegbareAntar... skrev (6 minutter siden): Antar de skal lansere noe stort og derfor limiter tilgang til API for at de skal få mest mulig penger.... insh allah! 😉 1 Siter
nle Skrevet 12. januar Skrevet 12. januar (endret) Er ikke noe problem å få tak i API nøkkelen som appen bruker, men dataen/oppsettet på json outputet er nytt. Bruk man in the middle proxy og overvåk mobilen. Tipper de følger med her egentlig, selv om vi nok bare er en liten promille som bruker den slik. EDIT: Ser faktisk ut som de setter opp en unik API key per session på noe vis. Har to call fra appen til APIet deres: GET /api/v1/authorization-sessions HTTP/1.1 Host: api.drivstoffappen.no Content-Type: application/json X-CLIENT-ID: com.raskebiler.drivstoff.appen.ios X-API-KEY: <redacted> Accept: */* User-Agent: Drivstoffappen/3.0.0 (com.raskebiler.drivstoff.appen; build:305; iOS 17.2.1) Alamofire/5.4.4 Accept-Language: en-NO;q=1.0, nb-NO;q=0.9 Accept-Encoding: br;q=1.0, gzip;q=0.9, deflate;q=0.8 Connection: keep-alive content-length: 0 GET /api/v1/stations?includeDeleted=1&includePending=1&minUpdatedAt=2024-01-12T23%3A08%3A30%2B0100&stationTypeId=1 HTTP/1.1 Host: api.drivstoffappen.no Content-Type: application/json X-CLIENT-ID: com.raskebiler.drivstoff.appen.ios X-API-KEY: <redacted> Accept: */* User-Agent: Drivstoffappen/3.0.0 (com.raskebiler.drivstoff.appen; build:305; iOS 17.2.1) Alamofire/5.4.4 Accept-Language: en-NO;q=1.0, nb-NO;q=0.9 Accept-Encoding: br;q=1.0, gzip;q=0.9, deflate;q=0.8 Connection: keep-alive content-length: 0 Endret 12. januar av nle Siter
Ziggy Skrevet 12. januar Skrevet 12. januar /api/v1/authorization-sessions er åpen og ser ut til å returnere en «global» token som erstattes av en ny etter noen få timer. Api nøkkelen er nok nå en hash av denne token’en og din bruker-id, og må re-beregnes når den rullerende token’en oppdateres. Siter
nle Skrevet 13. januar Skrevet 13. januar @Ziggy Men får du en midlertidig API nøkkel som fungerer? Det er vel kun den nye hasha token som fungerer? Og som jeg antar blir gjort i appen lokalt på noe vis? Så lenge vi ikke har den, vil vi være avhengig av å sniffe trafikken "hele tiden" for å få ny key? Siter
VikingOy Skrevet 13. januar Skrevet 13. januar @Ziggy dersom dine observasjoner og konklusjoner riktige, - og det tror jeg de er - betyr dette da at man heller ikke kan kjøpe en "lovlig" API nøkkel ? M.a.o. at Drivstoffappen aldri har tenkt til å åpne for betalte tredje-parts integrasjoner? HA vil jo aldri kunne benytte seg av en hash nøkkel som oppdateres/endres dynamisk? Siter
nle Skrevet 13. januar Skrevet 13. januar Da må man enten klare å reverse enginere det på noe vis, eller kjøre en enhet (f.eks en gammel telefon) med appen på, som man så sniffer trafikken til også oppdaterer keyen fortløpende i HA. Men da skal du nok være over gjennomsnittet glad i drivstoffpriser i HA. Kanskje lettere å få til en open source konkurrent til Drivstoffpriser appen. 1 Siter
Ziggy Skrevet 13. januar Skrevet 13. januar (endret) 8 hours ago, nle said: @Ziggy Men får du en midlertidig API nøkkel som fungerer? Det er vel kun den nye hasha token som fungerer? Og som jeg antar blir gjort i appen lokalt på noe vis? Så lenge vi ikke har den, vil vi være avhengig av å sniffe trafikken "hele tiden" for å få ny key? Ja til alt. Endret 13. januar av Ziggy Siter
nle Skrevet 13. januar Skrevet 13. januar Ok, men da er det vel «bare» å bruke den midlertidige keyen? Og refreshe. Siter
Ziggy Skrevet 13. januar Skrevet 13. januar 18 minutes ago, nle said: Ok, men da er det vel «bare» å bruke den midlertidige keyen? Og refreshe. Ja, antar det. 8 hours ago, VikingOy said: @Ziggy dersom dine observasjoner og konklusjoner riktige, - og det tror jeg de er - betyr dette da at man heller ikke kan kjøpe en "lovlig" API nøkkel ? M.a.o. at Drivstoffappen aldri har tenkt til å åpne for betalte tredje-parts integrasjoner? HA vil jo aldri kunne benytte seg av en hash nøkkel som oppdateres/endres dynamisk? Vanskelig å vite. Tipper de ikke ser på HA brukere som hverken en stor mulighet eller trusssel, men at de har beskyttet API'et sitt mer for å unngå at noen begynner å bruke dataene på en mere kreativ måte. Siter
hansfredriksen Skrevet 13. januar Skrevet 13. januar Jeg skrev og spurte om det med API nøkkel, siden vi er flere som ønsker tilgang til dataene deres og jeg tror at betalingsviljen er tilstede for å kunne kjøpe tilgang. Fikk dette til svar Det er flott å høre at dere ser verdien i å ha tilgang til pumpepriser for deres hjemmeautomatisering systemer. Vi jobber med å tilrettelegge for dette, men jeg kan dessverre ikke gi en nøyaktig dato for når det vil være på plass. Det jeg kan si er at tilgangen vil bli begrenset til abonnenter av appen vår. I tillegg vil vi gjøre tilgjengelig integrasjoner for andre systemer, ikke kun for Home Assistant. Vi setter pris på din interesse og tålmodighet mens vi jobber med å forbedre tjenesten vår. . Med andre ord så kan det være dette kommer i fremtiden... Men gud vet når. 1 Siter
nle Skrevet 13. januar Skrevet 13. januar (endret) Jeg får ikke noe key som kan brukes iallefall, jeg får følgende output fra https://api.drivstoffappen.no/api/v1/authorization-sessions: # curl -H 'Content-Type: application/json' -H 'X-CLIENT-ID: com.raskebiler.drivstoff.appen.ios' -H 'Accept: */*' -H 'User-Agent: Drivstoffappen/3.0.0 (com.raskebiler.drivstoff.appen; build:305; iOS 17.2.1) Alamofire/5.4.4' -H 'Accept-Language: en-NO;q=1.0, nb-NO;q=0.9' --compressed -H 'Connection: keep-alive' 'https://api.drivstoffappen.no/api/v1/authorization-sessions' {"id":<tall ##>,"authorizationId":<tall ##>,"token":"<token ser slik ut: 237faA88-s90a-2eee-b31d-188244e6ce11">,"createdAt":"2024-01-13T13:25:03.000+0000","expiresAt":"2024-01-13T19:25:03.000+0000","deleted":0}% Og "token" kan ikke brukes som ny API key (X-API-KEY). Noe jeg misser? Endret 13. januar av nle Siter
Ziggy Skrevet 13. januar Skrevet 13. januar 1 hour ago, nle said: Jeg får ikke noe key som kan brukes iallefall, jeg får følgende output fra https://api.drivstoffappen.no/api/v1/authorization-sessions: # curl -H 'Content-Type: application/json' -H 'X-CLIENT-ID: com.raskebiler.drivstoff.appen.ios' -H 'Accept: */*' -H 'User-Agent: Drivstoffappen/3.0.0 (com.raskebiler.drivstoff.appen; build:305; iOS 17.2.1) Alamofire/5.4.4' -H 'Accept-Language: en-NO;q=1.0, nb-NO;q=0.9' --compressed -H 'Connection: keep-alive' 'https://api.drivstoffappen.no/api/v1/authorization-sessions' {"id":<tall ##>,"authorizationId":<tall ##>,"token":"<token ser slik ut: 237faA88-s90a-2eee-b31d-188244e6ce11">,"createdAt":"2024-01-13T13:25:03.000+0000","expiresAt":"2024-01-13T19:25:03.000+0000","deleted":0}% Og "token" kan ikke brukes som ny API key (X-API-KEY). Noe jeg misser? token 237faA88-s90a-2eee-b31d-188244e6ce11 brukes av appen til å generere en ny API-nøkkel, man kan jo tippe vha en kryptografisk algoritme som ikke lett kan knekkes. Siter
nle Skrevet 13. januar Skrevet 13. januar Ja eksakt. Derfor jeg stussa når du sa «ja til alt». 🙂 1 Siter
NeoID Skrevet 14. januar Skrevet 14. januar (endret) Jeg har også lenge brukt denne i HA. Har hatt et greit oppsett der HA alltid viser de stasjonene som er i nærheten av din aktuelle posisjon. Jeg har planer om å hente ut ny nøkkel, men ser at admin-nøkkelen (den som slutter på -A) ikke lenger ligger i koden. Var litt morsomt å se at den var hardkodet i koden og til og med kunne slette data 😄 Jobber med å reversere påloggingen det nye API'et. Tror jeg forstår hvordan X-API-KEY blir generert 15 hours ago, nle said: Og "token" kan ikke brukes som ny API key (X-API-KEY). Noe jeg misser? Nei, klienten gjør først et kall mot /authorization-sessions og får en token tilbake, neste kall er /users/USER_ID som er statisk med X-API-KEY satt. Appen bruker token for å genere X-API-KEY. Endret 14. januar av NeoID 3 Siter
NeoID Skrevet 14. januar Skrevet 14. januar (endret) Jeg tror jeg har en løsning som fungerer, men må vente til nøkkelen jeg har nå utløper og se om koden min klarer å genere en ny som er gyldig. Det neste blir å se om jeg kan hente ut brukernavnet på en bedre måte. Vil helst ikke kjøre dette med samme bruker da det blir lett oppdaget. 🙂 Tidligere ver det enkelt å få ut all data fra ett endepunkt. noe som gjør det enkelt å konsumere direkte i HA (selv om datagrunnlaget var flere MB og HA klaget over det). Nå er API'et delt opp i større grad enn tidligere. Så du kan få en liste over stasjoner, men f.eks ikoner ligger nå i et egen spørring. Tester og skal gjøre en vurdering på hvordan dette best fåes inn i HA igjen. Endret 14. januar av NeoID Siter
SveinHa Skrevet 14. januar Skrevet 14. januar nle skrev (På 13.1.2024 den 11.11): Kanskje lettere å få til en open source konkurrent til Drivstoffpriser appen. Det hadde vært supert. Abonnement på Drivstoffappen er helt uaktuelt for meg da det er kundene, altså de som legger jobb i å oppdatere priser, som er verdien i appen. En engangsbetaling på et par hundrelapper kunne vært ok men ikke kr 200/år så lenge Drivstoffappen ikke selv innhenter priser. 1 Siter
NeoID Skrevet 14. januar Skrevet 14. januar (endret) Jeg kan bekrefte at jeg har en løsning som fungerer. Vet hjelp av brukernavn, password og token får jeg nå ut en gyldig X-API-KEY 🙂 Vil nok trenge noen dager, men vil som nevnt lage et eget API ut av dette, både så det blir enklere å patche når koden endrer seg igjen samt legge inn filtrering så ikke HA må gjøre det. Home Assistant har tidligere klaget på at jeg lagrer for mye data i attributes, så nå får man endelig muligheten til å fikse det. Jeg har også reversert en rekke andre apper dersom andre er interessert. For dere som har barn i barnehagen så har jeg også gjort en jobb på Spireportalen og andre så jeg får bilder av mitt barn direkte inn i Synology PhotoStation. Dersom dere har flere apper som har interessante data så send meg gjerne en PM. Endret 14. januar av NeoID 5 Siter
SveinHa Skrevet 14. januar Skrevet 14. januar NeoID skrev (14 minutter siden): Jeg kan bekrefte at jeg har en løsning som fungerer. Supert. Er dette en egen løsning for HA eller vil den kunne brukes av andre system også? Siter
nle Skrevet 14. januar Skrevet 14. januar (endret) Det som er vanskelig med en open source-løsning er å spre ordet og få folk til å faktisk bruke det. Det vil også være noen kostnader med tanke på publisering på app stores og serverhosting (om vi tenker at all utvikling skjer frivillig). Jeg er ingen utvikler, men det er jo egentlig bare en relativt enkel database med et frontend som agerer med kart, lokasjon, etc. @NeoID Bra jobba. Men du tenker altså å sette opp en egen API for alle på din kappe? 🙂 Endret 14. januar av nle Siter
NeoID Skrevet 5. februar Skrevet 5. februar (endret) Er ikke helt ferdig med API'et enda pga sykdom og andre ting som må prioriteres, men her er koden for de av dere som er interessert. Det vil genere en gyldig X-API-KEY, helt uten brukernavn eller passord. 😛 def get_api_key(): # Get the session token r = requests.get('https://api.drivstoffappen.no/api/v1/authorization-sessions') api_token = r.json().get('token') # Shift the string by one byte shifted_bytes = bytearray(api_token.encode('utf-8'))[1:] + bytearray([api_token.encode('utf-8')[0]]) shifted_string = shifted_bytes.decode('utf-8') # Calculate the MD5 hash of the shifted string md5_hash = hashlib.md5(shifted_string.encode('utf-8')).hexdigest() return md5_hash Så kan du gjøre spørring via: @app.get('/api/v1/brands') async def get_brands(): headers = { 'X-API-KEY': get_api_key(), 'X-CLIENT-ID': APPLICATION_ID } r = requests.get('https://api.drivstoffappen.no/api/v1/brands', headers=headers) if not r.ok: return {"error": f"Request failed with status code {r.status_code}"} return r.json() Jeg er ikke sikker på om jeg vil sette opp et åpent API til alle og enhver, men jeg kommer nok til å hive min docker kontainer ut på github så snart jeg er fornøyd med den. Så er det en smal sak å drifte sin egen eller konvertere den til en HA integrasjon. Endret 5. februar av NeoID 6 2 Siter
NeoID Skrevet 6. februar Skrevet 6. februar 15 minutes ago, VikingOy said: Hvordan kjører du denne koden? I NodeRed? Per i dag kjører jeg det som et eget API i Docker. Det er bare et "proof of concept" på det tidspunktet fordi flere har spurt meg om å poste koden. Jobber enda med å få alle endepunkter på plass og legge til filtre som er nyttige å ha. Har tidligere hatt det slik at HA viser nærmeste stasjoner i henhold til hvor man befinner seg. Når jeg først skriver et eget API vil jeg gjøre den spørringen enklere fordi HA er ikke designet til å holde på store datamengder i sensorer/attributter. 1 Siter
Anbefalte innlegg
Bli med i samtalen
Du kan publisere innhold nå og registrere deg senere. Hvis du har en konto, logg inn nå for å poste med kontoen din.