Ingress intel api分析之一

概述

文章主要是记录自己抓取 https://www.ingress.com/r/getPlexts 接口数据做相应分析的结果与中间过程。

这个接口主要作用是获取日志信息,包括打po,占po,插脚,建link,建field,广播聊天。

接口通过post方式,上传json格式的参数,下发json结构的结果。

参数:

{
  "minLatE6": 22562501,
  "minLngE6": 114055660,
  "maxLatE6": 22575340,
  "maxLngE6": 114079349,
  "minTimestampMs": 1435485226617,
  "maxTimestampMs": -1,
  "tab": "all",
  "ascendingTimestampOrder": true,
  "v": "a9913f22cd769c2960a185abbd32fd48cb42df08"
}
  • 前四个参数两个点的经度纬度决定区域。(并没有做相应的测试,可能有出路)。
  • 接着的两个参数控制时间范围,是精确到毫秒的时间戳。
  • v 是一个鉴权的信息。在同一个session时间内,不会发生变化。
  • ascendingTimestampOrder 控制排序方式,类似与order by des/ase

时间参数的调节

由于数据大小的限制,返回的结果,最多有50条记录。
这些数据是位于[minTimestampMs,maxTimestampMs] 闭区间内的。
minTimestampMsmaxTimestampMs 都可以取-1,相当于+ ,
大体上有这四种情况。
* [ -1 ,t]
* [t,-1]
* [t1,t2]
* [-1,-1]
ascendingTimestampOrder=true 的情况下。
从最小的时间上到最大的时间的消息排序取前50条(如果有的话)。
ascendingTimestampOrder=false 的情况下。
从最大的时间上到最小的时间的消息排序取前50条(如果有的话)。
应该就是简化的如这条语句表达的。
select * from your_table where time >= min and time <=max order by time des/asc limit 50;

目前提供一个月的日志数据供查询。
min,max都为-1的情况下。
ascendingTimestampOrder=true 取的一个月前的最后的50条数据。
ascendingTimestampOrder=false 取的最新的50条数据。

鉴权信息

起鉴权作用的,有三个。
* cookies 中的 SACSID 。起一个标识sessionid的作用吧。
* cookies和http请求头中的csrftoken ,不管在 cookies或者请求头中缺少,都不能通过。
* post参数中的v ,还不清楚这个是从哪里生成的。还未追踪它的变化规律。

目前的做法是在firebug中抓了这几个值,当程序的配置参数。

想要实现的流程

定时刷新log信息,记录全天的操作信息。从这些全天的日志数据中最少可以实现的功能:

  • 指定po事件通知。
  • 给地图小范围的更新提供实时数据。
  • 玩家的常去的地,习惯路径。

还存在的问题

两次https请求出现Forbidden错误。
表现在,在程序运行期间,第一次获取数据,没有问题。第二次就出报forbidden。所以无法通过设置定时器来多次获取数据。程序单独运行一次是没有问题的。程序运行完后,再次运行,也没有问题。

排除了访问接口时间间隔的限制。
排除了http层的参数问题。
在用代理访问他网站,也存在相同的错误。
通过查找相关资料。
推测是https的session问题。
可能服务器存在一种检查机制,同一个https的session 只能发起一次数据请求。
而程序底层是建立ssl这后,一直用这条建立好的ssl来发送http的信息。

试过强制刷新https的session,未找到方式。
试过自实现底层ssl的这现方式,还未开开始。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章