- Published on
Sửa đổi mã nguồn Chromium- Làm thế nào để cố định dấu vân tay thông qua tham số truyền vào
- Authors
- Name
- Hoàng Hữu Mạnh
013. Tùy chỉnh dấu vân tay Chromium - Làm thế nào để cố định dấu vân tay thông qua tham số truyền vào
Bản quyền
Biên soạn trình duyệt dấu vân tay của riêng bạn
29 bài viết 129 người đăng ký
Đăng ký chuyên mục
Tùy chỉnh dấu vân tay Chromium - Làm thế nào để cố định dấu vân tay thông qua tham số truyền vào
Vì việc phải cố định tất cả các loại dấu vân tay sẽ rất tốn công, tôi chỉ sử dụng dấu vân tay
plugins
làm ví dụ.
I. Tại sao phải cố định dấu vân tay?
- Mục tiêu: Khi khởi động trình duyệt, thêm tham số
--fingerprints="xxxxxxx"
, khi tham số thay đổi, dấu vân tay cũng sẽ thay đổi. Sau khi mở trang web, dấu vân tay sẽ không thay đổi nữa. - Được sử dụng rộng rãi trên các nền tảng thương mại điện tử.
II. Dấu vân tay plugins là gì?
- Trước đây tôi đã giới thiệu về dấu vân tay
plugins
và cách sửa đổi nó: Tham khảo
III. Sửa đổi lại mã nguồn
- Mở mã nguồn
third_party/blink/renderer/modules/plugins/dom_plugin.cc
#include
bất kỳ, nếu đã thêm trước đó thì không cần thêm nữa)
1. Thêm vào đầu file (Thêm vào sau một #include <random>
#include <string>
#include "base/command_line.h"
2. Tìm đoạn mã sau
String DOMPlugin::description() const {
return plugin_info_->Description();
}
3. Thay thế bằng
String DOMPlugin::description() const {
//return plugin_info_->Description();
base::CommandLine* base_command_line = base::CommandLine::ForCurrentProcess();
std::string tmp;
if (base_command_line->HasSwitch("fingerprints")) {
tmp = base_command_line->GetSwitchValueASCII("fingerprints");
} else {
tmp = base_command_line->GetSwitchValueASCII("type");
}
// LOG(ERROR) << "tmp:('" << tmp << "') tmp";
String res = plugin_info_->Description();
return res + String(tmp);
}
Nguyên lý của đoạn mã này là thêm chuỗi lấy từ
--fingerprints
vào cuối mô tả của mỗi plugin.
4. Biên dịch
ninja -C out/Default chrome
IV. Thêm tham số vào tiến trình render
- Lưu ý: Đây là một giải pháp độc đáo trên toàn mạng.
Mở trình quản lý tác vụ và bạn sẽ thấy, mặc định Chromium sử dụng đa tiến trình, chỉ có một tiến trình chính, những tiến trình có tham số
--type
là các tiến trình con.
Các tham số khởi động trình duyệt mặc định chỉ có thể truyền cho tiến trình chính, vì vậy chúng ta cần cải tiến mã nguồn để truyền tham số cho tiến trình con.
- Mở mã nguồn:
\content\browser\renderer_host\render_process_host_impl.cc
1. Tìm đoạn mã sau
command_line->AppendSwitchASCII(switches::kProcessType,
switches::kRendererProcess);
2. Thay thế bằng
command_line->AppendSwitchASCII(switches::kProcessType,
switches::kRendererProcess);
// Thêm vào
const base::CommandLine* base_command_line = base::CommandLine::ForCurrentProcess();
if (base_command_line->HasSwitch("fingerprints")) {
const std::string tmp = base_command_line->GetSwitchValueASCII("fingerprints");
command_line->AppendSwitchASCII("fingerprints", tmp);
}
3. Biên dịch
ninja -C out/Default chrome
Bây giờ, mỗi khi khởi động Chromium và thay đổi tham số
--fingerprints="xxxxxxx"
, dấu vân tay plugins sẽ thay đổi.
V. Xác nhận lại
- Sao chép
navigator.plugins
vào bảng điều khiển F12
- Bạn sẽ thấy rằng mô tả của plugin đã thành công trong việc thêm tham số của chúng ta. Dấu vân tay plugins đã được cố định.
Tin tôi đi, tôi đã khởi đầu, còn các dấu vân tay khác để cố định, bạn chắc hẳn sẽ rất muốn thử!