嗅探Google Dashboard流量以在脚本中重现

时间:2016-05-03 14:39:42

标签: ruby http networking http-headers

因此,我尝试在Google Analytics信息中心中嗅探HTTP请求,以便编写自动脚本以将数据导出为CSV。 (快速旁白:如果有人知道如何在仪表板视图中将数据简单地导出到PDF以外的其他内容,那将对我有很大帮助。)

无论如何,我已经嗅到了流量,并试图向我需要点击的其中一个端点发出请求。我使用以下代码来执行此操作:

response = RestClient.post('https://analytics.google.com/analytics/web/getPage?id=dashboard&did=sniffed_id&ds=sniffed_ds&cid=layout-1456438532954&clientDashboardVersion=sniffed_version&hl=en_US&authuser=3', { 
:Host => 'analytics.google.com',
:'X-GAFE4-XSRF-TOKEN' => 'sniffed_token',
:'Galaxy-Ajax' => 'true',
:Accept => '*/*',
:'Proxy-Connection' => 'keep-alive',
:'Accept-Language' => 'en-us',
:'Accept-Encoding' => 'gzip, deflate',
:'Content-Type' => 'application/x-www-form-urlencoded;charset=UTF-8',
:'Origin' => 'https://analytics.google.com',
:'Content-Length' =>  '56',
:'User-Agent' =>  'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_4) AppleWebKit/601.5.17 (KHTML, like Gecko) Version/9.1 Safari/601.5.17',
:'Referer' => 'https://analytics.google.com/analytics/web/?authuser=3',
:'Connection' => 'keep-alive',
:'Cookie' => 'sniffed_cookie'
})
puts JSON.parse(response.body)

这是我在Charles看到的确切请求,这是对带有这些标题的URL的请求,然而,当我在Charles中嗅探它时我得到了所有数据,当我打印出来自我的脚本的响应时,我得到的只是{"error"=>"gaia"}

对网络请求有更多了解的人是否知道从脚本到浏览器的请求之间的区别是什么?我不确定我在这里丢失了什么,这完全是从我的嗅探请求中复制过来的,我甚至可以在Charles中重复嗅探请求,但是当我从脚本中创建它时它会失败。 / p>

是否有任何其他事项与请求一起发送,可以验证这是脚本请求?

P.S。 - 我得到了200状态代码和与查尔斯完全相同的标题,由于某种原因,我只是得到一个不同的身体。

P.P.S。 - 进一步检查后,我发现响应标头中存在一些差异,实际请求的content-typetext/javascript,而我的脚本请求为application/json还有我的脚本响应中没有发回一些标题。我不是网络知识最渊博的人,所以我不知道这些差异的含义,但是知识比我多的人可能知道。

1 个答案:

答案 0 :(得分:0)

想出来 - Google正在发送令牌两次,一次在标题中,一次在消息的有效负载中。将令牌添加到有效负载解决了这个问题。