Del*_*lta 3 javascript python web firebase firebase-realtime-database
免责声明:我只是边做边学,我没有恶意
所以,我想获取这个网站上列出的应用程序列表:http : //roaringapps.com/apps
我过去做过类似的事情,但网站更简单;这次我在获取此网页背后的数据时遇到了问题。
页面之间的滚动速度非常快,因此,为了了解网页的工作原理,我启动了数据包嗅探器并分析了流量。我注意到,在初始加载后,即使我在浏览器中滚动了 2500 条记录,服务器和我的客户端之间也不会交换流量。这怎么可能?
无论如何。我的理解是该网站正在从某种流中加载数据,并通过 Javascript 呈现它。我对么?
因此,我启动了 Chromium devtools 并查看了“网络”选项卡,发现向以下地址发出了 WebSocket 请求:wss://s-usc1c-nss-123.firebaseio.com
此时,在谷歌搜索之后,我尝试使用我在 devtools 窗口上看到的“v=5&ns=roaringapps”查询来查询完全相同的服务器:
from websocket import create_connection
ws = create_connection('wss://s-usc1c-nss-123.firebaseio.com')
ws.send('v=5&ns=roaringapps')
print json.loads(ws.recv())
Run Code Online (Sandbox Code Playgroud)
并得到了这个回复:
{u't': u'c', u'd': {u't': u'h', u'd': {u'h': u's-usc1c-nss-123.firebaseio.com', u's': u'JUL5t1nC2SXfGaIjwecB6G13j1OsmMVv', u'ts': 1476799051047L, u'v': u'5'}}}
Run Code Online (Sandbox Code Playgroud)
我期待看到一个 json 响应,其中包含有关应用程序等的原始数据。我做错了什么?
非常感谢!
更新
实际上,我刚刚发现该网站正在使用 json 加载其数据。我没有在迭代请求中看到它可能是因为缓存 - 但是在铬中禁用它可以解决问题。
Firebase 数据库允许您读/写 JSON 数据。但它的 SDK 并不是简单地传输原始 JSON 数据,而是在此基础上做了许多技巧以确保高效和流畅的体验。宽
你得到的是 Firebase 的有线协议。该协议没有公开记录,并且(如果您不熟悉它)试图解开它会给您带来不愉快的时间。
要在某个位置检索实际的 JSON,最简单的方法是使用Firebase 的 REST API。你可以通过简单地附加.json到 URL 并针对它触发 HTTP GET 请求来获得它。
因此,如果正在从以下位置加载初始数据:
https://mynamespace.firebaseio.com/path/to/data
Run Code Online (Sandbox Code Playgroud)
您可以通过针对以下对象触发 HTTP GET 来获取原始 JSON:
https://mynamespace.firebaseio.com/path/to/data.json
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1741 次 |
| 最近记录: |