WRT这个主题我应该如何处理com.apple.quarantine?,我想知道OS X如何学习并将这些信息保存在@字段中。我不是在寻找一种禁用此功能的方法,而是在寻找有关实现此功能的代码(或伪代码,想法,无论如何)。先感谢您。
WRT这个主题我应该如何处理com.apple.quarantine?,我想知道OS X如何学习并将这些信息保存在@字段中。我不是在寻找一种禁用此功能的方法,而是在寻找有关实现此功能的代码(或伪代码,想法,无论如何)。先感谢您。
Answers:
正如Daniel所提到的,浏览器可以将下载文件的源URL(以及引荐来源网址)存储在extended属性中com.apple.metadata:kMDItemWhereFroms
。
首先,Apple将其添加到Mac OS X 10.4的Safari中,然后将其添加到Chrome / Chromium [问题22289]中,并且存在将其添加到Firefox的显着增强要求[错误337051]。
至于实现此功能的实际代码,请查看Chromium补丁。
mdls
确实显示了自动开始的下载。Finder的“获取信息”将其显示为以逗号分隔的列表,但我没有注意到!
下载任何文件后,运行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 [依此类推]
...或以可读格式:
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个字符的不透明ID,创建隔离文件的应用程序的名称以及应用程序的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'应该显示基本帮助。
/usr/include/sys/xattr.h中提供了POSIX / BSD级的API,该API定义了C函数,例如getxattr(),setxattr(),removexattr(),listxattr()及其基于文件的表兄弟。(这些命令与“ xattr(1)”不同,确实具有手册页)。