← Trở về blog

Cách kiểm tra tính nhất quán của UserAgent? Bốn lỗ hổng mà UA không khớp để lộ ra

Trên trang kiểm tra, mục UA hiển thị bình thường, nhưng chỉ vài ngày sau khi đăng nhập, tài khoản vẫn bị đẩy ra xác minh. Phản ứng đầu tiên của nhiều người là đổi sang một UA khác hoặc cài thêm một plugin đổi UA. Kết quả là dấu hiệu bất thường xuất hiện còn dày hơn.

Phần lớn các hiện tượng này dính vào tính nhất quán. UA chỉ là một trường, nhưng nền tảng đọc nó ở nhiều hơn một vị trí. Nếu chỉ sửa một chỗ, những chỗ còn lại vẫn giữ giá trị cũ, đối chiếu vào là lộ mâu thuẫn.

Bước đầu tiên khi kiểm tra UA là xem trường này có nói cùng một nội dung trên mọi mặt lộ ra hay không; sau đó mới đến việc đối chiếu nó với thiết bị, khu vực và các tham số khác. Bài viết này trước tiên phân tích ba kênh nền tảng dùng để đọc UA, rồi liệt kê bốn loại tín hiệu lộ ra khi UA không khớp, cuối cùng đưa ra danh sách năm điểm đối chiếu cùng cách cấu hình trong trình duyệt anti-fingerprint.

Ba kênh nền tảng dùng để đọc UA

Cùng một giá trị UA, nền tảng thực tế đọc từ ba vị trí: header HTTP, header Client Hints và script trên trang. Ba kênh độc lập với nhau và có thể đối chiếu riêng từng kênh.

Khi gửi yêu cầu, chuỗi UA trong header là kênh sớm nhất: trang web đọc được nó trước cả khi trả về trang. Kể từ phiên bản 89, Chrome tách thông tin thiết bị sang loạt header Sec-CH-UA để báo cáo riêng. Thương hiệu trình duyệt, nền tảng và phiên bản nền tảng mỗi cái chiếm một header, do trang web hỏi khi cần. Tài liệu Client Hints của MDN liệt kê rất rõ cấu trúc của các header này.

Kênh thứ ba nằm trong script trên trang. navigator.userAgent và navigator.userAgentData báo lại một lần nữa thông tin trình duyệt và nền tảng từ bên trong trang. Về lý thuyết, ba phép đọc khớp nhau từng ký tự. Chỉnh sửa riêng bất kỳ vị trí nào, hai vị trí còn lại sẽ không đổi theo.

Plugin đổi UA chính là vướng ở đây. Phần lớn plugin chỉ thay chuỗi UA trong header, script trên trang đọc vào vẫn là giá trị gốc, hai kênh chênh nhau ngay lập tức. Bắt loại mâu thuẫn này không cần trình độ kỹ thuật cao: script phân tích rủi ro chỉ cần lấy hai phép đọc ra so sánh là đủ.

Còn một bối cảnh cần nói rõ. Chrome đang dần đóng băng thông tin trong chuỗi UA cũ: phần sau số phiên bản đã bị cố định, nhiều chi tiết hơn được dời sang Client Hints. Dư địa chỉ xoay quanh chuỗi UA đang thu hẹp, và việc các kênh có khớp nhau hay không lại càng trở nên then chốt.

Sơ đồ ba kênh nền tảng đọc UserAgent

UA không khớp sẽ để lộ gì: bốn loại tín hiệu

Nhìn riêng, UA không có thật hay giả; đặt lại vào tổ hợp tín hiệu mới phân ra được lỗ hổng. Phần lớn sự không khớp khi môi trường gặp vấn đề rơi vào bốn loại dưới đây.

Loại một: các kênh mâu thuẫn với nhau. Header báo Chrome 126, phép đọc của script trên trang vẫn dừng ở Chrome 118; hoặc thương hiệu khai trong Sec-CH-UA không khớp với những gì navigator.userAgentData trả về. Loại phép đọc này gần như chỉ có một cách giải thích: UA đã bị sửa riêng lẻ, và lần sửa không bao phủ hết các kênh.

Loại hai: phần khai báo mâu thuẫn với tham số phần cứng. UA ghi là iPhone, màn hình lại là độ phân giải desktop 1920×1080, số điểm chạm bằng không; UA khai Windows, bộ dựng hình GPU lại báo chip của Apple. Tham số phần cứng là giá trị đo được từ môi trường thật, còn UA là giá trị khai báo có thể điền tùy ý. Đối chiếu hai bên lại, lỗ hổng nổi bật hơn chính bản thân UA nhiều. Nguyên nhân loại mâu thuẫn này, bài viết vì sao ngẫu nhiên hóa fingerprint không an toàn đã phân tích theo từng tham số.

Loại ba: mâu thuẫn với tổ hợp môi trường. IP đầu ra ở Mỹ, UA lại là trình duyệt bản tiếng Trung, danh sách ngôn ngữ và múi giờ cũng lệch về khu vực khác. UA, hệ điều hành, ngôn ngữ, múi giờ, IP vốn dĩ phải ghép thành cùng một hình dung khu vực. Chỉ một mục lệch đi, cả bộ hình dung đều đáng ngờ. Loại mâu thuẫn này đổi UA không giải quyết được, thứ cần chỉnh là cấu hình môi trường.

Loại bốn: không khớp với đặc trưng tầng truyền tải. Đặc trưng để lại từ bắt tay TLS giống một công cụ kịch bản, hoặc giống một phiên bản trình duyệt rất cũ, trong khi header lại báo Chrome phiên bản mới. Đặc trưng tầng truyền tải khó ngụy trang hơn UA, và nền tảng đối chiếu hai bên có xứng nhau hay không với chi phí không cao.

Trong bốn loại tín hiệu, ba loại đầu có thể tránh ngay từ giai đoạn cấu hình môi trường; loại bốn phụ thuộc vào chính cách kết nối. Tự kiểm tra hằng ngày hãy để mắt vào ba loại đầu, thấy phép đọc mâu thuẫn thì quay lại đối chiếu cấu hình.

Kiểm tra tính nhất quán làm thế nào: năm điểm đối chiếu

Không cần một trang kiểm tra duy nhất, cứ lần lượt năm điểm đối chiếu.

1. Đối chiếu kênh: mở môi trường truy cập trang kiểm tra, dùng panel Network trong công cụ dành cho nhà phát triển xem UA và Sec-CH-UA trong header, rồi đối chiếu với phép đọc navigator.userAgent trong console; cả ba chỗ phải khớp nhau.

2. Đối chiếu phần cứng: đối chiếu từng mục loại thiết bị mà UA khai báo với độ phân giải màn hình, khả năng cảm ứng, bộ dựng hình GPU, số nhân, bộ nhớ; khai loại thiết bị nào, giá trị đo được phải giống loại thiết bị đó.

3. Đối chiếu khu vực: xem ngôn ngữ của UA, danh sách ngôn ngữ trình duyệt, múi giờ, IP đầu ra có nằm trong cùng một hình dung khu vực hay không; phần khai báo trên di động còn phải tương xứng với đặc trưng mạng di động.

4. Đối chiếu phiên bản: phiên bản trình duyệt trong UA nên nằm trong khoảng phổ biến của thị trường mục tiêu; quá mới hoặc dừng ở bản cũ cách đây vài năm đều là tín hiệu bất thường, đồng thời phải khớp với hành vi của nhân.

5. Ghi nhận kiểm tra lại: sau khi chỉnh cấu hình, hãy qua lại trang kiểm tra một lần nữa và lưu lại phép đọc của mỗi lần; khi môi trường sau này gặp bất thường, những bản ghi này chính là điểm xuất phát để xử lý.

Về công cụ, CreepJS chuyên thu thập mâu thuẫn giữa phép đọc của script trên trang và giá trị trình duyệt khai báo; dùng nó thử môi trường đã đổi UA, mâu thuẫn giữa các kênh sẽ bị chỉ thẳng ra. Các trang kiểm tra tổng hợp như Browserscan phù hợp để lấy phép đọc tổng thể của năm tham số. Hai loại công cụ nên dùng xen kẽ. UA chỉ là một tín hiệu trong tính nhất quán của môi trường; trình tự kiểm tra cả môi trường có bảng sáu mục trong bài kiểm tra tính nhất quán chống liên kết tài khoản, có thể dùng chung với năm điểm đối chiếu ở đây.

Ghép cặp UA trong trình duyệt anti-fingerprint

Khi chỉnh theo năm điểm đối chiếu, cách hiệu quả nhất là để UA và các tham số đi kèm được sinh ra cùng lúc, thay vì tự điền từng cái. MostMate là trình duyệt anti-fingerprint dùng AI, thân thiện với người mới, chuẩn bị cho mỗi tài khoản một môi trường trình duyệt độc lập; tính nhất quán của UA nằm ngay trong quy trình cấu hình môi trường của nó. Trước khi bắt tay vào làm, có thể xem qua toàn bộ quy trình tạo môi trường tại trang giới thiệu sản phẩm MostMate.

Khi tạo môi trường, chọn trước hệ điều hành và phiên bản trình duyệt, User-Agent sẽ được sinh ra theo và có thể chỉnh sửa khi cần. Ngôn ngữ, múi giờ và vị trí địa lý mặc định ở chế độ “cấu hình theo IP”. Chọn xong proxy đầu ra, các mục này và tổ hợp khu vực của UA tự động khớp với nhau. Panel xem trước fingerprint liệt kê theo thời gian thực giá trị hiện tại của User-Agent và các tham số còn lại. Ngay từ lúc dựng môi trường đã thấy được cả bộ cấu hình có hợp lý với nhau hay không, không cần đợi môi trường chạy rồi mới quay lại sửa.

MostMate cấu hình UA và fingerprint dựa trên IP

Mức độ chi tiết của cấu hình cũng có thể tự định. Trong cài đặt fingerprint thủ công, mười một mục như UA, màn hình, múi giờ, ngôn ngữ phải chọn lần lượt từng cái; còn cấu hình đề xuất trên trang chủ sẽ sinh trực tiếp một bộ môi trường nhất quán theo logic thiết bị. Hai đường đi mỗi bên hợp với tình huống riêng.

Danh sách môi trường MostMate

Cần nói rõ ranh giới. Tính nhất quán giữa UA và cấu hình môi trường chỉ giảm bớt một loại tín hiệu lộ ra. Tài khoản có bị nền tảng liên kết hay không còn phụ thuộc vào quy định của nền tảng, quan hệ giữa các tài khoản và hành vi sử dụng; cấu hình môi trường chỉ giải quyết được tầng môi trường.

Sơ đồ cấu hình liên động giữa UA và tham số môi trường

Câu hỏi thường gặp

Đã cài plugin đổi UA, sao lại càng dễ bị nhận ra?

Plugin thường chỉ đổi đúng kênh header, phần script trên trang và Client Hints đọc được vẫn là giá trị gốc. Một khi các kênh xuất hiện mâu thuẫn, chẳng khác nào ghi “đã đổi UA” vào trong phép đọc. Chính mâu thuẫn đã là tín hiệu bất thường, nổi bật hơn cả việc không đổi.

Số phiên bản của UA có phải càng mới càng tốt?

Chỉ cần nằm trong khoảng phiên bản phổ biến của thị trường mục tiêu. Phiên bản mới hơn cả bản mới nhất, hoặc dừng ở bản cũ cách đây vài năm, đều là tín hiệu bất thường. Phiên bản còn phải tương xứng với hành vi của nhân, đơn độc chạy theo bản mới không có ý nghĩa gì.

Môi trường desktop có thể dùng UA di động không?

Được, nhưng độ phân giải màn hình, khả năng cảm ứng, bộ nhớ thiết bị và các tham số này phải được cấu hình cùng lúc theo thiết bị di động. Các tham số liên động thế nào, bài fingerprint độ phân giải màn hình và kích thước cửa sổ có đối chiếu cụ thể.

Trang kiểm tra hiển thị UA nhất quán, vậy là không còn vấn đề?

Phép đọc của trang kiểm tra chủ yếu phủ các tham số mà script trên trang đọc được; đặc trưng tầng truyền tải và một số chi tiết Client Hints chưa chắc đã nằm trong phép đọc. Qua đủ năm điểm đối chiếu rồi hãy kết luận sẽ vững hơn.

Lời kết

Đích của việc kiểm tra UA là khiến ba kênh và cả môi trường hợp lý với nhau. Các kênh không mâu thuẫn, phần khai báo khớp với giá trị đo phần cứng, tổ hợp khu vực nói nên chuyện, khoảng phiên bản hợp lẽ thường. Lần lượt qua năm điểm đối chiếu, phần lớn lỗ hổng ở tầng UA có thể được loại bỏ trước khi môi trường đi vào hoạt động. Kiểm tra trước khi lên môi trường, chi phí thấp nhất.

Khi dựng môi trường mới, hãy chạy bộ kiểm tra này trước khi cho tài khoản vào, đỡ việc hơn nhiều so với đổi UA sau khi xác minh đã bật ra. Muốn quản lý môi trường theo quy trình này, có thể tải MostMate, từ chọn hệ điều hành, cấu hình proxy đến đối chiếu phần xem trước fingerprint, một lần sắp sẵn UA và cả môi trường.

MOSTMATE

Quản lý nhiều tài khoản an toàn, thật đơn giản

Bắt đầu với tài khoản đầu tiên và dùng MostMate để xây dựng hoạt động đa tài khoản an toàn, thông minh và hiệu quả hơn.

  • Hồ sơ độc lập. Danh tính nhất quán.
  • Tự động hóa bằng AI · Tình trạng tài khoản · Vận hành nhóm
Tải MostMate