5

我正在尝试使用rest-client库从 Waze 应用程序获取我的 GPS 数据。我基本上是在尝试通过网站https://www.waze.com/伪造登录。登录后(您可以使用 JohnDoeSpeedy228:gre@tStory92)当您访问https://www.waze.com/editor/时,在查看网络调用后单击“驱动器”,您将看到原始 JSON 数据。

我似乎已成功登录,但是在请求返回我所有驱动器的列表时,它返回以下内容

{"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'=>'gre@tStory92'}

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)

难道我做错了什么?

4

1 回答 1

1

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

我们找不到您的任何驱动器。

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

于 2016-03-07T07:12:40.063 回答