In che modo Mac OS X può salvare i dettagli sull'URL da cui è stato scaricato un file?


8

WRT questo argomento Cosa devo fare su com.apple.quarantine? , Voglio sapere come OS X può apprendere e salvare tali informazioni nel campo @. Non sto cercando un modo per disabilitare questa funzione, ma un codice (o pseudocodice, idea, qualunque cosa) per quanto riguarda l'implementazione di questa cosa. Grazie in anticipo.

Risposte:


6

Come accennato da Daniel, il browser può memorizzare l'URL di origine (e anche il referrer) di un file scaricato nell'attributo esteso com.apple.metadata:kMDItemWhereFroms.

Prima Apple lo ha aggiunto a Safari per Mac OS X 10.4, quindi è stato aggiunto a Chrome / Chromium [numero 22289] e c'è un'eccezionale richiesta di miglioramento per aggiungerlo a Firefox [Bug 337051] .

Per quanto riguarda il codice effettivo per implementarlo, controlla la patch di Chromium .


Bella storia :-) Tuttavia, quando uso Safari non vedo il referrer (o almeno non nei nuovi download ho provato a vedere se mi mancava qualcosa). Forse le cose sono diverse quando si fa clic con il tasto destro e si scarica o quando un download si avvia automaticamente? (Ad esempio, alcuni browser non inviano il referrer quando aprono i collegamenti in nuove finestre.)
Arjan

Ah, hai ragione, mdlslo mostra per i download che si avviano automaticamente. E Finder's Get Info lo mostra come un elenco separato da virgole, che non ho notato!
Arjan,

6

Dopo aver scaricato qualsiasi file, l'esecuzione xattr fileti mostrerà ciò che il browser ha archiviato negli attributi estesi:

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

Successivamente, maggiori dettagli:

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 [e così via]

... o, in formato leggibile:

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

Puoi impostare anche tu (o qualsiasi altro attributo desiderato):

xattr -w nome-nome valore-valore mydownload.gz

Il seguente funziona troppo, anche se è ha diversi risultati quando eseguono nuovamente i comandi precedenti:

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

E per l' com.apple.quarantineattributo, secondo capire :

In genere, i dati di quarantena sono costituiti da un set di 4 valori delimitati da punto e virgola (un set di cifre decimali di uno scopo sconosciuto - in genere 0000, un ID opaco di 8 caratteri , il nome dell'applicazione che ha creato il file in quarantena e UTI dell'applicazione (Uniform Type Identifier) ​​preceduto dal simbolo di una pipe)

Ad esempio, per due diversi file scaricati utilizzando Mozilla FireFox, sembra che:

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

Utilizzando le azioni della cartella di Automator è possibile eseguire tali comandi per i nuovi file in una cartella specifica, se è quello che si desidera.


4

Tali informazioni sono memorizzate in quelli che vengono chiamati "attributi estesi". John Siracusa ha un eccellente articolo che parla degli attributi estesi quando sono stati introdotti per la prima volta, in OS X 10.4: http://arstechnica.com/apple/reviews/2005/04/macosx-10-4.ars/7 .

Sembra che non ci sia più una pagina man per lo strumento da riga di comando 'xattr', ma 'xattr -h' dovrebbe mostrare un aiuto di base.

Un'API di livello POSIX / BSD è disponibile in /usr/include/sys/xattr.h che definisce le funzioni C come getxattr (), setxattr (), removexattr (), listxattr () e i loro cugini basati su FILE. (Questi comandi, diversamente da 'xattr (1)', hanno delle pagine man).


3

È impostato dall'applicazione che scarica il file. Nessun rilevamento magico del download, solo un attributo impostato sul file scaricato dall'applicazione di download.

Ho appena scaricato un file zip utilizzando wgetGoogle Chrome, Firefox e Safari e, come previsto, il wgetdownload non ha attributi estesi, i download del browser hanno, poiché sono a conoscenza di quella funzione. È interessante notare che il download di Firefox ha messo in quarantena, ma ha dimenticato di impostare com.apple.metadata:kMDItemWhereFroms, le informazioni in cui si trovava originariamente il file scaricato (il suo URL). Safari e Chrome hanno impostato entrambi, wgetnessuno dei due.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.