You could potentially try decoding it into a proto with an untyped decoder, for instance this one https://github.com/pawitp/protobuf-decoder/blob/master/src/protobufDecoder.js
This won't give you any field names, and can't tell the difference between some fields (like int/uint etc.) but if you can decode enough fields, you should be able to with some confidence determine that it's a proto. If you need your application to be 100% reliable, then you'll need the .proto definition as well, or additional metadata, for instance a header with the content type. If you're find with it being right 99% of the time, this should be good enough.