» »

[Python] Dekodiranje nginx POST file data v ndjson

[Python] Dekodiranje nginx POST file data v ndjson

HotBurek ::

Dobro jutro.

Evo, fantje in dekline. Nov dan, nov izziv.

V Python-u berem podatke, ki iz izvora pridejo preko nginx preko uwsgi v body-ju od POST requesta, in so v binarni obliki, gre pa za ndjson format.

https://github.com/ndjson/ndjson-spec

In nikakor ne morem iz binarne oblike obrnat v string.

Tole je binarna vrednost, ki jo dobim v fajlu, ki ga zgenerira nginx:
b"\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff}\x8f\xcdN\xc30\x10\x84\xef<\xc6\x9e\xd3\xc8v\xd6\xf9\xbb\x15q\x07\x89\xf6\xd2\x0b2\xdeE\xb1\x94:\xc5\xb1\x11U\xd5w\xc7\x81\n\xa9\x87\xf6\xfa\xcd\xec\xcc\xce\t\x92#\xe8\xb1\xc3Z\xb7\xb2\x80w\x13\xed\xb0]\x90\xd2\xb5T\x058O\xfc\xfd\x0b`\xcfnt3\x9b`\x877%\x94\x16Z*(`\x8e&\xa69\xebs\xb2\x96\x99\x982\x8c\xc7\x03gD\x93M{\xf6qM\xe4\xa2\x9b\xfcs\xd8\x1e\xc8D\xce\x0ek\xbc\xe5\x91\xe9\xf1\x08\xbdO\xe3X\x00q4n\xccI'\x08l\xd9}1=]\xee3\x94\x97_\xae\xe1\xb9\x00\x0ea\n\xff\x19)\x98\xa5(w\xbfl\xaaRwm%t#\x9a\xd7\xdc\xc8\xfe3qbZ\xc7\xac.\x03VB\xafd\xbd\x91u\x8f\xa2G]\xca\xaa\xc1N*lw\x7f\xb3B\xbcgF\x94\xa8\xeb\x06\x17\xf3\x87\xf3n\x1en\xba\xdb\xb2A\x85ZV\xad\xdc\xc1\xf9\xe1\x07\x15\xf5\x9b\xc8u\x01\x00\x00"


Mislim, da bo zadeva povezana z vsebino, ki jo nginx shrani v fajl. Se pravi, header + data.

Tule sem imel isto in sem rešil: Image formating

Problem sedaj je, da nimam izvornega fajla, da bi lahko pogledal in primerjal s tem, kar nginx generira.
root@debian:/# iptraf-ng
fatal: This program requires a screen size of at least 80 columns by 24 lines
Please resize your window
  • spremenilo: HotBurek ()

socialec ::

naredi eksperiment/stestiraj z nečim, kar poznaš.

misek ::

Začetni tag 1f8b08 nakazuje, da imaš gzip stisnjene podatke. Kar bi tudi moral videti v HTTP headerjih.

HotBurek ::

TOOOOOOOOOOO!!! This is so good. 8-)

gzip: to je bila rešitev.

Server (med drugim) v hederjih dobi:

HTTP_CONTENT_ENCODING=gzip
HTTP_CONTENT_TYPE=application/x-ndjson

Jst sem bil zgol pozoren na content type.

Naredil sem en sample in dela:

import gzip;
file_conten_unzip = gzip.decompress(file_content);

logging(loginfo, str(file_conten_unzip));
logging(loginfo, str(file_conten_unzip.decode("utf-8")));

import json;

json_loads = json.loads(file_conten_unzip);

if type(json_loads) == dict:

    for key in json_loads:

        logging(loginfo, str(key) + "=" + str(json_loads[key]));

Print screen:


Delam pa tole:

Meilisearch - Working with tasks

Meilisearch - Using task webhooks

Ful hvala za pointer.

Evo, nekaj muske, za ta lepi dan: HÖR BERLIN Lily Ackermann
root@debian:/# iptraf-ng
fatal: This program requires a screen size of at least 80 columns by 24 lines
Please resize your window

Zgodovina sprememb…

  • spremenilo: HotBurek ()

socialec ::

Kdo bi si mislil - kolega pravijo:
b"\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff je značilen GZIP glava, kjer:
\x1f\x8b je GZIP magic number, ki označuje začetek GZIP datoteke,
\x08 pomeni, da je uporabljen deflate kompresijski algoritem,
preostali bajti v glavi predstavljajo različne metapodatke, npr. časovni žig, zastavice itd.


Vredno ogleda ...

TemaSporočilaOglediZadnje sporočilo
TemaSporočilaOglediZadnje sporočilo
»

[linux] echo

Oddelek: Operacijski sistemi
6825 (590) slovencl
»

WebAssembly postal standard

Oddelek: Novice / Brskalniki
419656 (6640) xmetallic
»

Pobegla baza z osebnimi in finančnimi podatki več kot polovice ameriških gospodinjste

Oddelek: Novice / Zasebnost
269650 (7292) MrStein
»

Kako narediti request z "\" v URL-ju

Oddelek: Programiranje
172288 (1563) Horejšio
»

python-mp3 datoteke

Oddelek: Programiranje
151346 (1122) RunoTheDog

Več podobnih tem