このトピックをWRTするcom.apple.quarantineについてどうすればよいですか?、私はOS Xが@フィールドにそれらの情報をどのように学習して保存できるか知りたいです。私はこの機能を無効にする方法を探しているのではなく、このことの実装に関するコード(または疑似コード、アイデアなど)を探しています。前もって感謝します。
このトピックをWRTするcom.apple.quarantineについてどうすればよいですか?、私はOS Xが@フィールドにそれらの情報をどのように学習して保存できるか知りたいです。私はこの機能を無効にする方法を探しているのではなく、このことの実装に関するコード(または疑似コード、アイデアなど)を探しています。前もって感謝します。
回答:
ダニエルが述べたように、ブラウザーはダウンロードされたファイルのソースURL(およびリファラー)を拡張属性に保存できますcom.apple.metadata:kMDItemWhereFroms
。
最初にAppleがMac OS X 10.4のSafariにこれを追加し、次にChrome / Chromiumに追加しました[Issue 22289]。Firefoxに追加するための優れた拡張リクエストがあります[Bug 337051]。
これを実装する実際のコードについては、Chromiumパッチを確認してください。
mdls
自動的に開始するダウンロードには表示されます。そしてFinderのGet Infoはそれをコンマ区切りのリストとして示しており、私はそれに気づかなかった!
ファイルをダウンロードした後、実行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つの値のセット(不明な目的の10進数字のセット-通常は0000、8文字の不透明ID、隔離ファイルを作成したアプリケーションの名前、およびアプリケーションのUTI)で構成されます(Uniform Type Identifier)パイプ記号が前に付けられます)
たとえば、Mozilla FireFoxを使用してダウンロードした2つの異なるファイルの場合、これは次のようになります。
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」で基本的なヘルプが表示されます。
POSIX / BSDレベルのAPIは、/ usr / include / sys / xattr.hにあり、getxattr()、setxattr()、removexattr()、listxattr()、およびそれらのFILEベースのいとこなどのC関数を定義しています。(これらのコマンドには、「xattr(1)」とは異なり、manページがあります)。
ファイルをダウンロードするアプリケーションによって設定されます。マジックダウンロードの検出は行われず、ダウンロードするアプリケーションによってダウンロードされたファイルに属性が設定されるだけです。
wget
Google Chrome、Firefox、Safari を使用してzipファイルをwget
ダウンロードしましたが、期待どおり、ダウンロードには拡張属性がありません。ブラウザのダウンロードにはその機能が認識されているためです。興味深いことに、Firefoxのダウンロードは隔離を設定com.apple.metadata:kMDItemWhereFroms
しましたが、ダウンロードしたファイルが元々あった場所の情報(そのURL)を設定するのを忘れていました。SafariとChromeはwget
どちらも設定しましたが、どちらも設定していません。