WRT эта тема, Что я должен сделать о com.apple.quarantine?, я хочу знать, как OS X может изучить и сохранить их информация в поле. Я не ищу способ отключить эту опцию, но для кода (или псевдокода, идеи, безотносительно) относительно реализации этой вещи.Заранее спасибо.
Как Daniel упомянул, браузер может сохранить исходный URL (и также ссылающийся домен) загруженного файла в расширенном атрибуте com.apple.metadata:kMDItemWhereFroms
.
Первая Apple добавила это к Safari для Mac OS X 10.4, затем она была добавлена к Chrome/хрому [Выпуск 22289], и существует выдающийся запрос улучшения для добавления его к Firefox [Ошибка 337051].
Что касается фактического кода для реализации этого проверьте патч Хрома.
После загрузки любого файла, выполнения 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 6C 69 73 74 30 30 A1 01 5F 10 24 68 74 74 70 3A 2F 2F 73 75 [and so on]
... или, в читаемом формате:
mdls -name kMDItemWhereFroms mydownload.gz kMDItemWhereFroms = ( "http://some-url" )
Можно установить их (или любой атрибут, который Вы хотите), сами также:
xattr -w some-name some-value mydownload.gz
Следующие работы также, даже при том, что, имеют различные результаты при выполнении вышеупомянутых команд снова:
xattr -w com.apple.metadata:kMDItemWhereFroms http://example.com mydownload.gz
И для com.apple.quarantine
атрибут, согласно понимают:
Как правило, Карантинные данные состоят из ряда 4 разграниченных точкой с запятой значений (ряд десятичных цифр неизвестной цели - обычно 0000, 8 символьных непрозрачных идентификаторов, название приложения, которое создало Изолированный файл и UTI приложения (Универсальный Идентификатор типа) снабженный префиксом символ вертикальной черты),
Например, для двух различных файлов, загруженных с помощью Mozilla Firefox, это похоже:
com.apple.quarantine: 0000;4b392bb2;Firefox;|org.mozilla.firefox com.apple.quarantine: 0000;4b38d820;Firefox;|org.mozilla.firefox
Используя Действия Папки Automator Вы могли выполнить такие команды для новых файлов в определенной папке, если это что Вы после.
Та информация хранится в том, что называют "расширенными атрибутами". У John Siracusa есть превосходная статья, обсуждая расширенные атрибуты, когда они были сначала представлены в OS X 10.4: http://arstechnica.com/apple/reviews/2005/04/macosx-10-4.ars/7.
Кажется, что больше нет страницы справочника для 'xattr' инструмента командной строки, но 'xattr-h' должен показать основную справку.
API POSIX/BSD-level доступен в/usr/include/sys/xattr.h, который определяет функции C, такие как getxattr (), setxattr (), removexattr (), listxattr (), и их ОСНОВАННЫЕ НА ФАЙЛЕ кузены. (Эти команды, в отличие от этого, 'xattr (1)', действительно имеют страницы справочника).
Это установлено приложением, загружающим файл. Никакое волшебное обнаружение загрузки, просто атрибут установлен на загруженном файле приложением загрузки.
Я просто загрузил использование zip-файла wget
, Google Chrome, Firefox и Safari, и, как ожидалось, wget
загрузка не имеет никаких расширенных атрибутов, загрузки браузера имеют, поскольку они знают о той функции. Интересно, карантин набора загрузки Firefox, но забыл устанавливать com.apple.metadata:kMDItemWhereFroms
, информация, где загруженный файл был первоначально расположен (его URL). Safari и набор Chrome оба, wget
ни один.