Fórum Root.cz

Hlavní témata => Vývoj => Téma založeno: GloGlo 02. 07. 2022, 13:19:10

Název: Jak nejlíp zjistit handshake u websocket connection v prohlížeči?
Přispěvatel: GloGlo 02. 07. 2022, 13:19:10
Snažím se scrapovat jeden web a zjistil sem, že data, který potřebuju, do prohlížeče proudí přes websocket connection. V Chrome dev tools (Network -> WS) tu WS vidím, jsou tam headers i obsah těch proudících dat (v mém případě zazipovaný, ale to je teď vedlejší). Ale abych tu websocket connection byl schopnej navázat i mimo browser a mohl se vykašlat na spouštění prohlížeče, což je hrozně pomalý a žere to moc CPU, tak nějak potřebuju tý druhý straně poslat hand-shake a ten v těch dev tools prostě nevidím. Je nějakej způsob, jak zjistit, jakej hand-shake prohlížeč posílá?
Název: Re:Jak nejlíp zjistit handshake u websocket connection v prohlížeči?
Přispěvatel: Filip Jirsák 02. 07. 2022, 13:24:03
Co si představujete pod tím „poslat druhé straně hand-shake“? Prohlížeč normálně naváže WebSocket spojení podle standardu a pak se přes něj posílají data, která v DevTools vidíte.
Název: Re:Jak nejlíp zjistit handshake u websocket connection v prohlížeči?
Přispěvatel: GloGlo 02. 07. 2022, 13:37:50
Viz třeba tenhle článeček:
https://towardsdatascience.com/websocket-retrieve-live-data-f539b1d9db1e

Zkopíroval sem si ten skript z toho článku, změnil headers a url podle těch z prohlížeče, ale když to spustím, tak se to zasekne na tom # Perform the handshake.

Když udělám jen create_connection, tak mi to prostě neposílá vůbec nic. A když tam pošlu přes to ws.send nějaký náhodný "blablabla", tak to tu connection ihned ukončí.

Název: Re:Jak nejlíp zjistit handshake u websocket connection v prohlížeči?
Přispěvatel: GloGlo 02. 07. 2022, 13:53:02
Je, už sem na to přišel, ono to bylo snadný. Ty messages jsou sent a received. Handshake je ta z toho send. když ji zkopíruju a vložím do toho ws.send, tak to funguje.
Název: Re:Jak nejlíp zjistit handshake u websocket connection v prohlížeči?
Přispěvatel: tecka 03. 07. 2022, 00:15:04
Handshake je ta z toho send.
Handshake jsou ty HTTP hlavičky, kterými se obě strany dohodnou o přechodu na WebSocket. Až potom nad tím websocketem je samozřejmě nějaký aplikační protokol, který taky potřebuješ dodržet. Ten řešíš v send.
Název: Re:Jak nejlíp zjistit handshake u websocket connection v prohlížeči?
Přispěvatel: GloGlo 03. 07. 2022, 02:22:42
Handshake je ta z toho send.
Handshake jsou ty HTTP hlavičky, kterými se obě strany dohodnou o přechodu na WebSocket. Až potom nad tím websocketem je samozřejmě nějaký aplikační protokol, který taky potřebuješ dodržet. Ten řešíš v send.

Nevím. Rozhodně si nechci hrát na experta. Zkoušel sem tři weby s live scores. Jeden začne posílat data hned, stačí mu poslat hlavičku. Jenže ty data posílá nějak zazipovaný a zakódovaný, zatím sem nepřišel na to, jak to odkodovat. U dalších dvou bylo nutný poslat ještě několik dalších příkazů (nebo jak se tomu říká), aby se ty streamy rozjely, a taky chtěji v určitých intervalech posílat ping, jinak se ten stream zastaví.
Název: Re:Jak nejlíp zjistit handshake u websocket connection v prohlížeči?
Přispěvatel: Filip Jirsák 03. 07. 2022, 09:39:53
To všechno jsou ale standardní věci WebSocket protokolu. Když chcete nějaký protokol používat, budete si muset nastudovat, jak funguje. Nemůžete čekat, že vám někdo bude vysvětlovat, jak přesně ten protokol funguje a jak ho používat, abyste mohl (nejspíš nelegálně) získávat nějaká data.
Název: Re:Jak nejlíp zjistit handshake u websocket connection v prohlížeči?
Přispěvatel: GloGlo 03. 07. 2022, 14:12:23
To všechno jsou ale standardní věci WebSocket protokolu. Když chcete nějaký protokol používat, budete si muset nastudovat, jak funguje. Nemůžete čekat, že vám někdo bude vysvětlovat, jak přesně ten protokol funguje a jak ho používat, abyste mohl (nejspíš nelegálně) získávat nějaká data.

Takže každý člověk by si měl před prvním připojením na internet nastudovat, jak funguje HTTP protokol? :-)

Jinak o právu toho vím víc než o IT a pořizování dat pro osobní potřebu je výslovně dovoleno.

Citace

§ 91
Omezení zvláštního práva pořizovatele databáze
Do práva pořizovatele databáze, která byla zpřístupněna jakýmkoli způsobem veřejnosti, nezasahuje oprávněný uživatel, který vytěžuje nebo zužitkovává kvalitativně nebo kvantitativně nepodstatné části obsahu databáze nebo její části, a to k jakémukoli účelu, za podmínky, že tento uživatel databázi užívá běžně a přiměřeně, nikoli systematicky či opakovaně, a bez újmy oprávněných zájmů pořizovatele databáze, a že nezpůsobuje újmu autorovi ani nositeli práv souvisejících s právem autorským k dílům nebo jiným předmětům ochrany obsaženým v databázi.

§92

Bezúplatné zákonné licence
Do práva pořizovatele jím zpřístupněné databáze též nezasahuje oprávněný uživatel, který vytěžuje nebo zužitkovává podstatnou část obsahu databáze

a) pro svou osobní potřebu; ustanovení § 30 odst. 3 zůstává nedotčeno,

b) pro účely vědecké nebo vyučovací, uvede-li pramen, v rozsahu odůvodněném sledovaným nevýdělečným účelem, a

c) pro účely veřejné bezpečnosti nebo správního či soudního řízení.

Název: Re:Jak nejlíp zjistit handshake u websocket connection v prohlížeči?
Přispěvatel: RDa 03. 07. 2022, 15:00:51
Takže každý člověk by si měl před prvním připojením na internet nastudovat, jak funguje HTTP protokol? :-)

Vy nepouzivate HTTP ale WebSocket - a tam bezi nativni aplikacni protokol, ktery je casto proprietarni.
V analogii.. mate jen netcat (nc) a pokousite se pripojovat na telnet, ftp, smtp, ssh, ftps, imap.. a divite se, ze vse funguje jinak :P
Název: Re:Jak nejlíp zjistit handshake u websocket connection v prohlížeči?
Přispěvatel: RDa 03. 07. 2022, 15:04:36
Jinak o právu toho vím víc než o IT a pořizování dat pro osobní potřebu je výslovně dovoleno.

Vy ale netahate data (staticka data), ale pouzivate neci sluzbu / informacni system:
http://zakony.centrum.cz/trestni-zakonik/cast-2-hlava-5-paragraf-230

Ale klidne prokazte, ze mate s provozovatelem smlouvu, a opravneni jeho systemu vyuzivate, stylem, ktery delate.
Název: Re:Jak nejlíp zjistit handshake u websocket connection v prohlížeči?
Přispěvatel: Filip Jirsák 03. 07. 2022, 15:06:36
Takže každý člověk by si měl před prvním připojením na internet nastudovat, jak funguje HTTP protokol? :-)
Pokud se připojuje pomocí HTTP klienta, kterého sám implementuje, pak ano.

Jinak o právu toho vím víc než o IT a pořizování dat pro osobní potřebu je výslovně dovoleno.
Ano, pokud je to pro vaši osobní potřebu. Také ale záleží na tom, jak se chováte k tomu cílovému systému – zda ho třeba nepřetěžujete.
Název: Re:Jak nejlíp zjistit handshake u websocket connection v prohlížeči?
Přispěvatel: GloGlo 03. 07. 2022, 23:18:19
Jinak o právu toho vím víc než o IT a pořizování dat pro osobní potřebu je výslovně dovoleno.

Vy ale netahate data (staticka data), ale pouzivate neci sluzbu / informacni system:
http://zakony.centrum.cz/trestni-zakonik/cast-2-hlava-5-paragraf-230

Ale klidne prokazte, ze mate s provozovatelem smlouvu, a opravneni jeho systemu vyuzivate, stylem, ktery delate.
Jinak o právu toho vím víc než o IT a pořizování dat pro osobní potřebu je výslovně dovoleno.

Vy ale netahate data (staticka data), ale pouzivate neci sluzbu / informacni system:
http://zakony.centrum.cz/trestni-zakonik/cast-2-hlava-5-paragraf-230

Ale klidne prokazte, ze mate s provozovatelem smlouvu, a opravneni jeho systemu vyuzivate, stylem, ktery delate.

Tak zaprvé, subsidiarita trestní represe. Trestní právo tu není od toho, aby postihovalo každé protiprávní jednání, ale jen jednání, které je závažné a ve zvýšené míře ohrožuje fungování společnosti. Příklad: neoprávněné osvojení si cizí věci je krádež, ale aby se stala trestným činem, musí mít věc hodnotu nejméně 10 tisíc korun (z tohoto pravidla jsou určité výjimky, ale to tu nemá smysl řešit). Každopádně pokud dojde ke krádeži věci nižší hodnoty, tak to trestný čin není a trestní právo se tím vůbec nezabývá. (Zabývalo by se tím správní právo a řešilo by se to podle přestupkového zákona.) Zjednodušeně řečeno tímto zákonodárce vyjadřuje, že společnost ohrožují hlavně "velké" krádeže a ty malé ji ohrožují ve zmenšené míře, čemuž potom odpovídá méně formalizovaný proces a nižší sankce.

Konkrétně k tomu odkazovanému § 230 trestního zákoníku: ten vymezuje tzv. počítačovou resp. kybernetickou kriminalitu. Skutková podstata dle odst. 1 je hlavně tzv. hacking - získání neoprávněnýho přístupu do nějakýho "počítačovýho systému nebo jeho části", přičemž "počítačový systém" je nějaký zařízení, který je schopný zpracovávat data, tzn. je to kombinace hardware + software. No a hlavně základní podmínka trestnosti je, že pachatel překonal nějaký bezpečnostní opatření, tzn. musí tam nějaký být (pokud není, tak to nemůže být trestný čin dle tohoto paragrafu), typicky se tohoto TČ dopouští pachatel, který vnikl do nějakýho systému poté, co uhádl jednoduché heslo nebo ho prolomil a nebo se tam dostal nějak sofistikovaněji - přes nějakej spoofing, exploit atd.

Odstavec 2 je trochu jinej, jeho předmět je vedle "počítačového systému" též "nosič dat", čímž se myslí medium, na který lze zapisovat data a později je přečíst zpět, tzn. např. pevný disk, RAM, CD/DVD, USB flashka apod. Každopádně nosičem dat nejsou nějaký konkrétní data, bez ohledu na to, jestli jsou nebo nejsou nějak chráněný/zašifrovaný atd. 

Trestnýho činu dle odst. 2 se dopustí pachatel, který 1) ZÍSKÁ PŘÍSTUP k tomu "počítačovému systému" nebo "nosiči dat" - nehledě na to, jestli ten přístup je oprávněnej nebo neoprávněnej - každopádně "získání přístupu" znamená, že pachatel má možnost s tím "počítačovým systémem" nějak disponovat, tzn. má možnost tam třeba spouštět programy, prohlížet soubory na disku atd a když teda má přístup tak 2) PROVEDE NĚKTERÝ ZE SKUTKŮ dle bodů a-d. Nicméně můj rozbor tohoto trestného činu zde končí, protože - jak je doufám zřejmé - nehledě na to, co s těma datama dělám, prostě u websocket connection nemám jakejkoli přístup do "počítačového systému" odesilatele, takže je prostě nemožné se dopustit tohoto trestného činu.

Pozn: jedinej trestnej čin, který mě v této souvislosti napadá, by bylo "odposlouchávání" NEVEŘEJNÝ, tzn. nějaký soukromý websocket connection - pak by to mohl být TČ porušení tajemství dopravovaných zpráv dle § 182 odst. 1 písm c) TZ