logowanie do Turbobit

2012-08-11 20:06
0

Jedna strona jest bardzo dziwna z logowaniem. Czy ktoś z was ma tam konto (choćby darmowe?) i czas by sprawdzić w chwilę, czy potrafilibyście zalogować się przez delphi lub c++ z komponentem idHttp?

http://turbobit.net/

nawet program JDownloader nie potrafi się tam zalogować, choć dawniej potrafił bez problemu. Może wprowadzili na stronie jakieś utrudnienia. (nawet logowanie z na żywca skopiowanymy cookies z wireshark nie zadziałało mi, może coś źle robiłem). Także zwracam się do ekspertów :). Nie oczekuję żadnego kodu, co najwyżej porady jakiejś i tyle. I tylko dla tego serwisu, bo inne są normalniejsze.

Pozostało 580 znaków

2012-08-11 22:44
1

Nie widzę żadnego problemu, a co do porady to nie wiem co radzić gdyż nie dałeś swojego kodu więc dam gotowca skoru już napisałem jak sprawdzałem.

const
  USER_AGENT = 'Mozilla/5.0 (Windows NT 5.1; rv:14.0) Gecko/20100101 Firefox/14.0.1';
  CONTENT_TYPE = 'application/x-www-form-urlencoded';
  BASE_URL = 'http://turbobit.net/';
  LOGIN_URL = 'user/login';
  //%0:s - email
  //%1:s - haslo
  LOGIN_FORM_DATA_FRMT = 'user[login]=%0:s&user[pass]=%1:s&user[Bsubmit]=Zaloguj+si%%C4%%99';
var
  sl: TStringList;
begin
  IdHTTP1.HandleRedirects:= True;
  IdHTTP1.Request.UserAgent:= USER_AGENT;
  IdHTTP1.Get(BASE_URL);
  IdHTTP1.Request.ContentType:= CONTENT_TYPE;
  IdHTTP1.Request.Referer:= BASE_URL;
  sl:= TStringList.Create;
  try
  sl.Add(Format(LOGIN_FORM_DATA_FRMT, ['[email protected]', 'pass']));
  Memo1.Text:= IdHTTP1.Post(BASE_URL + LOGIN_URL, sl);
  finally
  sl.Free;
  end;
end;

Nie odpowiadam na PW w sprawie pomocy programistycznej.
Pytania zadawaj na forum, bo:
od tego ono jest ;) | celowo nie zawracasz gitary | przeczyta to więcej osób a więc większe szanse że ktoś pomoże.
edytowany 1x, ostatnio: kAzek, 2012-08-11 22:44

Pozostało 580 znaków

2012-08-11 23:58
0

dziękuję za kod, ale i tak strona nie zwraca, że zalogowało mnie. Nadal dostaje się odpowiedź z oknami do wpisania loginu i hasła świadczących, że nie jest się zalogowanym (zresztą cookies trzeba wysłać i nawet jak cookies wysyłałem [może źle, ale wydaje mi się, że dobrze, bo w wireshark wysyłało niby dobrze]) to i tak było coś nie tak.
Także jak masz jeszcze jedną chwilę to spróbuj sprawdzić za co ponownie będę wdzięczny. I dziwi mnie też to, że JDownloader nie chce logować na tej stronie od jakiegoś czasu (przejrzałem nawet co jdownloader wysyła do strony).

Weź nawet dla przykładu odpal Wireshark i skopiuj cookie (długie jest) i później w programie wyślij to ciastko do strony, nie zwróci ci kodu, że jesteś zalogowany, tylko dostaniesz kod taki jak osoba niezalogowana (w notatniku sobie wklej ten otrzymany kod źródłowy strony i ctrl + f i rzuć okiem, czy login jest w kodzie lub wyraz do wylogowania)

edytowany 2x, ostatnio: nowe, 2012-08-12 00:02
Jak to nie zwraca u mnie zwraca przecież jest w kodzie że jestem zalogowany :/ - kAzek 2012-08-12 00:04

Pozostało 580 znaków

2012-08-12 11:08
0

@kAzek
ale piszesz, że działa ci z tym kodem, który napisałeś? Czy jeszcze dopisałeś jakiś dodatkowy?
Bo jeśli mówisz tylko o tym swoim kodzie tutaj to na milion % strona nie zwraca "strony", gdzie jest się zalogowanym. Sprawdzałem dokładnie. Nie wiem w jaki sposób ty sprawdzałeś (może ty tylko zobaczyłeś odpowiedź Set-Cookie i uznałeś, że to już informacja, że zalogowało cię, jeśli tak to jesteś w błędzie, bo możesz se podać fake dane, a i tak każe ci cookies ustawić).

Pozostało 580 znaków

2012-08-12 11:16
0

Na 100% jestem zalogowany kod tylko ten co napisałem zero ustawień przy IdHTTP (tylko ten kod co napisałem z tym że hasło i login prawdziwy) nawet IdCookieMenager ani IdCompressorZLibEx nie używałem. Nie wiem może wersja Indy ma znaczenie u mnie 10.1.5 w każdym razie w kodzie strony po zalogowaniu jest email, nie ma formularza logowania zresztą wystarczy kod zapisać jako dokument .htm i ładnie wszystko widać że jestem zalogowany.


Nie odpowiadam na PW w sprawie pomocy programistycznej.
Pytania zadawaj na forum, bo:
od tego ono jest ;) | celowo nie zawracasz gitary | przeczyta to więcej osób a więc większe szanse że ktoś pomoże.

Pozostało 580 znaków

2012-08-12 13:10
0
kAzek napisał(a):

Na 100% jestem zalogowany kod tylko ten co napisałem zero ustawień przy IdHTTP (tylko ten kod co napisałem z tym że hasło i login prawdziwy) nawet IdCookieMenager ani IdCompressorZLibEx nie używałem. Nie wiem może wersja Indy ma znaczenie u mnie 10.1.5 w każdym razie w kodzie strony po zalogowaniu jest email, nie ma formularza logowania zresztą wystarczy kod zapisać jako dokument .htm i ładnie wszystko widać że jestem zalogowany.

nie wiem jak to możliwe. Ja używam najnowszej wersji delphi (XE2). Na żywca nawet wklejałem kod twój i nic, ciągle jestem niezalogowany. Na 100% mail i PW dobry wpisałem.

O_o
Może ktoś z forum jeszcze kod przetestuje? (konto na TB szybko się zakłada, maila nie trzeba potwierdzać)

edytowany 1x, ostatnio: nowe, 2012-08-12 13:10
No faktycznie pod Delphi XE2 to nie działa a pod Delphi 7 (z zainstalowanym Indy 10.1.5) działa. - kAzek 2012-08-12 14:05

Pozostało 580 znaków

2012-08-12 14:22
0

O_o
Dziękuję, że sprawdziłeś pod dwoma Delphi i poinformowałeś o tym. Miło z twojej strony.
Ale dlaczego dwie wersje idHTTP inne są? Teoretycznie powinny identyczne zapytania wysyłać... Nie pojmuję tego. Może jakiś ekspert się wypowie.
(wolałbym uniknąć logowania przez sockety lub w inny, dłuższy i nieprzyjemny sposób)

Pozostało 580 znaków

2012-08-12 16:00

Coś z ciastkami było nie tak i trzeba je ręcznie obsługiwać. Podaje logowanie ale mam obawy (nie wiem na pewno bo nie sprawdzałem) że jak będziesz chciał cokolwiek zrobić na tej stronie to będziesz musiał ręcznie przewalać ciastka z Response do Request bo jakoś Indy na tej stronie tego za Ciebie nie zrobi. Nie wiem dlaczego pod Delphi 7 kod który wcześniej dałem działa a po XE2 nie ale jedno co było źle to ciasteczka nie były przekazywane a drugie to pod XE2 trzeba każde pole dodać osobno bo inaczej wysyłane było coś takiego:
Nazwa pola: user[login]
a wartość to cala reszta czyli: [email protected]&user[pass]=tester1&user[submit]=Zaloguj+si%%C4%%99';
Czyli po prostu nie rozdzieliło parametrów. Jedyne co mi przychodzi na myśl to że może to być wina Unicode.

const
  USER_AGENT = 'Mozilla/5.0 (Windows NT 5.1; rv:14.0) Gecko/20100101 Firefox/14.0.1';
  CONTENT_TYPE = 'application/x-www-form-urlencoded';
  ACCEPT_LANGUAGE = 'pl,en-us;q=0.7,en;q=0.3';
  BASE_URL = 'http://turbobit.net/';
  LOGIN_URL = 'user/login';
var
  sl: TStringList;
  cookie: string;
  i: Integer;
begin
  //IdHTTP1.Request.Accept:= 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8';
  IdHTTP1.Request.AcceptLanguage:= ACCEPT_LANGUAGE; //tylko aby było pl

  IdHTTP1.HandleRedirects:= True;
  IdHTTP1.Request.UserAgent:= USER_AGENT;
  IdHTTP1.Get(BASE_URL);

  for i:=0 to IdHTTP1.Response.RawHeaders.Count - 1 do
  begin
    if Pos('Set-Cookie', IdHTTP1.Response.RawHeaders.Names[i]) = 1 then
    begin //trzeba bawic sie w reczna obsluge ciastek
      cookie:= IdHTTP1.Response.RawHeaders.Strings[i];
      Delete(cookie, 1, 11);  //obciac 'Set-Cookie: '
      IdHTTP1.Request.CustomHeaders.Add('Cookie: '+ cookie);
    end;
  end;

  IdHTTP1.Request.ContentType:= CONTENT_TYPE;
  IdHTTP1.Request.Referer:= BASE_URL;
  sl:= TStringList.Create;
  sl.Encoding.GetEncoding(65001); //utf-8
  try

  sl.Add('user[login][email protected]');
  sl.Add('user[pass]=tester1');
  sl.Add('user[submit]=Zaloguj się');

  Memo1.Text:= IdHTTP1.Post(BASE_URL + LOGIN_URL, sl);
  finally
  sl.Free;
  end;
end;

Nie odpowiadam na PW w sprawie pomocy programistycznej.
Pytania zadawaj na forum, bo:
od tego ono jest ;) | celowo nie zawracasz gitary | przeczyta to więcej osób a więc większe szanse że ktoś pomoże.

Pozostało 580 znaków

2012-08-12 16:59
0

książęca mość, wielcem rad jestem za pomoc :)
Po prostu dziękuję, ale takie porządne dziękuję. Działa idealnie.
swoją drogą, to nauczyłeś mnie, że cookies można wysyłać razem z path expires itd, a wcześniej wysyłałem je tak jak firefox wysyłał, czyli Cookie: nazwa1=blabla; nazwa2=blabla; nazwa3=blabla
A teraz widzę, że w twoim sposobie cookies można słać w stylu
Cookie: nazwa1=blabla; expires=Sun, 12-Aug-2012 17:56:46 GMT; path=/
Cookie: nazwa2=blabla; expires=Sun, 12-Aug-2012 17:56:46 GMT; path=/
itd

Bardzo mnie uszczęśliwiłeś :). Dziękuję

Pozostało 580 znaków

Liczba odpowiedzi na stronę

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