Logowanie się na stronę za pomocą C#

Odpowiedz Nowy wątek
2016-11-27 18:11
0

Siema, już od dawna próbuję się zalogować na stronę "www.fcbarca.com" za pomocą C#, ale nic nie wychodzi.
Mógłby mi ktoś napisać kod który zaloguje program prawidłowo na tą stronę?
Nawet może być to kod zalogowania do 4programmers.net, bo jest to bardzo podobne.

Pozostało 580 znaków

2016-11-27 18:15
.Al
0

https://msdn.microsoft.com/en[...]ttp.httpclient(v=vs.118).aspx
Wszystko prawie gotowe

Pozostało 580 znaków

2016-11-27 18:22
0

Już tam zaglądałem i próbowałem z msdn, ale mi nie wychodziło, chodzi mi o przykład :)

Pozostało 580 znaków

2016-11-28 16:42
Biały Kaczor
1

Przy użyciu czegoś takiego jak HttpWebRequest na adres http://www.fcbarca.com/konto/zaloguj.html?r=%20/ POST'a, którego data wygląda w ten sposób user=gasdg&pass=gh4444444&remember=1. W responsie sprawdzasz czy zalogował szukając jakichś elementów w html'u, które dostępne są dopiero po zalogowaniu i to wszystko.

Pozostało 580 znaków

2016-11-28 17:08
0

Właśnie robiłem to na dziesiątki różnych sposobów, tym co podałeś również , ale nie działało.
Czy trzeba pobrać cookie GET'em pierwszy raz po to żeby drugi raz zalogować się POST'em przy pomocy tego ciasteczka?

Pozostało 580 znaków

2016-11-28 17:19
.Al
2

Pobierz stronę logowania
wyślij post
zrób przekierowanie jeśli jest
użyj CookieContainer do trzymania ciastek, dodaj CookieContainer do HttpWebRequest i HttpWebResponse

Pozostało 580 znaków

2016-11-28 20:45
0

Nie da się dodać CookieContainer do HttpWebResponse, używam WebBrowser do sprawdzania "zawartości" response i pokazuje że wpisałem niepoprawną nazwę użytkownika.

CookieContainer cookies = new CookieContainer();

HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create("http://www.fcbarca.com/konto/zaloguj.html?r=%20/");
HttpWebResponse response = null;

request.UserAgent = "Mozilla/5.0 (Windows NT 10.0; WOW64; rv:52.0) Gecko/20100101 Firefox/52.0";
request.Method = "POST";
request.CookieContainer = cookies;
request.ContentType = "text/html";

string login = "testLogin";
string password = "testPassword";

byte[] form = Encoding.UTF8.GetBytes(
    "user=" + Uri.EscapeDataString(login)
    + "&pass=" + Uri.EscapeDataString(password) +
    "&remember=1");

Stream postData = request.GetRequestStream();
postData.Write(form, 0, form.Length);
response = (HttpWebResponse)request.GetResponse();

Stream stream = response.GetResponseStream();
webBrowser1.NavigateToStream(stream);

Oczywiście podaje dane które powinny działać, a nie "TestLogin".
Próbowałem string.format wraz z konwersją do byte i było identycznie to samo.
Edit: Co ciekawe przy niepoprawnym zalogowaniu na stronę dostajemy odpowiedź że podaliśmy złe hasło i zły login, ale program dostaje odpowiedź że jest niepoprawny tylko login.
Żadna kombinacja dobrego, złego, nie wpisanego loginu czy hasła nie daje takiej odpowiedzi normalnie na stronie.

EDIT2: Dobra sam znalazłem co było źle, w content-type wpisałem typ response, a nie request, po zmienieniu działa. :)

edytowany 4x, ostatnio: ollo98, 2016-11-28 21:50

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0