Kiedy plik do pobrania jest zarejestrowany jako taki?

21

Podczas przeglądania obrazów w obrazach google, można przypadkowo kliknąć „zapisz obraz jako” lub „wyświetl obraz” (co czasami powoduje również pobranie). Spowoduje to otwarcie okna z pytaniem, czy chcesz pobrać wspomniany plik. Jeśli jednak anulujesz, zanim cokolwiek zostanie zapisane, czy nadal będzie to postrzegane jako pobieranie ze strony „serwera”? Ponieważ nie jestem zbyt dobrze zaznajomiony z tym tematem, moje użycie „serwera” obejmuje tylko to, co jednostka może nagrać / zapisać wspomnianą aktywność.

Felix R.
źródło
4
Zarejestrowany jako taki przez kogo? Wiele programów do analizy dzienników (np. Awstats, goaccess) rozważa pobranie dowolnego pliku z określonymi sufiksami (.zip, .pdf ...). Lista rozszerzeń jest zwykle konfigurowalna. Inne oprogramowanie może wykorzystywać różne podejścia.
jjmontes

Odpowiedzi:

52

Patrząc od strony serwera, absolutnie nie ma technicznej różnicy między „przesyłaniem do przeglądania w oknie przeglądarki” a „pobieraniem do przechowywania”.

Być może serwer zapewni (mniejszy) podgląd i (większy) rzeczywisty obraz do pobrania i może rozróżnić, do którego dostępu uzyskano dostęp. Ale może rejestrować (i rejestrować) tylko dostęp do tych plików, adres IP, z którego pochodzi żądanie, ogólny „ciąg identyfikatora” oprogramowania przeglądarki - a nie zamiar klienta.

Jednak dostęp do plików nie zawsze wynika z interakcji człowieka z komputerem klienckim. Z jednej strony przeglądarki przechowują obrazy i inne dane witryn w twoim systemie, nawet jeśli nie używasz nawet opcji „zapisz obraz jako ...”. Z drugiej strony wiele przeglądarek nawet wcześniej „podąża za linkami” (to znaczy: pobiera rzeczy!) Z wyprzedzeniem , aby przyspieszyć nawigację. Pamięć podręczna przeglądarki może nawet dostać się do lokalnej kopii zapasowej w ten sposób, nawet jeśli nigdy świadomie nie uzyskałeś dostępu do tych plików!

Wreszcie użycie opcji „zapisz jako” i anulowanie (nie wybranie docelowej nazwy pliku) może zainicjować pobieranie lub nie, w zależności od implementacji używanej przeglądarki.

jvb
źródło
12
Heck: „zapisz jako” może, ale nie musi, inicjować pobieranie, niezależnie od anulowania - jeśli przeglądarka już ma obraz, po co żądać go ponownie z serwera (wskazówki „bez pamięci podręcznej” i tak dalej).
minnmass
6
W rzeczywistości może istnieć różnica, jeśli chodzi o Content-Dispositionnagłówek HTTP : inlinewskazuje widok w przeglądarce, attachmentpobieranie.
Uwe Keim
13
@UweKeim to właściwie podpowiedź z serwera. Zwykle przeglądarka podąża za nim, ale serwer nie ma możliwości oceny, czy klient jest przeglądarką, czy też przestrzega tego nagłówka. curl https://www.google.com/ -H 'User-Agent: I am really a web browser, trust me' >> /dev/null;)
ElmoVanKielmo
1
... i aby pokazać, że jest to coś więcej niż teoretyczne, rozważ pliki PDF. Historycznie były one traktowane przez przeglądarki jako pliki do pobrania, ale nowoczesne przeglądarki mogą je bezpośrednio wyświetlać.
MSalters
1
Przeglądarka rozpocznie pobieranie, chyba że ten adres URL itp. Znajduje się już w pamięci podręcznej przeglądarki. W przeciwnym razie przeglądarka nie będzie w stanie stwierdzić, jaka może być nazwa pliku, typ dokumentu, a nawet czy jest jakaś zawartość pliku do zapisania. Przeglądarka wyda jakieś żądanie do serwera, a serwer będzie „liczyć”, który jednak nie chce.
Christopher Schultz
7

Ponieważ nie jestem zbyt dobrze zaznajomiony z tym tematem, moje użycie „serwera” obejmuje tylko to, co jednostka może nagrywać / oglądać / zapisywać wspomnianą aktywność.

Chociaż serwer HTTP nie widzi anulowanego pobierania, na stronie może znajdować się kod JavaScript, który monitoruje takie zdarzenia.

JavaScript ma moduły obsługi zdarzeń, których można użyć do wykrycia kliknięcia prawym przyciskiem myszy na obrazie, i jest całkiem prawdopodobne, że można monitorować inne ruchy myszy, aby zgadnąć, jakiego wyboru dokonujesz z menu podręcznego. Następnie skrypt może łatwo wysłać informacje do serwera natychmiast lub zapisać je w lokalnej pamięci przeglądarki i wysłać później.

W konkretnym przypadku wyszukiwania grafiki Google JavaScript na tej stronie ma wiele programów obsługi nasłuchujących zdarzeń myszy. Jednak kod jest zaciemniony, więc nie jest łatwo stwierdzić, jaki rodzaj monitorowania wykonuje.

jpa
źródło
1
„Zapisz element docelowy jako” zwykle skontaktuje się z serwerem, aby uzyskać nazwę, typ i rozmiar pliku. Prawdopodobnie z HEADżądaniem HTTP zamiast GET.
Ben Voigt
@BenVoigt istnieje duża różnica między „Zapisz cel jako” a „Zapisz obraz jako”. Jeden dotyczy linków, drugi dotyczy obrazów, które są już widoczne i dlatego zostały wcześniej pobrane.
Josef
@Josef: To prawda, ale w pytaniu nie widzę nic, co wskazywałoby, że OP chce ograniczyć się do treści znajdujących się już w pamięci podręcznej. W rzeczywistości widzę silną sugestię przeciwną, w frazie „anuluj, zanim cokolwiek zostanie zapisane”.
Ben Voigt
6

To zależy od serwera.

Serwer będzie mógł zarejestrować się po rozpoczęciu pobierania (pomyśl o tym, musi wiedzieć, ponieważ sugeruje nazwę).

Serwer może również śledzić, ile bajtów zostało przesłanych i czy / kiedy połączenie zostało zamknięte, co może pokazać, czy diwnload zostało zakończone.

Istnieją również inne możliwości, takie jak wznawianie pobierania i pobieranie wielowątkowe - ale znowu, serwer może to wszystko wiedzieć i nagrywać.

Zwróć uwagę, że w szczególnym przypadku kliknięcia prawym przyciskiem myszy i pobrania obrazu możliwe jest, że pobieranie nie zostanie zarejestrowane jako pobieranie ze względu na buforowanie po stronie klienta.

Davidgo
źródło
Serwer nie sugeruje nazwy. Nie kliknięto żadnych dodatkowych żądań sieciowych, kiedy
kliknąłem
9
@DavidPostill Zależy od sposobu rozpoczęcia pobierania. Jeśli podążysz za linkiem lub przekierujesz do zasobu, a serwer odpowie Content-Disposition: attachment; filename="…"tak, aby przeglądarka wyświetliła monit o pobranie, to nawet po anulowaniu pobierania serwer będzie wiedział o żądaniu - i prawdopodobnie może nawet rozpoznać, że pobieranie zostało przerwane.
Bergi
4

Jeśli ... anulujesz, zanim cokolwiek zostanie zapisane, czy „serwer” zauważy / zarejestruje to jako pobranie?

Serwer zdalny nie powinien zauważać żadnej aktywności pobierania, ponieważ pobieranie nie zostało rozpoczęte.

Jednak zdalny serwer wie, że obraz został już pobrany , aby wyświetlić go w przeglądarce ... a kopia będzie w pamięci podręcznej przeglądarki ...

Każdy „podmiot” monitorujący bezpośrednio lokalną maszynę może zarejestrować coś związanego z tą działalnością.

DavidPostill
źródło
2
„Zapisz jako ...” spowoduje żądanie, prawda? Przeglądarka musi na przykład wiedzieć, jaką nazwę zasugerować. Adres URL może być zwykły / do pobrania, ale Content-Dispositionnagłówek będzie zawierał rzeczywistą nazwę pliku.
dane
1
@ dane Nie. Nazwa znajduje się w html pobranej strony.
DavidPostill
1
Pamiętaj, że niektóre przeglądarki, takie jak Chrome, chętnie pobierają adresy URL z pamięci podręcznej i zapisują je w pamięci podręcznej, które pojawiają się na odwiedzanej stronie.
Tobia Tesan
3
@DavidPostill Mylisz się. Nazwę można zastąpić Content-Dispositionnagłówkiem (wspomnianym już kilka razy), co oznacza, że najpierw należy złożyć wniosek . Ponadto przeglądarki mogą rozpocząć pobieranie ładunku przed wybraniem katalogu docelowego.
Lekkość ściga się z Moniką
6
Każda znana mi przeglądarka internetowa rozpocznie pobieranie natychmiast po kliknięciu linku i zrobiła to przynajmniej przez ostatnie dwadzieścia lat. Nie będą czekać, aż wybierzesz nazwę pliku - zapisze się w pliku tymczasowym (lub pamięci) i zmieni nazwę, gdy klikniesz „OK”.
Mark