Httpwebrequest problem

Httpwebrequest problem
0

Witam wszystkich.

W gladiatus.pl (nie wiem czy wiecie co to za gra) zrobiłem logowanie
za pomocą httpwebrequest. Gdy wysyłam formularz z danymi do logowania to
normalnie się loguje, pobieram przy tym sh(kod, który zmienia się co
logowanie) i próbuje później zaatakować potwora poprzez link (Metoda
GET), lecz gdy używam tego linku to dostaje odpowiedź, że postać nie
jest zalogowana co jest niemożliwe. Znacie może powód? Dołączę kod, żeby
było jaśniej, jeśli możecie to proszę o pomoc.

Ten kod jest na zalogowanie się na stronę, loguje na 100%, gdyż podaje kod sh, który jest dostępny tylko po zalogowaniu.

Kopiuj
                        var request =
                System.Net.WebRequest.Create(
                    "http://s22.gladiatus.pl/game/index.php?mod=start&submod=login") as
                HttpWebRequest; //url uzyskaliśmy dzięki charlesowi
            //var ciastka = new System.Net.CookieContainer();
            request.Method = "POST"; //tym razem wysyłamy dane
            request.ContentType = "application/x-www-form-urlencoded"; //dane jakiego rodzaju wysyłamy
            request.UserAgent = "Mozilla/5.0 (Windows NT 5.1; rv:12.0) Gecko/20100101 Firefox/12.0";
            request.CookieContainer = dCookies;
            request.KeepAlive = true;
            using (var stream = request.GetRequestStream()) //strumień pozwoli nam na wpisanie danych
            {
                byte[] buffer =
                    Encoding.UTF8.GetBytes(
                        string.Format(
                            "name=asd&pass=asd&login_server=s22.gladiatus.pl")); //w stream dane wysyłamy w postaci bajtów
                stream.Write(buffer, 0, buffer.Length); //wysyłamy cała tablicę
            }
            using (var response = request.GetResponse() as HttpWebResponse)
            {
                dCookies.Add(response.Cookies);
                using (var sr = new System.IO.StreamReader(response.GetResponseStream()))
                {
                    kodStrony = sr.ReadToEnd();

                    //timer1.Enabled = true;
                    MessageBox.Show(kodStrony);
                    //string gowno = "<input id='loguj' type='submit' value='Zaloguj'/>";
                    //teraz możemy sprawdzić, czy logowanie przebiegło prawidłowe itd.
                    System.Text.RegularExpressions.Match match = System.Text.RegularExpressions.Regex.Match(kodStrony,
                                                                                      "sh=(.*)");
                    System.Text.RegularExpressions.Match match1 = System.Text.RegularExpressions.Regex.Match(kodStrony,
                                                                  "cooldown_bar_text_expedition(.*)");
                    if (!match.Success) //nie znaleźliśmy
                        return;
                    string koniec = match.Groups[0].Value;
                    sh = koniec.Substring(3, 32);
                    MessageBox.Show(sh);
                    if (!match1.Success)
                        return;
                    string bbb = match1.Groups[0].Value;
                    MessageBox.Show(bbb);
                }
            }

Dla pewności sprawdzam jeszcze raz czy string sh ma ten ciąg znaków no i
przy wyświetlaniu kodustrony przez messagebox wyskakuje strona dostępna
dla zalogowanych, kompletnie nie wiem o co chodzi i co z tym zrobić,
próbowałem już zmieniać ciasteczka, patrzyłem także czy wysyła dobre
dane w tym linku i rzeczywiście wszystko idzie ok ale odpowiedź serwera
jest "strona dostępna dla zalogowanych"

Kopiuj
            MessageBox.Show(sh);
            string authKey; //posłuży nam do przechowania auth_key
            var request = System.Net.WebRequest.Create("http://s22.gladiatus.pl/game/ajax.php?mod=location&submod=attack&location=3&stage=1&cooldown=0&a=1364770951854&sh=" + sh) as System.Net.HttpWebRequest;
            //tworzymy nowy obiekt typu WebRequest i rzutujemy go na HttpWebRequest, metoda Create przyjmuje jako parametr adres strony
            request.Method = "GET"; //nie wysylamy danych
            //var ciastka = new System.Net.CookieContainer(); //tworzymy nasz pojemnik na ciastka
            request.CookieContainer = dCookies;
            using (var response = request.GetResponse() as System.Net.HttpWebResponse)
            //rozpoczynamy "pobieranie" odpowiedzi i rzutujemy ją z WebResponse na HttpWebResponse
            {
                dCookies.Add(response.Cookies); //dodajemy do pojemnika ciastka z nagłówka Set-Cookie
                using (var sr = new System.IO.StreamReader(response.GetResponseStream()))
                //otwieramy strumień, w którym czytamy odpowiedź
                {
                    string kodStrony1 = sr.ReadToEnd();
                    MessageBox.Show(kodStrony1);
                    System.Text.RegularExpressions.Match match = System.Text.RegularExpressions.Regex.Match(kodStrony1,
                                                                                                            "Zadania");
                    System.Text.RegularExpressions.Match czas = System.Text.RegularExpressions.Regex.Match(kodStrony1,
                                                                                        "Na wyprawę");//"cooldown_bar_text_expedition(.*)");
                    if (!match.Success) //nie znaleźliśmy
                        return;
                    authKey = match.Groups[0].Value;
                    MessageBox.Show(authKey);

                    if (!czas.Success)
                        return;
                    string asd = czas.Groups[0].Value;
                    //string tak = asd.Substring(30);
                    //MessageBox.Show(tak.Replace("</div>", ""));
                    MessageBox.Show(asd);
                }
            }

Moje drugie pytanie jest następujące, jesteśmy na takiej strony http://gladiatus.pl/game/ .Aby wejść w zakładkę media przy pomocy httpwebrequest, muszę pobrać adres strony, która znajduję się w zakładce media i wysłać zapytanie za pomocą GET czy jesteśmy w tej zakładce? Może da się zrobić tak aby wejść na stronę główną czyli tutaj http://gladiatus.pl/game/ i w tym zapytaniu jakoś wysłać zadanie aby kliknęło w coś co wywoła stronę z zakładki media. Nie bardzo lubię operować tylko na linkach i nie we wszystkim mogę to zrobić dlatego pytam czy można zrealizować ten drugi sposób, bardzo mi się to przyda, gdyż czasami wejście za pomocą adresu nie działa tak jak chcę i muszę wchodzić ręcznie .

Dziękuje i pozdrawiam

0

Odświeżam, potrafi ktoś mi pomóc? Przez ten błąd nie mogę ruszyć dalej z pracą a nie potrafię tego naprawić :(

NE
  • Rejestracja:około 12 lat
  • Ostatnio:prawie 10 lat
  • Postów:22
0

Http jest protokołem bezstanowym, dlatego przegladarka zawsze musi przedstawić i wysłać odpowiednie dane odnośnie sesjii coby serwer mógł ją zidentyfikować. Wszystko to leci w zapytaniu. W twoim zapytaniu pewnie czegoś brakuję. Zobacz sobie co jak wygląda zapytanie produkowane na przykład przez firefox, polecam firebug'a i zobacz co wysyłasz ty. Porównaj powinienieś znaleŹć wtedy czemu uważa Cię za nie zalogowanego.

edytowany 1x, ostatnio: nexodg
0

Porównywałem to wszystko gdy wysyłam ręcznie i za pomocą httpwebrequest. Obie rzeczy idą tak samo, wszystko jest tak samo uzupełnione mimo tego przy requescie występuje ten błąd i nie wiem co mam robić :/

RE
Moderator
  • Rejestracja:około 18 lat
  • Ostatnio:około rok
0

Jednak coś przeoczyłeś, bo inaczej by działało. Ustaw referrer, sprawdź czy javascript nie dodaje jakieś ukrytych pól. W tym drugim kodzie nie ustawiasz UserAgenta, etc.

Kliknij, aby dodać treść...

Pomoc 1.18.8

Typografia

Edytor obsługuje składnie Markdown, w której pojedynczy akcent *kursywa* oraz _kursywa_ to pochylenie. Z kolei podwójny akcent **pogrubienie** oraz __pogrubienie__ to pogrubienie. Dodanie znaczników ~~strike~~ to przekreślenie.

Możesz dodać formatowanie komendami , , oraz .

Ponieważ dekoracja podkreślenia jest przeznaczona na linki, markdown nie zawiera specjalnej składni dla podkreślenia. Dlatego by dodać podkreślenie, użyj <u>underline</u>.

Komendy formatujące reagują na skróty klawiszowe: Ctrl+B, Ctrl+I, Ctrl+U oraz Ctrl+S.

Linki

By dodać link w edytorze użyj komendy lub użyj składni [title](link). URL umieszczony w linku lub nawet URL umieszczony bezpośrednio w tekście będzie aktywny i klikalny.

Jeżeli chcesz, możesz samodzielnie dodać link: <a href="link">title</a>.

Wewnętrzne odnośniki

Możesz umieścić odnośnik do wewnętrznej podstrony, używając następującej składni: [[Delphi/Kompendium]] lub [[Delphi/Kompendium|kliknij, aby przejść do kompendium]]. Odnośniki mogą prowadzić do Forum 4programmers.net lub np. do Kompendium.

Wspomnienia użytkowników

By wspomnieć użytkownika forum, wpisz w formularzu znak @. Zobaczysz okienko samouzupełniające nazwy użytkowników. Samouzupełnienie dobierze odpowiedni format wspomnienia, zależnie od tego czy w nazwie użytkownika znajduje się spacja.

Znaczniki HTML

Dozwolone jest używanie niektórych znaczników HTML: <a>, <b>, <i>, <kbd>, <del>, <strong>, <dfn>, <pre>, <blockquote>, <hr/>, <sub>, <sup> oraz <img/>.

Skróty klawiszowe

Dodaj kombinację klawiszy komendą notacji klawiszy lub skrótem klawiszowym Alt+K.

Reprezentuj kombinacje klawiszowe używając taga <kbd>. Oddziel od siebie klawisze znakiem plus, np <kbd>Alt+Tab</kbd>.

Indeks górny oraz dolny

Przykład: wpisując H<sub>2</sub>O i m<sup>2</sup> otrzymasz: H2O i m2.

Składnia Tex

By precyzyjnie wyrazić działanie matematyczne, użyj składni Tex.

<tex>arcctg(x) = argtan(\frac{1}{x}) = arcsin(\frac{1}{\sqrt{1+x^2}})</tex>

Kod źródłowy

Krótkie fragmenty kodu

Wszelkie jednolinijkowe instrukcje języka programowania powinny być zawarte pomiędzy obróconymi apostrofami: `kod instrukcji` lub ``console.log(`string`);``.

Kod wielolinijkowy

Dodaj fragment kodu komendą . Fragmenty kodu zajmujące całą lub więcej linijek powinny być umieszczone w wielolinijkowym fragmencie kodu. Znaczniki ``` lub ~~~ umożliwiają kolorowanie różnych języków programowania. Możemy nadać nazwę języka programowania używając auto-uzupełnienia, kod został pokolorowany używając konkretnych ustawień kolorowania składni:

```javascript
document.write('Hello World');
```

Możesz zaznaczyć również już wklejony kod w edytorze, i użyć komendy  by zamienić go w kod. Użyj kombinacji Ctrl+`, by dodać fragment kodu bez oznaczników języka.

Tabelki

Dodaj przykładową tabelkę używając komendy . Przykładowa tabelka składa się z dwóch kolumn, nagłówka i jednego wiersza.

Wygeneruj tabelkę na podstawie szablonu. Oddziel komórki separatorem ; lub |, a następnie zaznacz szablonu.

nazwisko;dziedzina;odkrycie
Pitagoras;mathematics;Pythagorean Theorem
Albert Einstein;physics;General Relativity
Marie Curie, Pierre Curie;chemistry;Radium, Polonium

Użyj komendy by zamienić zaznaczony szablon na tabelkę Markdown.

Lista uporządkowana i nieuporządkowana

Możliwe jest tworzenie listy numerowanych oraz wypunktowanych. Wystarczy, że pierwszym znakiem linii będzie * lub - dla listy nieuporządkowanej oraz 1. dla listy uporządkowanej.

Użyj komendy by dodać listę uporządkowaną.

1. Lista numerowana
2. Lista numerowana

Użyj komendy by dodać listę nieuporządkowaną.

* Lista wypunktowana
* Lista wypunktowana
** Lista wypunktowana (drugi poziom)

Składnia Markdown

Edytor obsługuje składnię Markdown, która składa się ze znaków specjalnych. Dostępne komendy, jak formatowanie , dodanie tabelki lub fragmentu kodu są w pewnym sensie świadome otaczającej jej składni, i postarają się unikać uszkodzenia jej.

Dla przykładu, używając tylko dostępnych komend, nie możemy dodać formatowania pogrubienia do kodu wielolinijkowego, albo dodać listy do tabelki - mogłoby to doprowadzić do uszkodzenia składni.

W pewnych odosobnionych przypadkach brak nowej linii przed elementami markdown również mógłby uszkodzić składnie, dlatego edytor dodaje brakujące nowe linie. Dla przykładu, dodanie formatowania pochylenia zaraz po tabelce, mogłoby zostać błędne zinterpretowane, więc edytor doda oddzielającą nową linię pomiędzy tabelką, a pochyleniem.

Skróty klawiszowe

Skróty formatujące, kiedy w edytorze znajduje się pojedynczy kursor, wstawiają sformatowany tekst przykładowy. Jeśli w edytorze znajduje się zaznaczenie (słowo, linijka, paragraf), wtedy zaznaczenie zostaje sformatowane.

  • Ctrl+B - dodaj pogrubienie lub pogrub zaznaczenie
  • Ctrl+I - dodaj pochylenie lub pochyl zaznaczenie
  • Ctrl+U - dodaj podkreślenie lub podkreśl zaznaczenie
  • Ctrl+S - dodaj przekreślenie lub przekreśl zaznaczenie

Notacja Klawiszy

  • Alt+K - dodaj notację klawiszy

Fragment kodu bez oznacznika

  • Alt+C - dodaj pusty fragment kodu

Skróty operujące na kodzie i linijkach:

  • Alt+L - zaznaczenie całej linii
  • Alt+, Alt+ - przeniesienie linijki w której znajduje się kursor w górę/dół.
  • Tab/⌘+] - dodaj wcięcie (wcięcie w prawo)
  • Shit+Tab/⌘+[ - usunięcie wcięcia (wycięcie w lewo)

Dodawanie postów:

  • Ctrl+Enter - dodaj post
  • ⌘+Enter - dodaj post (MacOS)