如何检测 zstd 压缩?

How to detect zstd compression?

我目前正在开发一个 python 应用程序,它适用于 facebook api。众所周知,facebook很喜欢自己的技术,正在和zstd合作做数据压缩。

问题:Facebook 要么返回未压缩的正常 json 响应,要么如果响应较长,则返回压缩的 zstd json。

我现在的代码是这样的:

import zstd
import json


def handle_response(response)
    json = None
    try:
        json = json.loads(zstd.decompress(response.content))
    except:
        json = json.loads(response.text)

    return json

我目前想知道是否有更干净的方法来执行此操作甚至检测 zstd。

你做的很好。

我想您可以检查流是否以四个字节 28 b5 2f fd 开头。如果没有,则它不是 zstd 流。如果是,它可能是一个 zstd 流。在后一种情况下,您将尝试解压缩,如果失败,您将退回到仅复制输入。

事实证明这与您已经在做的完全一样,因为 zstd.decompress 做的第一件事就是寻找那个签名。