Fórum Root.cz

Hlavní témata => Software => Téma založeno: kosin 12. 05. 2018, 14:44:35

Název: Použití curl na MHD spojení
Přispěvatel: kosin 12. 05. 2018, 14:44:35
cau vespolek,
je mozne pres curl request dostat data napr. z https://jizdnirady.idnes.cz/brno/spojeni/ spojeni z jedne zastavky na druhou? tzn. nemusim vyklikavat porad to same na webu ale ve vysledku se mi to bude zobrazovat nekde na displeji na RPi s aktualizaci kazdych x minut? diky
Název: Re:curl na MHD spojeni
Přispěvatel: ožana 12. 05. 2018, 15:04:01
Ti nebrání ti to zkusit. Browser, konzole, logger požadavků.
Ale:
.možná bez cookies to nepůjde
. možná tam bude nějaká kontrola proti csrf (že post\get request bude chtít token z minulého requestu)

ale třeba už konečna udělali api
Název: Re:curl na MHD spojeni
Přispěvatel: kosin 12. 05. 2018, 16:01:23
po trochu googlovani jsem narazil na jejich API (https://www.chaps.cz/files/idos/IDOS-API.pdf), tim padem dokazu zeskladat url
https://jizdnirady.idnes.cz/brno/spojeni/?f=vlhka&t=masna&date=12.5.2018&time=16:00

ale ted nevim jak vlastne ten link pouzit abych dostal vypis spoju v textove forme, mate nejaky napad? s API mam trosku zkusenosti ale spise python request v json formatu, tenhle format mi nic moc nerika.

dekuju
Název: Re:curl na MHD spojeni
Přispěvatel: David1234 12. 05. 2018, 16:48:33
To na co si narazil je jenom API na předvyplnění toho formuláře co mají na idosu. Nic jiného to neumí.
Název: Re:curl na MHD spojeni
Přispěvatel: jdusizasvym 12. 05. 2018, 17:09:30
Pošli HTTP požadavek na server iDos a ten by měl poslat odezvu v html. Html projdeš html parserem (který si samozřejmě nebudeš psát sám, ale využiješ např. Beautiful soup 4 pro Python) a sezobeš si z toho, co potřebuješ.
Název: Re:curl na MHD spojeni
Přispěvatel: jdusizasvym 12. 05. 2018, 17:12:26
Pošli HTTP požadavek na server iDos a ten by měl poslat odezvu v html. Html projdeš html parserem (který si samozřejmě nebudeš psát sám, ale využiješ např. Beautiful soup 4 pro Python) a sezobeš si z toho, co potřebuješ.

Jo na http komunikaci si taky najdi nějaký modul (knihovnu). Nemá smysl ztrácet čas tím, že si http header budeš psát sám ručně. Ručně to má smysl jen z edukativních důvodů.
Název: Re:curl na MHD spojeni
Přispěvatel: kosin 12. 05. 2018, 19:17:16
Pošli HTTP požadavek na server iDos a ten by měl poslat odezvu v html. Html projdeš html parserem (který si samozřejmě nebudeš psát sám, ale využiješ např. Beautiful soup 4 pro Python) a sezobeš si z toho, co potřebuješ.

Jo na http komunikaci si taky najdi nějaký modul (knihovnu). Nemá smysl ztrácet čas tím, že si http header budeš psát sám ručně. Ručně to má smysl jen z edukativních důvodů.

zatim to zkousim jen pres curl, ale nedari se.. zkousel jsem tuny requestu ale vysledek porad stejny, napr.

curl -H 'Content-Type: text/html' -d 'sNoFrom=vlhka&sNoTo=masna' -X POST https://jizdnirady.idnes.cz/brno/spojeni/

v odpovedi jem narazil na promnenne
var sNoFrom='Odkud';
var sNoTo='Kam';

zkousel jsem v payloadu taky davat jako key/value Odkud|Kam ale taky nic.
Vlastne jsem docela zmateny jaka metoda http requestu by to mnela byt... vim jaky je rozdil mezi POST|GET apod. ale v mem usecasu mne to trosku mate :) Jelikoz vkladam data odkud|kam a pak je potrebuju dostat zpet.
Název: Re:curl na MHD spojeni
Přispěvatel: David 12. 05. 2018, 19:27:42
Jestli jste ve Windows, nainstalujte si Fiddler proxy a tam uvidíte přesný požadavek.
Název: Re:curl na MHD spojeni
Přispěvatel: kosin 12. 05. 2018, 20:06:15
Jestli jste ve Windows, nainstalujte si Fiddler proxy a tam uvidíte přesný požadavek.

diky za tip ale mam ubuntu
Název: Re:curl na MHD spojeni
Přispěvatel: jdusizasvym 12. 05. 2018, 20:13:42
Pošli HTTP požadavek na server iDos a ten by měl poslat odezvu v html. Html projdeš html parserem (který si samozřejmě nebudeš psát sám, ale využiješ např. Beautiful soup 4 pro Python) a sezobeš si z toho, co potřebuješ.

Jo na http komunikaci si taky najdi nějaký modul (knihovnu). Nemá smysl ztrácet čas tím, že si http header budeš psát sám ručně. Ručně to má smysl jen z edukativních důvodů.

zatim to zkousim jen pres curl, ale nedari se.. zkousel jsem tuny requestu ale vysledek porad stejny, napr.

curl -H 'Content-Type: text/html' -d 'sNoFrom=vlhka&sNoTo=masna' -X POST https://jizdnirady.idnes.cz/brno/spojeni/

v odpovedi jem narazil na promnenne
var sNoFrom='Odkud';
var sNoTo='Kam';

zkousel jsem v payloadu taky davat jako key/value Odkud|Kam ale taky nic.
Vlastne jsem docela zmateny jaka metoda http requestu by to mnela byt... vim jaky je rozdil mezi POST|GET apod. ale v mem usecasu mne to trosku mate :) Jelikoz vkladam data odkud|kam a pak je potrebuju dostat zpet.

Stáhni si Wireshark a koukni se, jak to tam funguje. Nebo možná bude stačit kouknout v prohlížeči na provoz sítě (F12 a Network)
Název: Re:curl na MHD spojeni
Přispěvatel: gll 12. 05. 2018, 20:31:56
Stáhni si Wireshark a koukni se, jak to tam funguje. Nebo možná bude stačit kouknout v prohlížeči na provoz sítě (F12 a Network)

Wireshark opravdu ne.
Název: Re:curl na MHD spojeni
Přispěvatel: cinnamon 13. 05. 2018, 07:24:51
Jenom mě zajímá, co že si to vlastně chceš konkrétně zobrazovat?
Název: Re:curl na MHD spojeni
Přispěvatel: David 13. 05. 2018, 07:45:11
Fiddler je i pro Linux a Mac, měl jste se na něj podívat - https://www.telerik.com/fiddler

To je správný nástroj pro zjištění komunikace stránky :) Ne Wireshark.
Název: Re:curl na MHD spojeni
Přispěvatel: jdusizasvym 13. 05. 2018, 07:47:53
To, že s Wiresharkem neumíte, neznamená, že je špatný.   8)
Název: Re:curl na MHD spojeni
Přispěvatel: David 13. 05. 2018, 07:54:12
Děkuji za naprosto nesmyslnou odpověď. Řekl jsem, že Wireshark na to není vhodný. Ne, že je špatný. Ale na tenhle účel se nehodí.
Název: Re:curl na MHD spojeni
Přispěvatel: jdusizasvym 13. 05. 2018, 08:27:14
Děkuji za naprosto nesmyslnou odpověď. Řekl jsem, že Wireshark na to není vhodný. Ne, že je špatný. Ale na tenhle účel se nehodí.

No, když myslíš  ;) V tahání obrovského množství dat ze stránek, nebo ze serverů mám své zkušenosti a vím, že Wireshark pro tyto účely funguje. Přesvědčovat tě nebudu, moje doporučení Wiresharku bylo stejně směrováno lidem, kteří se chtějí něco naučit a trochu pochopit, jak ty protokoly (v tomhle případě HTTP(s) ) fungují a co tomu serveru poslat, aby nám vrátil, co chceme...
Název: Re:curl na MHD spojeni
Přispěvatel: David 13. 05. 2018, 08:39:35
Dobře, používejte si nástroj, jaký chcete. Mám s tím také dost zkušeností a jednodušší, než sledovat pakety ve Wiresharku, je si ten požadavek zobrazit ve Fiddleru. Jde o to se jednoduše dobrat výsledku. Není třeba při tom vypadat cool :)
Název: Re:curl na MHD spojeni
Přispěvatel: jdusizasvym 13. 05. 2018, 08:56:10
Dobře, používejte si nástroj, jaký chcete. Mám s tím také dost zkušeností a jednodušší, než sledovat pakety ve Wiresharku, je si ten požadavek zobrazit ve Fiddleru. Jde o to se jednoduše dobrat výsledku. Není třeba při tom vypadat cool :)

Nejde mi o to vypadat cool. Jde mi o to efektivně odvést práci, abych práci, kterou mám ohodnocenou na 8 hodin, udělal za 4 hodiny a další 4 zaplacené hodiny se věnoval svým věcem...
Název: Re:curl na MHD spojeni
Přispěvatel: robin martinez 13. 05. 2018, 08:56:53
wireshark, to je jak kanon na vrabce, ale proc ne... :D Nevim, jaky maj/nemaj api, ale jelikoz maji appku na mobily, tak nejaka cesta asi bude.
Název: Re:curl na MHD spojeni
Přispěvatel: David 13. 05. 2018, 08:58:45
Právě jsem se vám snažil vysvětlit, že pro tenhle účel je rychlejší Fiddler. Možná jste ho ale nikdy nezkusil, tak to nemůžete posoudit.
Název: Re:curl na MHD spojeni
Přispěvatel: jdusizasvym 13. 05. 2018, 09:23:22
Právě jsem se vám snažil vysvětlit, že pro tenhle účel je rychlejší Fiddler. Možná jste ho ale nikdy nezkusil, tak to nemůžete posoudit.

Nemůžu znát všechno, tak dobře na tom zase nejsem.  ;D :( Efektivnější nástroje existovat mohou, to nepopírám. Ten Fiddler vyzkouším a uvidím. Opět mám Windows, takže to můžu zkusit.
Název: Re:curl na MHD spojeni
Přispěvatel: Fukjemi 13. 05. 2018, 09:51:20
Ahoj, když by se ti to povedlo, měl bych o tuto funkcionalitu zájem. Myšlenka už mne také napadla, jen nemám tolik času to vytvořit :(
Název: Re:curl na MHD spojeni
Přispěvatel: gll 13. 05. 2018, 10:29:34
Nepotřebujete žádný nástroj. Jen prohlížeč.
Název: Re:curl na MHD spojeni
Přispěvatel: snuff1987 13. 05. 2018, 10:48:44
s wiresharkom nie je ziadny problem, len ho treba trochu ovladat.. poslat poziadavku, potom Follow TCP Stream a krasne vidis co a ako sa posiela.. Fiddler je tiez OK, ale wireshark takisto .. Netreba odsudzovat nieco co neviem pouzivat.
Název: Re:curl na MHD spojeni
Přispěvatel: 13. 05. 2018, 11:03:02
Otevri si chrome, otevri idos a zmackni ctrl+shift+i. Tam si otevri network a udelej si nejakej request. Z hlavicek potom vyctes co se tam vsechno deje.

Jelikoz je to napsany nejspis v tom posratym asp.net tak tam budes bojovat s viewstatem, tzn minimalne drzet cookies bude nutnost. Have a fun
Název: Re:curl na MHD spojeni
Přispěvatel: 13. 05. 2018, 11:06:06
Mimochodem chrome inspector umi jeste jednu hezkou vec, kdyz si das pravym tlacitkem na nejakej ten request tak je tam Copy > Copy as cURL coz obcas dost usnadni praci i kdyz tady spis ne...
Název: Re:curl na MHD spojeni
Přispěvatel: 13. 05. 2018, 11:12:39
Sorry ne cookies (i kdyz mozna nakonec i ty budou potreba), ale parsovat html asi bude treba. Jednim curlem to resitelny nejspis neni...
Název: Re:curl na MHD spojeni
Přispěvatel: kosin 13. 05. 2018, 11:34:17
dik borci za tipy, zatim sem zbezne proletl moznosti jako wireshark, fiddler a primo browser a zatim pro me nejcitelnejsi byl ten browser, ale jak rikam bylo to zatim takove rychle seznameni, fiddler urcite vyzkousim taky. kazdopadne se v tom ve volnych chvilich povrtam a uvidim jaky bude vysledek. Jesli se k necemu pouzitelnemu doberu tak dam vedet. diky vsem
Název: Re:curl na MHD spojeni
Přispěvatel: kuba77 13. 05. 2018, 20:07:03
API Chapsu je tady: https://crws.docs.apiary.io/#

Nicméně pro Sailfish OS je k dispozici program v příkazovém řádku pro zjištění spojů v Idosu. Je to napsané v Pythonu, takže po rozbalení z rpm balíčku by se to mělo dát použít i na PC. https://openrepos.net/content/nodevel/spoje
Název: Re:curl na MHD spojeni
Přispěvatel: naiva 13. 05. 2018, 22:45:54
Data z chaps-u?

 :) ;) :D ;D
Název: Re:curl na MHD spojeni
Přispěvatel: gll 14. 05. 2018, 13:20:39
V tahání obrovského množství dat ze stránek, nebo ze serverů mám své zkušenosti a vím, že Wireshark pro tyto účely funguje.

jak přesně ten wireshark používáš?
Název: Re:Použití curl na MHD spojení
Přispěvatel: Buh_skoro 18. 05. 2018, 13:31:25
Ahoj, něví někdo, jak používat ten script spoje?
~/Desktop$ python ./spoje praha dunajecka radlicka
nepodařilo se zjistit hodnotu parametru 'link'

Díky.  ???
Název: Re:Použití curl na MHD spojení
Přispěvatel: gll 18. 05. 2018, 14:31:01
Ahoj, něví někdo, jak používat ten script spoje?
~/Desktop$ python ./spoje praha dunajecka radlicka
nepodařilo se zjistit hodnotu parametru 'link'

Díky.  ???

ten skript je stary. Pravdepodobne tu stranku od te doby zmenili.
Název: Re:Použití curl na MHD spojení
Přispěvatel: gll 18. 05. 2018, 14:49:15
pri odesilani formulare musis dat do postu vsechna predvyplnena pole a poslat to s cookies.

zde je jen takovy nastrel

Kód: [Vybrat]
from requests_html import HTMLSession

MESTO = 'praha'
ODKUD, KAM = 'dunajecka', 'radlicka'
URL = 'https://jizdnirady.idnes.cz/%s/spojeni/' % MESTO

def fill_form(d, odkud, kam):
    d('label:contains("Odkud")').parent().find('input').val(odkud)
    d('label:contains("Kam")').parent().find('input').val(kam)
    return d

def form_data(d):
    return {e.name:e.value for e in d('form input')}

session = HTMLSession()
d = session.get(URL).html.pq
data = form_data(fill_form(d, ODKUD, KAM))
res_d = session.post(URL, data=data).html.pq
print(res_d)

res_d je stranka s vysledky, ze ktere si muzes vyselektovat co potrebujes. Je to pyquery objekt.
Název: Re:curl na MHD spojeni
Přispěvatel: jdusizasvym 18. 05. 2018, 14:57:28
V tahání obrovského množství dat ze stránek, nebo ze serverů mám své zkušenosti a vím, že Wireshark pro tyto účely funguje.

jak přesně ten wireshark používáš?

Častěji používám Záznam síťové aktivity v Chrome, ale pokud dojde na Wireshark, tak normálně zapnu a pak filtruju http protokol a adresu/doménu serveru
Název: Re:curl na MHD spojeni
Přispěvatel: gll 18. 05. 2018, 15:41:58
V tahání obrovského množství dat ze stránek, nebo ze serverů mám své zkušenosti a vím, že Wireshark pro tyto účely funguje.

jak přesně ten wireshark používáš?

Častěji používám Záznam síťové aktivity v Chrome, ale pokud dojde na Wireshark, tak normálně zapnu a pak filtruju http protokol a adresu/doménu serveru

kolik stránek dnes funguje na http? https bys musel dešifrovat.