2016-03-03 119 views
5

我正在尝试使用rest-client库从Waze应用程序获取我的GPS数据。我基本上试图通过网站https://www.waze.com/虚假登录。登录后(您可以使用JohnDoeSpeedy228:gre @ tStory92)当您访问https://www.waze.com/editor/时,请在查看网络调用后点击“驱动器”以查看原始JSON数据。如何使用休息客户端从Waze获取GPS数据?

我似乎在已成功登录,但在进行请求时返回以下

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

它应该返回像这样我的所有驱动器返回的列表:

{ 
    "users":{ 
     "objects":[ 

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

这里的我在想什么:

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) 

我做错了什么?

回答

1

我的猜测是你混淆了两个账户。你确定你以JohnDoeSpeedy228的身份登录登录驱动器吗?如果手动登录到该网站时没有来自该用户的会话,我不希望代码也能正常工作。

我们找不到任何驱动器。

你是否开始使用Waze应用程序?如果是这样,请确保您使用在应用程序中使用的相同凭据登录到地图编辑器。

+0

100%不会混淆两个帐户。 – narzero

+0

是的,但我的观点是,如果手动登录时没有记录的行程,为什么您会期望REST API返回它们? –

+0

有三个记录旅行。 – narzero

相关问题