IdHTTP, Niekompletne dane

problemy z tworzeniem programów do obsługi sieci, internetu, e-mail itp..

IdHTTP, Niekompletne dane

Nowy postprzez lolek41234 » środa, 10 marca 2010, 23:02

Witam :)

Piszę mały programik, taki minibocik. Używam IdHTTP i mam kilka pytań, a mianowicie:
- Aby strumień danych przesłanych (z serwera) 'do mnie' był skompresowany gzip'em wystarczy w AcceptEncoding dopisać: gzip, tak? Oraz, czy ja muszę kompresować dane, wysyłając je na serwer.
- Kod źródłowy strony pobranej przez ten komponent jest jakby powiedzieć... niepełny. Brakuje mi części kodu (jakieś 20%), a niektóre potrzebne informacje (np. link przekierowujący do wylogowania, gdzie jest za każdym razem inne, unikalne 'id') ukryte są np. pod postacią 'label_text_148799'). Co z tym fantem można zrobić? Od razu mówię, że czy to snifferem, czy 'Zapis strony' w Mozilli daje pełny 'obraz' strony.

Piszę z pamięci i z innego komputera, jutro postaram się opisać sprawę bardziej szczegółowo,ale jak już komuś coś świta, to chętnie przyjmę każdą dawkę informacji.

Pozdrawiam i dziękuję za każdą mądrą wypowiedź! :mrgreen:
Avatar użytkownika
lolek41234
Bladawiec
Bladawiec
 
Posty: 2
Dołączył(a): środa, 10 marca 2010, 22:41
Podziękował : 0
Otrzymał podziękowań: 0
System operacyjny: Windows XP Pro SP2
Kompilator: C++ Builder
Gadu Gadu: 0
    Windows XPFirefox

Re: IdHTTP, Niekompletne dane

Nowy postprzez Cyfrowy Baron » czwartek, 11 marca 2010, 08:36

Za mało danych.

AcceptEncoding - określa kodowanie za pomocą którego zostanie przesłana zawartość, np:

Kod: Zaznacz cały
  AcceptEncoding = "compress; q=.5, gzip";




Kod źródłowy strony pobranej przez ten komponent jest jakby powiedzieć... niepełny [...] link przekierowujący do wylogowania, gdzie jest za każdym razem inne, unikalne 'id') ukryte są np. pod postacią 'label_text_148799')


Są ukryte, gdyż nie są dostępne dla użytkownika strony, unikalne identyfikatory, hasła itp. są przechowywane w bazie danych MySQL i nie da się ich podejrzeć za pomocą przeglądarki. Potrzebny byłby pełne dostęp do bazy MySQL na serwerze. Nie znam się zbyt dobrze na tym, nie wiem czy właśnie o to tobie chodzi, ale tak to mniej więcej wygląda.
Avatar użytkownika
Cyfrowy Baron
Administrator
Administrator
 
Posty: 4716
Dołączył(a): niedziela, 13 lipca 2008, 15:17
Podziękował : 12
Otrzymał podziękowań: 442
System operacyjny: Windows 7 x64 SP1
Kompilator: Embarcadero RAD Studio XE2
C++ Builder XE2 Update 4
SKYPE: cyfbar
Gadu Gadu: 0
    Windows XPFirefox

Re: IdHTTP, Niekompletne dane

Nowy postprzez polymorphism » czwartek, 11 marca 2010, 10:31

- Aby strumień danych przesłanych (z serwera) 'do mnie' był skompresowany gzip'em wystarczy w AcceptEncoding dopisać: gzip, tak?

Tak, choć jeśli serwer nie będzie w stanie wysłać skompresowanych danych, zwróci (tzn. powinien zwrócić) błąd 406.

(...) czy ja muszę kompresować dane, wysyłając je na serwer.

Nie.

(...) a niektóre potrzebne informacje (np. link przekierowujący do wylogowania, gdzie jest za każdym razem inne, unikalne 'id') ukryte są np. pod postacią 'label_text_148799')

A co to ma wspólnego z niepełną zawartością strony?

Są ukryte, gdyż nie są dostępne dla użytkownika strony, unikalne identyfikatory (...) są przechowywane w bazie danych MySQL

Nie do końca. Większość dzisiejszych stron jest generowana dynamicznie, między innymi w skryptach PHP, stąd i te unikalne identyfikatory generowane są na podstawie różnych danych, unikalnych dla danej sesji. Powody stosowania tego typu trików mogą być rożne, niewątpliwie jednym z nich może być kwestia bezpieczeństwa.
C++ Reference - opis wszystkich klas STL-a i funkcji C.
Avatar użytkownika
polymorphism
Doświadczony Programista ● Moderator
Doświadczony Programista ● Moderator
 
Posty: 2156
Dołączył(a): piątek, 19 grudnia 2008, 13:04
Podziękował : 0
Otrzymał podziękowań: 200
System operacyjny: Windows 8.1
Windows 10
Linux Mint 21.1
Kompilator: Visual Studio
Visual Studio Code
MSYS2 (MinGW, clang)
g++
clang
Gadu Gadu: 0
    Windows XPFirefox

Re: IdHTTP, Niekompletne dane

Nowy postprzez Cyfrowy Baron » czwartek, 11 marca 2010, 10:42

Powody stosowania tego typu trików mogą być rożne, niewątpliwie jednym z nich może być kwestia bezpieczeństwa.


O to mi właśnie chodziło - kwestia bezpieczeństwa, więc użytkownik nie ma do nich dostępu. Jak to jednak wygląda w przypadku forów phpBB?! Wydaje mi się, że ID użytkownika i wszytko to co potrzebne do zalogowania jest pobierane z bazy MySQL?! :?: :!:
Avatar użytkownika
Cyfrowy Baron
Administrator
Administrator
 
Posty: 4716
Dołączył(a): niedziela, 13 lipca 2008, 15:17
Podziękował : 12
Otrzymał podziękowań: 442
System operacyjny: Windows 7 x64 SP1
Kompilator: Embarcadero RAD Studio XE2
C++ Builder XE2 Update 4
SKYPE: cyfbar
Gadu Gadu: 0
    Windows XPFirefox

Re: IdHTTP, Niekompletne dane

Nowy postprzez polymorphism » czwartek, 11 marca 2010, 11:09

Wydaje mi się, że ID użytkownika i wszytko to co potrzebne do zalogowania jest pobierane z bazy MySQL?!

Owszem, ale przecież nie wszystkie strony/fora wymagają logowania, a co za tym idzie nie muszą mieć dostępu do bazy danych, pomimo to stosują tego typu zabezpieczenia (vide captcha). To, o czym piszesz, to trochę inna sprawa, dotycząca kont użytkowników.
C++ Reference - opis wszystkich klas STL-a i funkcji C.
Avatar użytkownika
polymorphism
Doświadczony Programista ● Moderator
Doświadczony Programista ● Moderator
 
Posty: 2156
Dołączył(a): piątek, 19 grudnia 2008, 13:04
Podziękował : 0
Otrzymał podziękowań: 200
System operacyjny: Windows 8.1
Windows 10
Linux Mint 21.1
Kompilator: Visual Studio
Visual Studio Code
MSYS2 (MinGW, clang)
g++
clang
Gadu Gadu: 0
    Windows XPFirefox

Re: IdHTTP, Niekompletne dane

Nowy postprzez lolek41234 » czwartek, 11 marca 2010, 15:49

Cyfrowy Baron napisał(a):Są ukryte, gdyż nie są dostępne dla użytkownika strony, unikalne identyfikatory, hasła itp. są przechowywane w bazie danych MySQL i nie da się ich podejrzeć za pomocą przeglądarki. Potrzebny byłby pełne dostęp do bazy MySQL na serwerze. Nie znam się zbyt dobrze na tym, nie wiem czy właśnie o to tobie chodzi, ale tak to mniej więcej wygląda.


Problem w tym, że np. w Mozilli mogę zobaczyć 'całą' zawartość strony, a zamiast np. 'label_text_148799' widzę normalny link.

Jeśli mówicie, że niektóre elementy są dodawane dynamicznie, to od czego zacząć? Po udanym zalogowaniu na stronę (od razu mówię, że jest to gra via www), wysyłam normalne zapytanie Get i dostaję właśnie niepełny strumień danych. Co z tym fantem zrobić?

Pozdrawiam i dziękuję za zaangażowanie :)
Avatar użytkownika
lolek41234
Bladawiec
Bladawiec
 
Posty: 2
Dołączył(a): środa, 10 marca 2010, 22:41
Podziękował : 0
Otrzymał podziękowań: 0
System operacyjny: Windows XP Pro SP2
Kompilator: C++ Builder
Gadu Gadu: 0
    Windows XPFirefox

Re: IdHTTP, Niekompletne dane

Nowy postprzez Cyfrowy Baron » czwartek, 11 marca 2010, 16:05

Komponent TIdHttp pobiera dokładnie to samo co przeglądarka. Ten komponent nie dokonuje żadnej modyfikacji kodu, więc nie zamieni "normalnego linku" na tekst label_text_148799.

Przede wszystkim nie uzupełniłeś profilu, więc nie wiadomo w jakim środowisku programujesz, a np. różnice między C++Builder 2007 i C++Builder 2009 są już na tyle istotne, że kod ze starszej wersji w nowej działał nie będzie.

Nie podałeś żadnego kodu, więc możemy sobie gdybać i zastanawiać się co nie działa.

Nie podałeś adresu strony, więc nie wiadomo z czym mamy do czynienie.
Avatar użytkownika
Cyfrowy Baron
Administrator
Administrator
 
Posty: 4716
Dołączył(a): niedziela, 13 lipca 2008, 15:17
Podziękował : 12
Otrzymał podziękowań: 442
System operacyjny: Windows 7 x64 SP1
Kompilator: Embarcadero RAD Studio XE2
C++ Builder XE2 Update 4
SKYPE: cyfbar
Gadu Gadu: 0
    Windows XPFirefox

Re: IdHTTP, Niekompletne dane

Nowy postprzez polymorphism » czwartek, 11 marca 2010, 16:36

Komponent TIdHttp pobiera dokładnie to samo co przeglądarka. Ten komponent nie dokonuje żadnej modyfikacji kodu, więc nie zamieni "normalnego linku" na tekst label_text_148799.

Może być tak, że jakiś skrypt JS modyfikuje zawartość strony przed wyświetleniem jej, więc w poglądzie Firefox'a widzi już gotowy efekt działania takiego skryptu.

Z drugiej strony lolek41234 twierdzi, że sniffer pokazuje poprawnie zawartość, więc wygląda na to, że to nie jest kwestia skryptów. Sprawa wygląda dziwnie...

@lolek41234: daj linka do tej strony.


--- EDIT ---

Po udanym zalogowaniu na stronę (...) wysyłam normalne zapytanie Get i dostaję właśnie niepełny strumień danych.

Rozumiem, że logujesz się poprzez idHTTP, więc jak wygląda sprawa obsługi ciasteczek?
Ostatnio edytowano czwartek, 11 marca 2010, 16:48 przez polymorphism, łącznie edytowano 1 raz
C++ Reference - opis wszystkich klas STL-a i funkcji C.
Avatar użytkownika
polymorphism
Doświadczony Programista ● Moderator
Doświadczony Programista ● Moderator
 
Posty: 2156
Dołączył(a): piątek, 19 grudnia 2008, 13:04
Podziękował : 0
Otrzymał podziękowań: 200
System operacyjny: Windows 8.1
Windows 10
Linux Mint 21.1
Kompilator: Visual Studio
Visual Studio Code
MSYS2 (MinGW, clang)
g++
clang
Gadu Gadu: 0
    Windows XPFirefox

Re: IdHTTP, Niekompletne dane

Nowy postprzez Cyfrowy Baron » czwartek, 11 marca 2010, 16:45

Może być tak, że jakiś skrypt JS modyfikuje zawartość strony przed wyświetleniem jej, więc w poglądzie Firefox'a widzi już gotowy efekt działania takiego skryptu.


Czyli, że przeglądarka po załadowaniu strony uruchamia skrypt, który modyfikuje zawartość strony, a komponent TdHTTP ładuje stronę bez uaktywniania skryptu?

W takim wypadku w treści strony pobranej przez komponent powinno być odwołanie do tego skryptu. Można by było powiedzieć coś więcej, gdyby było wiadomo o jaka stronę chodzi, lub gdyby chociaż było wiadomo jak wygląda treść strony pobranej przez komponent, lub wyświetlanej przez przeglądarkę.
Avatar użytkownika
Cyfrowy Baron
Administrator
Administrator
 
Posty: 4716
Dołączył(a): niedziela, 13 lipca 2008, 15:17
Podziękował : 12
Otrzymał podziękowań: 442
System operacyjny: Windows 7 x64 SP1
Kompilator: Embarcadero RAD Studio XE2
C++ Builder XE2 Update 4
SKYPE: cyfbar
Gadu Gadu: 0
    Windows XPFirefox

Re: IdHTTP, Niekompletne dane

Nowy postprzez polymorphism » czwartek, 11 marca 2010, 16:54

Czyli, że przeglądarka po załadowaniu strony uruchamia skrypt, który modyfikuje zawartość strony, a komponent TdHTTP ładuje stronę bez uaktywniania skryptu?

Myślę, że tak. Wprawdzie nie znam tej biblioteki, ale podejrzewam, że sprawa wygląda tak samo, jak na innych tego typu klasach do obsługi protokołu HTTP. JavaScript nie jest częścią tego protokołu, tylko częścią HTML-a.
C++ Reference - opis wszystkich klas STL-a i funkcji C.
Avatar użytkownika
polymorphism
Doświadczony Programista ● Moderator
Doświadczony Programista ● Moderator
 
Posty: 2156
Dołączył(a): piątek, 19 grudnia 2008, 13:04
Podziękował : 0
Otrzymał podziękowań: 200
System operacyjny: Windows 8.1
Windows 10
Linux Mint 21.1
Kompilator: Visual Studio
Visual Studio Code
MSYS2 (MinGW, clang)
g++
clang
Gadu Gadu: 0
    Windows XPFirefox

Re: IdHTTP, Niekompletne dane

Nowy postprzez Cyfrowy Baron » czwartek, 11 marca 2010, 17:04

To mogło by wyjaśniać obecność w kodzie strony tekstu w rodzaju label_text_148799. Może to być rodzaj identyfikatora pobieranego przez skrypt, który w miejsce takiego identyfikatora wstawia inną treść.
Avatar użytkownika
Cyfrowy Baron
Administrator
Administrator
 
Posty: 4716
Dołączył(a): niedziela, 13 lipca 2008, 15:17
Podziękował : 12
Otrzymał podziękowań: 442
System operacyjny: Windows 7 x64 SP1
Kompilator: Embarcadero RAD Studio XE2
C++ Builder XE2 Update 4
SKYPE: cyfbar
Gadu Gadu: 0
    Windows XPFirefox


  • Podobne tematy
    Odpowiedzi
    Wyświetlone
    Ostatni post

Powrót do Aplikacje sieciowe

Kto przegląda forum

Użytkownicy przeglądający ten dział: Brak zalogowanych użytkowników i 13 gości

cron