Autor | Zpráva | ||
---|---|---|---|
kajaman Profil |
#1 · Zasláno: 11. 6. 2010, 10:57:53
potřeboval bych zautomatizovat následující akci:
1, k webové aplikaci se přihlašuji pomocí jména a hesla přes formulář na nějaké vstupní stránce, třeba http://vstup.html 2, po přihlášení mě to pustí na další stránku s dalším jednoduchým formulářem, který vyplním a odešlu. 3, Jako odpověď dostanu krátký řetězec, něco jako "ano" nebo "ne" Potřeboval bych napsat skript, který vezme parametr, přihlásí se k té vzdálené aplikaci, vyplní formulář a převezme odpověď, kterou potom zpracuji ve svém skriptu. Můžete mě prosím nasměrovat? Pak už se tím nějak prokoušu... |
||
nightfish Profil |
#2 · Zasláno: 11. 6. 2010, 10:59:41
kajaman:
„Můžete mě prosím nasměrovat?“ V PHP ti pomůže curl A taky se hodí nějaký doplněk prohlížeče, který ti zobrazuje HTTP hlavičky - aby sis ověřila, jaká data a v jaké podobě se odesílají, případně přijímají. |
||
kajaman Profil |
#3 · Zasláno: 11. 6. 2010, 11:04:38
děkuju, curl mě napadl (intuitivně, vůbec ho neznám), ale nebyl jsem si jistý ... jinak používám FireBug..
|
||
Časová prodleva: 3 dny
|
|||
kajaman Profil |
#4 · Zasláno: 14. 6. 2010, 16:11:52
ahoj, zatím jsem se dopracoval k tomuto řešení, ale mám ještě doplňující dotazy:
1, stačí takhle, nebo je tam nějaká chyba (bezpečnostní nebo tak něco) 2, může provozovatel té vzdálené aplikace poznat, že se už nepřihlašuji přes prohlížeč ručně, ale že jsem si to zautomatizoval? (ne že by na tom bylo něco špatného, ale přece...) díky moc! $url = "http://vstup.html"; $ch = curl_init(); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_POSTFIELDS, array("login" => "prihlas_jmeno", "password" => "heslo")); $result = curl_exec($ch); curl_setopt($ch, CURLOPT_POSTFIELDS, array("polozka" => "hodnota")); $result2 = curl_exec($ch); curl_close($ch); if(strpos($result2, "Ano") === false) echo "zaznam neni v db"; else echo "je v db"; |
||
ninja Profil |
#5 · Zasláno: 14. 6. 2010, 19:00:13
Poznat to může podle user agenta.
Neznáme podrobnosti, ale zvažte jestli tímto přístupem nebudete porušovat autorský zákon - nezákoné vytěžování cizí databáze. |
||
kajaman Profil |
#6 · Zasláno: 14. 6. 2010, 19:58:16
ninja:
„zvažte jestli tímto přístupem nebudete porušovat autorský zákon“ Ne, já mám do té databáze legitimní přístup. Jde jen o to, že si chci ulehčit a urychlit práci... stačí nastavit hlavičku user-agent nebo tak něco? |
||
ninja Profil |
#7 · Zasláno: 14. 6. 2010, 22:57:30
kajaman: Jestli máte legitimní přístup tak nemusíte řešit user-agenta, vůbec nevadí že bude vidět přístup přes curl.
Jestli ale máte povolený přístup jen jako uživatel přes webové rozhraní, stále můžete tímto automatickým přístupem porušovat zákon. To je právě to, na co upozorňuji. |
||
kajaman Profil |
ninja:
hmm>m, děkuji za upozornění, podívám se na to, asi si prostě budu muset přečíst celý autorský zákon (pokud ovšem nevíte konkrétně na kterou část se odvoláváte?) ... Každopádně nehodlám využívat cizí db v rozporu se zákonem... „Jestli máte legitimní přístup tak nemusíte řešit user-agenta“ ... rychlost zpracování mi přinese konkurenční výhodu, takže bych rád udržel (pokud je to možné) v tajnosti, jakým způsobem pracuji... ... a k tomu kódu jsou nějaké připomínky? Mimochodem nepozná to provozovatel spíš podle Hosta, a ne podle user agenta? Jak mohu přenastavit hlavičky tak, aby to nemohl poznat? |
||
ninja Profil |
#9 · Zasláno: 15. 6. 2010, 09:35:20
§ 90 a 91 autorského zákona.
Pokud jste podnikatel, respektive učastník hospodářské soutěže, připadá v úvahu ještě nakalá hospodářská soutěž. |
||
kajaman Profil |
#10 · Zasláno: 15. 6. 2010, 09:42:03
ninja:
OK, děkuji za připomínky k legislativě. K tomu kódu nic? |
||
AM_ Profil |
#11 · Zasláno: 15. 6. 2010, 13:45:10
kajaman:
> 1, stačí takhle, nebo je tam nějaká chyba (bezpečnostní nebo tak něco) > 2, může provozovatel té vzdálené aplikace poznat, že se už nepřihlašuji přes prohlížeč ručně, ale že jsem si to zautomatizoval? > (ne že by na tom bylo něco špatného, ale přece...) funguje to, nebo ne? - ano - co ještě řešit? - ne - zjisti proč: podívej se (třeba přes mozillí livehttpheaders), jak přesně vypadá požadavek odesílaný webovým prohlížečem, a pak ho porovnej s požadavkem, který odesíláš ty. Je tam rozdíl? Zobrazí se správně? Přijde správná odpověď? není chyba až ve zpracování? |
||
kajaman Profil |
#12 · Zasláno: 15. 6. 2010, 14:27:15 · Upravil/a: kajaman
Funguje to, požadavky vypadají zcela stejně, jen host je jiný. Chtěl jsem, aby byly úplně stejné, zkoušel jsem nastavit něco jako:
curl_setopt($ch,CURLOPT_HTTPHEADER,array ("Host: ta_spravna_stranka.cz" )); ... ale na to vůbec nereaguje |
||
AM_ Profil |
#13 · Zasláno: 15. 6. 2010, 17:56:27
kajaman:
„$url = "ht>tp://vstup.html";“ teď teprva koukám, tohle rozhodně není platná URL! není problém náhodou v tom? |
||
Časová prodleva: 14 let
|
0