2016-03-03 14 views
5

Sto cercando di ottenere i dati GPS dall'app Waze utilizzando la libreria rest-client. Sto fondamentalmente cercando di simulare un login tramite il sito web https://www.waze.com/. Dopo aver effettuato l'accesso (puoi utilizzare JohnDoeSpeedy228: gre @ tStory92) quando visiti https://www.waze.com/editor/, fai clic su "Unità" dopo aver esaminato le chiamate di rete per visualizzare i dati JSON non elaborati.Come ottenere dati GPS da Waze con rest-client?

mi sembra di aver con successo il login, ma al momento della richiesta di restituzione l'elenco di tutti i miei dischi restituisce il seguente

{"users"=>{"objects"=>[]}, "archives"=>{"totalSessions"=>0, "objects"=>[]}} 

Esso dovrebbe restituire qualcosa del genere:

{ 
    "users":{ 
     "objects":[ 

     ] 
    }, 
    "archives":{ 
     "totalSessions":1, 
     "objects":[ 
     { 
      "id":<REDACTED>, 
      "userID":<REDACTED>, 
      "existingRoadMeters":2839, 
      "newRoadMeters":0, 
      "totalRoadMeters":2839, 
      "startTime":1456996197000, 
      "endTime":1456996636000, 
      "hasFullSession":true 
     } 
     ] 
    } 
} 

Ecco quello che sto cercando:

require 'rest-client' 
require 'json' 

GET_CSRF_URL = "https://www.waze.com/login/get" 
SESSION_URL = "https://www.waze.com/login/create" 
SESSION_LIST_URL = "https://www.waze.com/Descartes-live/app/Archive/List" 
SESSON_DATA_URL = "https://www.waze.com/Descartes-live/app/Archive/Session" 
AUTH = {'user_id'=>'JohnDoeSpeedy228','password'=>'[email protected]'} 

req = RestClient.get(GET_CSRF_URL) 
csrfhash = req.cookies 
csrfhash['editor_env'] = 'row' 
headers = {'X-CSRF-Token'=>csrfhash['_csrf_token']} 

log = RestClient::Request.execute(
    method: :post, 
    url: SESSION_URL, 
    cookies: csrfhash, 
    headers: headers, 
    payload: AUTH 
) 

ses = RestClient::Request.execute(
    method: :get, 
    url: SESSION_LIST_URL, 
    cookies: log.cookies, 
    payload: {'minDistance'=>1000,'count'=>50, 'offset'=>0} 
) 

puts JSON.parse(ses) 

Sto facendo qualcosa di sbagliato?

risposta

1

La mia ipotesi è che si confondano due account. Sei sicuro di aver registrato un disco mentre sei loggato come JohnDoeSpeedy228? Se non ci sono sessioni da quell'utente quando si accede al sito manualmente, non mi aspetto che il codice funzioni.

Non riusciamo a trovare nessuno dei vostri dischi.

Hai già iniziato a guidare con l'app Waze? In tal caso, assicurati di aver effettuato l'accesso all'Editor mappe con le stesse credenziali utilizzate nell'app.

+0

100% nessuna confusione di due conti. – narzero

+0

Sì, ma il mio punto è che se non ci sono viaggi registrati quando si effettua l'accesso manualmente, perché dovresti aspettarti che l'API REST li restituisca? –

+0

Ci sono tre viaggi registrati. – narzero