Làm cách nào Mac OS X có thể lưu chi tiết về URL mà tệp đã được tải xuống?


8

WRT chủ đề này Tôi nên làm gì về com.apple.quarantine? , Tôi muốn biết làm thế nào OS X có thể học và lưu những thông tin đó trong trường @. Tôi không tìm cách để vô hiệu hóa tính năng này, nhưng đối với một mã (hoặc mã giả, ý tưởng, bất cứ điều gì) liên quan đến việc thực hiện điều này. Cảm ơn bạn trước.

Câu trả lời:


6

Như Daniel đã đề cập, trình duyệt có thể lưu trữ URL nguồn (và cả người giới thiệu) của một tệp đã tải xuống trong thuộc tính mở rộng com.apple.metadata:kMDItemWhereFroms.

Đầu tiên Apple đã thêm nó vào Safari cho Mac OS X 10.4, sau đó nó đã được thêm vào Chrome / Chromium [Vấn đề 22289] và có một yêu cầu cải tiến nổi bật để thêm nó vào Firefox [Bug 337051] .

Đối với mã thực tế để thực hiện điều này, hãy kiểm tra bản vá Chromium .


Lịch sử thú vị :-) Tuy nhiên, khi sử dụng Safari, tôi không thấy người giới thiệu (hoặc ít nhất là không có trong các bản tải xuống mới mà tôi đã thử xem tôi có bỏ sót điều gì không). Có lẽ mọi thứ sẽ khác khi nhấp chuột phải và tải xuống hoặc khi tải xuống bắt đầu tự động? (Ví dụ: một số trình duyệt không gửi người giới thiệu khi mở liên kết trong các cửa sổ mới.)
Arjan

À, bạn nói đúng, mdlshiển thị nó cho các phần tải xuống bắt đầu tự động. Và Tìm kiếm thông tin cho thấy đó là một danh sách được phân tách bằng dấu phẩy, điều mà tôi không nhận thấy!
Arjan

6

Sau khi tải xuống bất kỳ tệp nào, chạy xattr filesẽ hiển thị cho bạn những gì trình duyệt đã lưu trữ trong các thuộc tính mở rộng:

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

Tiếp theo, chi tiết hơn:

xattr -p com.apple.quarantine mydoad.gz 
0000; 4cee9d4b; Safari; 24064D6B-9854-46BC-AF73-5DE5F8042D0B | com.apple.Safari

xattr -p com.apple.metadata: kMDItemWhereFroms mydoad.gz 
62 70 6C 69 73 74 30 30 A1 01 5F 10 24 68 74 74
70 3A 2F 2F 73 75 [vân vân]

... Hoặc, ở định dạng có thể đọc được:

mdls -name kMDItemWhereFroms mydoad.gz
kMDItemWhereFroms = (
    "http: // một số url"
)

Bạn cũng có thể tự đặt những cái đó (hoặc bất kỳ thuộc tính nào bạn muốn):

xattr -w some-name some-value mydoad.gz

Các công việc sau cũng vậy, mặc dù có kết quả khác nhau khi chạy lại các lệnh trên:

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

Và đối với com.apple.quarantinethuộc tính, theo cách hiểu :

Thông thường, dữ liệu Kiểm dịch bao gồm một bộ gồm 4 giá trị được phân cách bằng dấu chấm phẩy (một bộ chữ số thập phân của mục đích không xác định - thường là 0000, ID mờ 8 ký tự , tên của ứng dụng đã tạo tệp Cách ly và UTI của ứng dụng (Mã định danh loại thống nhất) có tiền tố là ký hiệu ống)

Ví dụ: đối với hai tệp khác nhau được tải xuống bằng Mozilla FireFox, điều này trông giống như:

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

Sử dụng Tác vụ thư mục của Automator, bạn có thể chạy các lệnh như vậy cho các tệp mới trong một thư mục cụ thể, nếu đó là những gì bạn làm sau.


4

Thông tin đó được lưu trữ trong cái gọi là "thuộc tính mở rộng". John Siracusa có một bài viết tuyệt vời thảo luận về các thuộc tính mở rộng khi chúng được giới thiệu lần đầu tiên, trong OS X 10.4: http://arstechnica.com/apple/reviews/2005/04/macosx-10-4.ars/7 .

Dường như không còn trang man cho công cụ dòng lệnh 'xattr', nhưng 'xattr -h' sẽ hiển thị trợ giúp cơ bản.

API cấp độ POSIX / BSD có sẵn trong /usr/include/sys/xattr.h, định nghĩa các hàm C như getxattr (), setxattr (), removexattr (), listxattr () và anh em họ dựa trên FILE của họ. (Các lệnh này, không giống như 'xattr (1)', có các trang man).


3

Nó được thiết lập bởi ứng dụng tải tập tin. Không phát hiện tải xuống ma thuật, chỉ là một thuộc tính được đặt trên tệp đã tải xuống bởi ứng dụng tải xuống.

Tôi vừa tải xuống một tệp zip bằng cách sử dụng wgetGoogle Chrome, Firefox và Safari và như mong đợi, bản wgettải xuống không có thuộc tính mở rộng, các trình tải xuống có, vì họ biết về tính năng đó. Điều thú vị là, phần tải xuống của Firefox đã cách ly, nhưng quên cài đặt com.apple.metadata:kMDItemWhereFroms, thông tin nơi tệp được tải xuống ban đầu (URL của nó). Safari và Chrome đặt cả hai, wgetkhông.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.