W jaki sposób Mac OS X może zapisać szczegóły dotyczące adresu URL, z którego plik został pobrany?


Odpowiedzi:


6

Jak wspomniał Daniel, przeglądarka może przechowywać źródłowy adres URL (a także stronę odsyłającą) pobranego pliku w atrybucie rozszerzonym com.apple.metadata:kMDItemWhereFroms.

Najpierw Apple dodało to do Safari dla Mac OS X 10.4, następnie zostało dodane do Chrome / Chromium [numer 22289] , i istnieje wyjątkowa prośba o ulepszenie, aby dodać go do Firefoksa [Bug 337051] .

Jeśli chodzi o rzeczywisty kod, aby to zaimplementować, sprawdź łatkę Chromium .


Ładna historia :-) Jednak podczas korzystania z Safari nie widzę strony odsyłającej (a przynajmniej nie w nowych plikach do pobrania próbowałem sprawdzić, czy coś przeoczyłem). Może sytuacja wygląda inaczej po kliknięciu prawym przyciskiem myszy i pobraniu lub gdy pobieranie rozpoczyna się automatycznie? (Na przykład niektóre przeglądarki nie wysyłają strony odsyłającej podczas otwierania linków w nowych oknach.)
Arjan

Ach, masz rację, mdlspokazuje to dla pobierania, które rozpoczyna się automatycznie. A Finder Get Info pokazuje to jako listę oddzieloną przecinkami, której nie zauważyłem!
Arjan

6

Po pobraniu dowolnego pliku uruchomione xattr filepokaże, co przeglądarka zapisała w atrybutach rozszerzonych:

xattr mydownload.gz
com.apple.metadata: kMDItemWhereFroms
com.apple.quarantine

Następnie więcej szczegółów:

xattr -p com.apple.quarantine mydownload.gz 
0000; 4cee9d4b; Safari; 24064D6B-9854-46BC-AF73-5DE5F8042D0B | com.apple.Safari

xattr -p com.apple.metadata: kMDItemWhereFroms mydownload.gz 
62 70 6C 69 73 74 30 30 A1 01 5F 10 24 68 74 74
70 3A 2F 2F 73 75 [i tak dalej]

... lub w czytelnym formacie:

mdls -name kMDItemWhereFroms mydownload.gz
kMDItemWhereFroms = (
    „http: // some-url”
)

Możesz także ustawić te (lub dowolne atrybuty):

xattr -w jakaś nazwa jakaś wartość mydownload.gz

Dodaje też działa, chociaż to ma różne wyniki, kiedy ponownie uruchomione powyższe polecenia:

xattr -w com.apple.metadata: kMDItemWhereFroms http://example.com mydownload.gz

I dla com.apple.quarantineatrybutu, zgodnie z rozumieniem :

Zazwyczaj dane kwarantanny składają się z 4 wartości rozdzielanych średnikami (zestawu cyfr dziesiętnych o nieznanym przeznaczeniu - zazwyczaj 0000, nieprzezroczystego 8-znakowego identyfikatora , nazwy aplikacji, która utworzyła plik poddany kwarantannie, oraz interfejsu użytkownika aplikacji (Jednolity identyfikator typu) poprzedzony symbolem potoku)

Na przykład dla dwóch różnych plików pobranych przy użyciu Mozilla FireFox wygląda to następująco:

com.apple.quarantine: 0000;4b392bb2;Firefox;|org.mozilla.firefox
com.apple.quarantine: 0000;4b38d820;Firefox;|org.mozilla.firefox

Korzystając z akcji folderu Automatora, możesz uruchamiać takie polecenia dla nowych plików w określonym folderze, jeśli tego właśnie chcesz.


4

Informacje te są przechowywane w tak zwanych „atrybutach rozszerzonych”. John Siracusa ma doskonały artykuł omawiający rozszerzone atrybuty, kiedy zostały wprowadzone po raz pierwszy, w OS X 10.4: http://arstechnica.com/apple/reviews/2005/04/macosx-10-4.ars/7 .

Wygląda na to, że nie ma już strony podręcznika dla narzędzia wiersza poleceń „xattr”, ale „xattr -h” powinien pokazać podstawową pomoc.

Interfejs API na poziomie POSIX / BSD jest dostępny w /usr/include/sys/xattr.h, który definiuje funkcje C, takie jak getxattr (), setxattr (), removexattr (), listxattr () i ich kuzyni na podstawie PLIKÓW. (Te polecenia, w przeciwieństwie do 'xattr (1)', mają strony podręcznika).


3

Ustawia go aplikacja pobierająca plik. Brak wykrycia magicznego pobierania, po prostu atrybut ustawiony w pobranym pliku przez aplikację do pobierania.

Właśnie pobrałem plik zip przy użyciu wgetGoogle Chrome, Firefox i Safari i, zgodnie z oczekiwaniami, wgetpobieranie nie ma rozszerzonych atrybutów, pliki do pobrania przeglądarki mają, ponieważ są świadomi tej funkcji. Co ciekawe, pobieranie Firefox ustawia kwarantannę, ale zapomniałem ustawić com.apple.metadata:kMDItemWhereFroms, gdzie pierwotnie znajdował się pobrany plik (jego adres URL). Safari i Chrome nie ustawiają obu wget.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.