fabric api 分析

为了解决每月总结蛋疼的手动统计 app可用率 数据,决定从 fabric.io 捞取数据。但 fabric.io 并没有公开api,只能分析页面的js和请求连接了

首先要解决登入问题

登入前要先拿到 csrf-token 才能请求登入接口
csrf-token 在https://fabric.io/login 页面的meta里 //head/meta[contains(@name, "csrf-token")]/@content


获取access_token

json
{

“frontend_access_token”: “xxxxxxxx”,
“watched_project_ids”: [
“xxxxxxxxxxxxxxxxxx”,
“xxxxxxxxxxxxxxxxxx”
]

}


然后是具体的指标,他使用的是 graphql 

请求需要加入头部
1. 填入登入拿到的 access_token
2. content-type 指定 json

bash
-H ‘Authorization: Bearer xxxxxxxxx’
-H ‘Content-Type: application/json’


可用率通过分析他的 js 发现是以 ```崩溃数/用户数```得出 ,这里需要两个API

json
用户数:
https://api-dash.fabric.io/graphql?relayDebugName=SessionAndUserMetrics
{
“query”: “query SessionAndUserMetrics($externalId:String!,$start:UnixTimestamp!,$end:UnixTimestamp!) {project(externalId:$externalId) {answers {dau:dauByBuilds(builds:[\“all\“],start:$start,end:$end) {scalar}}}“,
“variables”: {
“end”: 1535759999,
“externalId”: “xxxxxxxxxxx”,
“start”: 1533081600
}
}

json
崩溃数:
https://api-dash.fabric.io/graphql?relayDebugName=AppScalars
{
“query”: “query AppScalars($externalId:String!,$type:IssueType!,$start:UnixTimestamp!,$end:UnixTimestamp!,$filters:IssueFiltersType!) {project(externalId:$externalId) {crashlytics {scalars:scalars(synthesizedBuildVersions:[],type:$type,start:$start,end:$end,filters:$filters,buildIds:[]) {crashes}}}}“,
“variables”: {
“end”: 1533686399,
“externalId”: “xxxxxxx”,
“filters”: {},
“start”: 1531094400,
“type”: “crash”
}
}
```