witam
chcę za pomocą aplikacji w C# dostać się do pliku xml
niestety dostęp uzyskuję dopiero po zalogowaniu się na stronie (jest to jedyna metoda)
w związku z tym muszę wysłać zapytanie z konkretnymi wartościami dla pól formularza logowania
problem w tym że zielonego pojęcia nie mam jak się za to zabrać :(
W związku z tym prosił bym najlepiej o jakiś dobry link (kawałki kodu też mile widziane ^^ )bo widocznie źle szukam :|
Pozdrawiam i wielkie dzięki za pomoc
System.Net i HttpWebRequest i HttpWebResponse i można próbować wysłać dane logowania i się zalogować.
no to wyskrobałem coś takiego :
Uri uri = new Uri("http://mojastronka/login.php");
WebClient client = new WebClient();
NameValueCollection collection = new NameValueCollection();
collection.Add("login", "user");
collection.Add("pass", "qaz123");
webBrowser.Document.Body.InnerHtml += uri.AbsoluteUri;
byte[] responseArray = client.UploadValues(uri.AbsoluteUri, "POST", collection);
webBrowser.Document.Body.InnerHtml += Encoding.ASCII.GetString(responseArray);
tylko że nadal nie loguje się , czy powinienem jeszcze uwzględnić ciasteczka ?
yes, indeed
niestety , pojawił się dość spory problem, id pól jest dynamiczne
Domyślam się że NIE MA sposobu aby to obejść ?
Jezeli formularz zawsze wyglada tak samo/podobnie i tylko id sie zmieniaja, to mozesz uzyc wyrazen regularnych, zeby uzyskac konkretne id.
tzn: polaczyc sie ot tak, sciagnac strone, zapisac cookiesy ktore dostaniesz, sparsowac regexpami w poszukiwaniu ID owych pol, wyslac httprequesta z danymi, identyfikatorami i cookiesami. i powinno byc ok. pamietaj o cookiesach - bez nich za kazdym httprequestem serwer bedzie najprawdopodobniej generowac nowe identyfikatory pol
wystarczy odświeżyć stronę aby id zostało zmienione,
więc wydaje mi się że jeżeli pobiorę kod formularza aby dostać nowe id, to jak będę wysyłać zapytanie z konkretnymi wartościami dla pól , to te pola dostaną już nowe id
(no chyba że źle mi się wydaje ^^ )
Nie moga dostac nowych id, bo aplikacja odbierajaca formularz tez skads musi wiedziec co przyszlo.
spradz w Twojej przegladarce czy przyjmujesz cookiesy od tej strony -- moze wlasnie przegladarka ich nie przyjmuje i stad taki efekt obserwujesz
druga rzecz: strona MOZE za kazdym razem generowac NOWE, LOSOWE id w obu polach -- i bedzie wiedziala ze te ktore jej wysylasz sa poprawne, lopatologiczne przyklady takich mechanizmow:
idpola1 = losowa liczba np. dwucyfrowa = "33"
idpola2 = "mama66tata99_132" -- chyba widac sposob generowania id2 i sprawdzania czy id1-id2 sa poprawne
albo
idpola1 = "53267535" -- przypadek ten sam. ale tutaj program ukryl podstawe "33" w smieciach i do obliczenia idpola2
idpola2 = "mama66tata99_132" -- uzywa sklejenia drugiej i przed ostatniej cyfry idpola1 = 33
albo
idpola1 = "5445" -- przypadek ten sam. ale tutaj program ukryl podstawe "33" w odwracalnym przeksztalceniu
idpola2 = "mama66tata99_132" -- matematycznym id1=(33^2)*5 i do obliczenia wartosci id2 uzywa pierwiastek(idpola1 / 5) == 33
albo
idpola1 = "5445" -- id1 = ( 33 2)*5 ==> (5445/5)0.5 = 33
idpola2 = "5041" -- id2 = ( 33 *2+5)2 ==> (50410.5-5)/2 = 33
ostatni przypadek wyglada calkiem ok, co nie? dla innych wylosowanych podstaw:
idpola1 = "1805" -- id1 = ( 19 ^2)*5
idpola2 = "1849" -- id2 = ( 19 *2+5)^2
idpola1 = "10125" -- id1 = ( 45 ^2)*5
idpola2 = "9025" -- id2 = ( 45 *2+5)^2
ale to sa czesto zle mechanizmy, poniewaz raz przechwycona para id1-id2 moze byc uzywana i uzywana i uzywana.. chyba ze bezdiesz w specjalny sposob generowac owe podstawy (u nas - 33) np. na podstawie daty.. ale to juz inne bajki
Mi chodzilo o co innego.
Aplikacja generuje strone i przy okazji nadaje id polom, chocby i losowe. Gdzies sobie te id zapisuje, po czym gdy otrzymuje formularz po wyslaniu to sobie sprawdza jakie w tej sesji byly id wylosowane.
Natomiast przy kazdym wyswietleniu strony losowane sa nowe, wiec jak najbardziej moga byc zmieniane.
Jezeli wiec odbierzesz 'wyswietlona' strone, odczytasz id i wyslesz formularz to aplikacja odbierajaca powinna wiedziec o co chodzi, zakladajac oczywiscie, ze wie, ze dla ciebie je przed chwila wygenerowala (np. po ciastkach, czy sesji)
ee no.. wiem dokladnie o co Ci chodzilo, przeciez o tym samym psalem w drugim swoim poscie :) napisalem teraz tylko, ze strona tak naprawde nie musi wcale zapamietywac tych identyfikatorow, pod warunkiem ze sa wzajemnie zalezne i weryfikowalne jako zestaw
Aaaa, no w tym sensie to nie musi zapamietywac. Chyba nie zrozumialem poprzedniego posta :)