Přístup na web   zodpovězená otázka

VB.NET

Dobrý den, omlouvám se předem, začínám. Stáhl jsem si VB 2010 expres a tvořím první aplikaci. Do formuláře jsem si naskládal tlačítka a chci jedním klikem přistoupit na web stránky s tím, že by program měl automaticky předat přihlašovací jméno a heslo. Jelikož jsem nenašel jak se to dá udělat, tak jsem to řešil naplněním klávesnicového bufferu s časovou smyčkou, která čeká než se načte stránka.

Private Sub GoToWebFRO(ByVal login As String, ByVal password As String)
        Process.Start(odkaz)
        SendKeys.Send("{BREAK 800}")
        For I = 1 To 4
            SendKeys.Send("{BREAK 100}{TAB}")
        Next
        SendKeys.Send(login & "{BREAK 100}{TAB}" & password & "{ENTER}")
    End Sub

Tabelátor přechází na danou pozici a tam nacpe jméno a potom heslo, které nakonec odpálí Enter. Tím otevřu přístup na stránky. Funguje mi to , ale vůbec se mi to nelíbí, určitě je na to nějaká funkce. Přistupuji na několik webu, ušetří mi to čas a nemusím si pamatovat hesla.

Prosím o radu.

Stejně tak potřebuji stahovat soubor z ftp servru, který potřebuje přihlášení. Byl bych rád za pomoc, zatím nevím jak to a kde vyhledat.

Děkuji.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

VB.NET má přímo nástroje pro práci s protokoly HTTP a FTP. To znamená, že pokud potřebujete pouze něco přes HTTP či FTP tak se obejdete bez prohlížeče.

nahlásit spamnahlásit spam 1 / 1 odpovědětodpovědět

děkuji, ftp jsem zatím nestudoval, peru se s tím přístupem na webové stránky, které otvírám v prohlížeči. Nenašel jsem nástroj, který mi tu stránku otevře bez toho abych musel zadávat jméno a heslo.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Proč vůbec řešíte věc, kterou stejně nezvládnete udělat a nepoužijete ukládání hesel a záložky přímo v prohlížeči?

nahlásit spamnahlásit spam 1 / 1 odpovědětodpovědět

Jedná se pouze o část chystaného programu, který bude využívat více lidí ve firmě.

Denně přistupuje několik lidí na desítky stránek pod různými přihlašovacími údaji, které nemusí znát.

Víc by mi pomohla rada, pokud to víte, než váš názor, že to nezvládnu. Neznáte pozadí ani důvody tohoto řešení a vaše soudy nejsou namístě. K programování se vracím po letech, mám za sebou celkem obsáhlé projekty v PC Fandu a ve VB mám za sebou tak 2 dny seznamování. Ve Win jsem doposud neměl důvod programovat. Pro výběr tohoto prostředí jsem se rozhodl i díky těmto stránkám.

Proto si myslím, že byste neměl tímto způsobem lidi odrazovat a soudit.

Děkuji.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

PC Fand - to jste mne skutečně pobavil. Vím, že to udělat nezvládnete, protože to je poměrně dost komplikovaný úkol a vy jste začátečník. Pokud to náhodou nějakým zázračným způsobem zplácáte dohromady jako výše uvedený kód, přestane to fungovat při první trochu nestandardní situaci.

nahlásit spamnahlásit spam 1 / 1 odpovědětodpovědět

Tyto stránky byly vytvořeny pro lidi , kteří zde hledají pomoc. Pokud pomáhat nechcete a toužíte ponižovat a urážet, měl byste si najít jiné místo na webu.

Ano PC Fandem jsem se živil 10 let a nestydím se za to. K programování se vracím a obejdu se bez vás.

nahlásit spamnahlásit spam 0 / 2 odpovědětodpovědět

Pro lidi, kteří hledají pomoc s konkrétními praktickými problémy, ne pro amatéry a bastlily, kteří chtějí hotové řešení, případně něco, co nejsou schopni zvládnout. Nikoho zde neponižuji ani neurážím, stejně sám zjistíte, že na to nemáte a budete nucen najít jiné řešení.

nahlásit spamnahlásit spam 1 / 1 odpovědětodpovědět

Váženej pane Linhart, mé aplikace používají k mému překvapení spokojení zákaznici již 15 let a brání se změně, nevím jakou životnost mají ty vaše? Rady jsem se od vás nedočkal přesto mám radu pro vás. Nekopejte kolem sebe - bude vám nakopáno. Nepovyšujte se - budete ponížen. Naučte se milovat lidi kolem sebe - budou vás milovat. Jistě jste v oblasti, kterou děláte dobrej a nikdo vám to nebere. Víc by se mi líbilo, kdyby jste přiznal, že řešení nevíte nebo že to VB neumožňuje. Nikdo nestojí o vaše napadání o tom, jak je kdo velký amatér, bastlíř a že na to nemá. Každý ví sám jak na tom je a v čem ho tlačí bota. Nesuďte aby jste nebyl souzen. V oboru jste se naučil dost, učte se být lidskou bytostí. Hledejte moudrost - odvděčí se vám, a přestaňte se mračit.

nahlásit spamnahlásit spam 1 / 5 odpovědětodpovědět

Nekopejte kolem sebe - bude vám nakopáno. Nepovyšujte se - budete ponížen. Naučte se milovat lidi kolem sebe - budou vás milovat.

To je velmi originální idealistický nonsens - pana Linharta určitě nikdo nenakope a ponížit se taky nenechá, to už zde leckdo zkoušel. A s milováním lidí kolem sebe, aby nás taky milovali, to snad nemyslíte vážně...

nahlásit spamnahlásit spam 0 / 2 odpovědětodpovědět

Věřte že kdyby se choval na "ulici" podobně jako to dělá občas tady tak nakopal.

nahlásit spamnahlásit spam -1 / 3 odpovědětodpovědět

Silácké řeči frustrovaného chudáka, který pro jistotu ani neuvádí svoje jméno?

nahlásit spamnahlásit spam -1 / 3 odpovědětodpovědět

Ne nebojte, nejsou to silácké řeči, ty tady vedete občas Vy, když se povyšujete nad ostatní a také je ponižujete.

nahlásit spamnahlásit spam 0 / 2 odpovědětodpovědět

Probuďte se, nikoho tady neponižuji ani sám sebe nepovyšuji, na dotaz jsem slušně odpověděl, že je to příliš komplikovaná věc, kterou jako začátečník nezvládne a až potom nastaly autorovy a vaše idiotské reakce.

nahlásit spamnahlásit spam 0 / 2 odpovědětodpovědět

Probuďte se Vy, já tady nepíšu u každého druhého příspěvku jak je to složitá věc a že to tazatel nemůže zvládnout, pokud nechcete poradit, tak neraďte, ale zdržte se těch vašich pokaždé stejných narážek, tohle opravdu nikomu nepomůže, naštěstí jsou zde i jiní členové, kteří také ví o čem píší a snahu poradit mají bez toho aniž by shazovali tazatele. Navíc podle toho co psal pan Herceg níže to zas až tak složité není.

nahlásit spamnahlásit spam 0 / 2 odpovědětodpovědět

Skúste preskúmať v Object Browseri namespace System.Net a jeho vnorené namespace.Možno Vás pri tom niečo napadne.

Ak máte možnosť web stránky, na ktoré sa chcete prihlasovať v programe meniť, pomôžu Generic Handler a Web Service.

nahlásit spamnahlásit spam 1 / 1 odpovědětodpovědět

Existují tři metody, jak to udělat:

1. Tahle, která je velmi pitomá a když vám člověk v nevhodný okamžik něco zmáčkne nebo někam klikne, je to problém. Bohužel tohle je asi jediná metoda, která bude fungovat univerzálně na všech webech.

2. Pokud přihlašovací stránku znáte, neměl by být problém ve WebBrowseru najít přihlašovací políčka podle ID a naplnit je přímo kódem. Stejným způsobem odpálit přihlašovací tlačítko.

Ale stránka se nesmí změnit, resp. ID prvků se nesmí změnit. Pokud to má být pro jednu cílenou aplikaci, je to celkem rozumné řešení.

3. Pokud můžete web upravovat, udělejte tam nějakou službu nebo handler, kterému pošlete jméno a heslo nějak zašifrované a který vás na základě toho ověří a přihlásí. Nemusíte se patlat s vyplňováním formuláře a je to nejlepší možné řešení.

Stahovat soubory z FTP serveru se dá pomocí tříd FtpWebRequest, příkladů je celá řada.

nahlásit spamnahlásit spam 2 / 2 odpovědětodpovědět

Děkuji za vyčerpávající odpověď pane Herceg. Jedná se momentálně o 3 různé weby, na které posílají data naše dataloggery. Na tyto weby přistupujeme pravidelně a kontrolujeme naše zařízení v provozu. Jedná se o weby dodavatelů technologie, které nemáme možnost upravovat. Tušil jsem, že to půjde tak, jak popisujete v bodě 2. Problematiku nastuduji, děkuji za radu.

nahlásit spamnahlásit spam 0 / 2 odpovědětodpovědět

Tak jsem si s tím hrál a není to tak těžké. Tohle třeba funguje pro přihlašovací sstránku VbNetu:

            // vytáhnout všechny elementy <input>
            var formFields = webBrowser1.Document.GetElementsByTagName("input");

            // vyplnit formulář
            foreach (HtmlElement field in formFields)
            {
                if (field.Name == "ctl00$MainContent$Login1$UserName")
                {
                    // vyplnit uživatelské jméno
                    field.SetAttribute("value", "jméno");
                }
                else if (field.Name == "ctl00$MainContent$Login1$Password")
                {
                    // vyplnit heslo
                    field.SetAttribute("value", "heslo");
                }
                else if (field.Name == "ctl00$MainContent$Login1$LoginButton")
                {
                    // odpálit tlačítko
                    field.InvokeMember("click");
                }
            }

Vyžaduje to komponentu WebBrowser. V přihlašovací stránce musíte zjistit hodnotu atributu name příslušných formulářových políček a tlačítka, pak už je to snadné. Vše musí být elementy input, jinak to pochopitelně nebude fungovat.

nahlásit spamnahlásit spam 3 / 3 odpovědětodpovědět

Pane Herceg, tak to je super, ušetřil jste mi spoustu času při hledání a zkoumání. Chystal jsem se na to vlítnout o víkendu. Opravdu vám moc děkuji, dobrá práce. Úpřimně, nečekal jsem to...

S úctou děkuji.

nahlásit spamnahlásit spam 0 odpovědětodpovědět
                       
Nadpis:
Antispam: Komu se občas házejí perly?
Příspěvek bude publikován pod identitou   anonym.
  • Administrátoři si vyhrazují právo komentáře upravovat či mazat bez udání důvodu.
    Mazány budou zejména komentáře obsahující vulgarity nebo porušující pravidla publikování.
  • Pokud nejste zaregistrováni, Vaše IP adresa bude zveřejněna. Pokud s tímto nesouhlasíte, příspěvek neodesílejte.

přihlásit pomocí externího účtu

přihlásit pomocí jména a hesla

Uživatel:
Heslo:

zapomenuté heslo

 

založit nový uživatelský účet

zaregistrujte se

 
zavřít

Nahlásit spam

Opravdu chcete tento příspěvek nahlásit pro porušování pravidel fóra?

Nahlásit Zrušit

Chyba

zavřít

feedback