Як Mac OS X може зберігати дані про URL-адресу, з якої завантажено файл?


8

Написати цю тему Що робити з com.apple.quarantine? , Я хочу знати, як OS X може вивчити та зберегти цю інформацію в полі @. Я шукаю не спосіб відключення цієї функції, а код (або псевдокод, ідею, що завгодно) щодо реалізації цієї речі. Спасибі заздалегідь.

Відповіді:


6

Як згадував Даніель, браузер може зберігати вихідну URL-адресу (а також референс) завантаженого файлу в розширеному атрибуті com.apple.metadata:kMDItemWhereFroms.

Спочатку Apple додала це до Safari для Mac OS X 10.4, потім воно було додано до Chrome / Chromium [випуск 22289] , і є непогашений запит на покращення, щоб додати його до Firefox [Bug 337051] .

Що стосується власне коду для його здійснення, перевірте виправлення Chromium .


Приємна історія :-) Однак при використанні Safari я не бачу реферала (або принаймні не в нових завантаженнях, я намагався побачити, чи щось я пропустив). Можливо, справи відрізняються, коли клацнути правою кнопкою миші та завантажувати її, або коли завантаження починається автоматично? (Наприклад, деякі веб-переглядачі також не надсилають реферала під час відкриття посилань у нових вікнах.)
Ар'ян,

Ах, ти маєш рацію, mdlsчи показує це для завантажень, які починаються автоматично. І Інформація про Finder показує, що це список, розділений комами, що я не зміг помітити!
Ар'ян

6

Завантаживши будь-який файл, запуск xattr fileпокаже вам, що браузер зберігав у розширених атрибутах:

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

Далі, детальніше:

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 6С 69 73 74 30 30 А1 01 5F 10 24 68 74 74
70 3A 2F 2F 73 75 [тощо]

... або у читаному форматі:

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

Ви також можете встановити ці (або будь-який атрибут, який ви хочете) також:

xattr -w якесь ім'я деякого значення mydownload.gz

Наступне теж працює, навіть якщо це має різні результати при виконанні вищевказаних команд знову:

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

А для com.apple.quarantineатрибута, згідно з розумінням :

Зазвичай дані карантину складаються з набору з чотирьох крапних знаків з комою (набір десяткових цифр невідомого призначення - зазвичай 0000, непрозорий ідентифікатор з 8 символів , назва програми, яка створила файл карантину, та UTI програми (Уніфікований ідентифікатор типу) з префіксом символу труби)

Наприклад, для двох різних файлів, завантажених за допомогою Mozilla FireFox, це виглядає так:

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

Використовуючи папки "Автоматизатор", ви можете запускати такі команди для нових файлів у певній папці, якщо ви це зробите після.


4

Ця інформація зберігається у тому, що називається "розширеними атрибутами". Джон Сіракуза має чудову статтю, де обговорюються розширені атрибути, коли вони були вперше представлені, в OS X 10.4: http://arstechnica.com/apple/reviews/2005/04/macosx-10-4.ars/7 .

Здається, що для інструменту командного рядка "xattr" більше немає довідної сторінки, але "xattr -h" має відображати основну допомогу.

API / рівень API POSIX / BSD доступний у /usr/include/sys/xattr.h, який визначає такі функції C, як getxattr (), setxattr (), removexattr (), listxattr () та їх двоюрідні родичі на основі FILE. (Ці команди, на відміну від "xattr (1)", мають підручні сторінки).


3

Він встановлюється програмою, що завантажує файл. Немає магічного виявлення завантаження, а лише атрибут на завантажений файл завантажувальним файлом.

Щойно я завантажив zip-файл за допомогою wgetGoogle Chrome, Firefox та Safari, і, як очікувалося, wgetзавантаження не має розширених атрибутів, а завантаження в браузер мають, оскільки вони знають про цю функцію. Цікаво, що карантин для завантаження Firefox встановив, але забув встановити com.apple.metadata:kMDItemWhereFromsінформацію, де спочатку знаходився завантажений файл (його URL). Сафарі та Chrome встановлюють і те, wgetі інше .

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.