Fórum Root.cz
Hlavní témata => Vývoj => Téma založeno: Le_Ze 13. 05. 2017, 11:28:20
-
Zdravím.
Bych potřeboval pomoct s tímto problémem.
Přihlásím se na jednu internetovou stránku přes firefox.
Chce to jméno, heslo a pak ještě pin.
Při přihlašovaní zaškrtnu přihlašovat automaticky.
Stáhnu soubor.
Když pak ve firefoxu vlezu do nástroje - stahovaní - kliknu na stažený soubor dam kopírovat stahovaný odkaz.
Zkopírovaný odkaz pak vložím do prohlížeče, vyskočí mi okno s dotazem, kam ho chci uložit.
V cookies jsem našel k té stránce autologin.
Bych potřeboval, aby se mi ten soubor stahoval automaticky třeba přes skript spouštění přes crona.
Jsem se dočet že cookies se dá poslat i přes wget.
Pujde to vyřešit a jak na to?
-
User firendly reseni cookies:
$ http example.org User-Agent:Bacon/1.0 'Cookie:valued-visitor=yes;foo=bar' X-Foo:Bar Referer:http://httpie.org/
pri pouziti https://httpie.org/
Ty hodnotu cookie bud vydestiluj z FF, lepsi je ale v jednom dotazu pres httpie udelat login, z nej si vzit tu cookie a...
-
http://stackoverflow.com/questions/1324421/how-to-get-past-the-login-page-with-wget
-
wget -q -O /dev/null --save-cookies /dev/stdout --post-data 'u=user&p=pass' 'http://example.com/login' | wget -q -O - --load-cookies /dev/stdin 'http://example.com/private/page'
-
http://stackoverflow.com/questions/1324421/how-to-get-past-the-login-page-with-wget
JJ, toto jsem našel. a zkoušel.
Takto mi to na disku stahne ale misto toho co tam ma byt je uložena ta www stranka.
wget --content-disposition https://www.-------
wget --load-cookies cookies.txt \
http://server.com/interesting/article.php
Tam kde je ten skript jsem vytvořil soubor cookies.txt a do něj skopiroval ten obsah s cookies.
Vypada takto
a%3B2%3A%7Cs%3A7%3A%22user_id%2%3Bs%3A5%3A%2262230%22%4Cs%3A3%3A%22key%22%3Bs%3A16%3A%22ecdf845b39bdaef%22%3B%7D
A nefunguje.Zas ta stažena stranka s WWW
Dělam něco špatně?
-
Hm,vzdavam to.
Koukam že to mam vše špatně.
Toto už je nad ramec mých znaloctí :-\
-
http://stackoverflow.com/questions/1324421/how-to-get-past-the-login-page-with-wget
JJ, toto jsem našel. a zkoušel.
Takto mi to na disku stahne ale misto toho co tam ma byt je uložena ta www stranka.
wget --content-disposition https://www.-------
wget --load-cookies cookies.txt \
http://server.com/interesting/article.php
Tam kde je ten skript jsem vytvořil soubor cookies.txt a do něj skopiroval ten obsah s cookies.
Vypada takto
a%3B2%3A%7Cs%3A7%3A%22user_id%2%3Bs%3A5%3A%2262230%22%4Cs%3A3%3A%22key%22%3Bs%3A16%3A%22ecdf845b39bdaef%22%3B%7D
A nefunguje.Zas ta stažena stranka s WWW
Dělam něco špatně?
Zkuste ten druhý příklad, který jsem uváděl, v první wgetu se provede přihlášení podle účtu a hesla, uložení cookies, ve druhém wgetu pak načtení uložených cookies a stažení stránky.
-
Ono je problem že tam je to jmeno - heslo a pak to ještě chce ten pin.
To už jsem zkoušel takto
wget --user=NAME --password='PASSWORD' url
-
https://addons.mozilla.org/en-US/firefox/addon/cliget/
toto ti vygeneruje kompletni url jak pro wget tak pro curl
-
jj2 - děkují moc, vyzkouším ;)
-
https://addons.mozilla.org/en-US/firefox/addon/cliget/
toto ti vygeneruje kompletni url jak pro wget tak pro curl
Firefox to umí sám o sobě - F12, panel síť, najít řádek tím požadavkem, který chceme opakovat v konzoli, pravou myší a dát "kopíroval jako curl". Pak vložit do linuxové konzole a otestovat. Je potřeba mít správnou verzi curl, aby byly všechny přepínače podporované.
Problém ale asi bude, že přihlašovací cookie budou asi časově omezené, takže pro trvalé univerzální řešení by bylo potřeba stejným způsobem odchytit požadavek na přihlášení a poté v druhém soubor stáhnout. Různé ochranné mechanismy to mohou ještě dále komplikovat. Nejlepší je, pokud služby nabízí přímo API pro realizaci dávkových úloh, ale to asi není váš případ :-)
-
Ono je problem že tam je to jmeno - heslo a pak to ještě chce ten pin.
Tak pošleš ještě ten pin.
To už jsem zkoušel takto
wget --user=NAME --password='PASSWORD' url
A to má jako dělat co?
-
Tak jsem zkusíl ten curl, jak psal jj2 a funguje. ;)
Ještě dotaz.
Když jsem to dal do bash skriptu.
Da se nějak otestovat, jestlí se mu to podařilo stahnout?
-
Da se nějak otestovat, jestlí se mu to podařilo stahnout?
predpokladam ze obecne testovanm navatove hodnoty, 0 je ok, >0 zadrhel...
curl s paramentry && echo ok || echo problem
misto echo si tam samozrejme dej co potrebujes (pokud si overis ze to takto jde pro tvuj pripad), treba nastaveni promene kterou dale ve skriptu budes kontrolovat a podle toho delat kroky jako ukoncit program, nebo znovu pustit tahani souboru po 1 minute atd...
-
Ještě jeden problem.
Když soubor chcí stahnout znovu, napiše mi to, že soubor je jíž stažen.
Jak ho přepsat?
i když ho ručně smažu, a chci stahnout znovu tak to napiše že už byl stažen.
-
Vůbec by nebylo špatné, kdybys napsal co se přesně pokoušíš stáhnout a detailní postup jakým to děláš. Zkus třeba toto:
url="http://nejakyweb/soubor"; while true; do curl -# --globoff "$url" > ~/soubor && echo -n "$url ...staženo! ";date;sleep 60; done
to by mělo stáhnout soubor každou minutu a přepsat ten starý. Pozor ale toto ti neotestuje jestli se opravdu stahuje to co má. Když by ti server poslal treba 404 tak ti to uloží do souboru ten error! Lepší bys na to měl asi nějaký robustnější script který bude postupně testovat podmínky pro stažení (jsem online? je server online? mám dost místa na disku? ...atd) a stahovat až v případě že je všecko ok. Je to sice pomalejší takový "trial by error" no těch věcí které se můžou podělat je docela hodně a takto hned přesně zjistíš kde to drhne. Stáhnout soubor pod novým názvem a ten starý smazat až v případě že se během stahování nevyskytla chyba mi přijde taky bezpečnější, než ho rovnou přepisovat.
i když ho ručně smažu, a chci stahnout znovu tak to napiše že už byl stažen.
Toto se mi moc nezdá. To ti hlásí curl nebo wget? Mrkni se do manuálu na přepínač -J to by mohlo být ono.