Kích thước cửa sổ trình duyệt là một trong những thông số mà ứng dụng web có thể sử dụng để nhận dạng thiết bị của người dùng. Mặc dù thông tin này thoạt nhìn có vẻ không đáng kể nhưng những đặc điểm độc đáo của nó có thể trở thành một công cụ mạnh mẽ trong các hệ thống chống gian lận. Các hệ thống như vậy phân tích kích thước cửa sổ trình duyệt, bao gồm các thay đổi trong thời gian thực, cũng như dữ liệu được truyền trong tiêu đề HTTP, để phát hiện hoạt động đáng ngờ và xác định các nỗ lực giả mạo thông tin. ###### Lịch sử và ứng dụng phân tích kích thước cửa sổ trình duyệt Việc đo kích thước cửa sổ trình duyệt (khung nhìn) lần đầu tiên được cung cấp cho các nhà phát triển thông qua API DOM, bắt đầu với các phiên bản JavaScript đầu tiên. Dữ liệu này được sử dụng để điều chỉnh nội dung cho phù hợp với màn hình của người dùng. Với sự phát triển của công nghệ, các hệ thống chống gian lận bắt đầu sử dụng kích thước cửa sổ như một tham số bổ sung để tạo dấu vân tay kỹ thuật số của người dùng. Dữ liệu kích thước cửa sổ ngày nay có thể bao gồm: • Kích thước khung nhìn (window.innerWidth và window.innerHeight). • Kích thước tổng thể của cửa sổ trình duyệt. • Độ phân giải màn hình được hỗ trợ. • Hiển thị tốc độ làm mới. Các cài đặt này có thể khác nhau tùy theo thiết bị, hệ điều hành và trình duyệt, tạo ra một tập hợp đặc điểm duy nhất. ###### Kích thước cửa sổ trong tiêu đề HTTP Một số trình duyệt chuyển thông tin kích thước cửa sổ trong tiêu đề HTTP chẳng hạn như Gợi ý ứng dụng khách tác nhân người dùng (chẳng hạn như Chiều rộng khung nhìn và Chiều rộng thiết bị). Điều này cho phép các trang web điều chỉnh nội dung cho phù hợp với kích thước màn hình nhưng cũng cung cấp cho các hệ thống chống lừa đảo khả năng sử dụng dữ liệu này để kiểm tra hành vi giả mạo. **Ví dụ về dữ liệu được truyền:** • Chiều rộng khung nhìn: 1920 •Chiều rộng thiết bị: 2560 Sự khác biệt giữa dữ liệu đã nêu và kích thước cửa sổ thực tế có thể cho thấy việc sử dụng trình duyệt chống phát hiện. ###### Phương pháp nhận dạng người dùng bằng kích thước cửa sổ **1. Phân tích độ ổn định kích thước** Hệ thống chống gian lận giám sát những thay đổi về kích thước cửa sổ trong một phiên. Ví dụ: • Những thay đổi đột ngột về kích thước (đặc biệt nếu chúng tương ứng với các độ phân giải cài sẵn phổ biến) có thể cho thấy sự thay thế. • Kích thước cửa sổ không đổi không đặc trưng cho thiết bị có thể là dấu hiệu của sự thi đua. **2. So sánh với độ phân giải màn hình** Hệ thống kiểm tra xem kích thước cửa sổ có tương ứng với độ phân giải màn hình đã khai báo hay không: • Nếu độ phân giải màn hình là 1920x1080 và kích thước cửa sổ là 3000x2000 thì đây có thể là một nỗ lực giả mạo. **3. Sử dụng các điểm bất thường trong kết xuất** Đôi khi các trình duyệt có thể báo cáo kích thước cửa sổ không chính xác do môi trường đồ họa hoặc xử lý DOM của chúng. Những điểm bất thường này có thể được sử dụng để xác định các thiết bị giả mạo. ###### Phương pháp thay đổi kích thước cửa sổ Những kẻ lừa đảo sử dụng các phương pháp sau để ngụy trang: 1. **Kích thước giả:** thay đổi giá trị của window.innerWidth và window.innerHeight thông qua các công cụ hoặc plugin dành cho nhà phát triển. 2. **Sử dụng các thông số cài sẵn:** mô phỏng kích thước của các thiết bị phổ biến để tránh bị nghi ngờ. 3. **Thay thế tiêu đề HTTP:** thay đổi giá trị Chiều rộng khung nhìn và Chiều rộng thiết bị. ###### Phương pháp phát hiện sự thay thế **1. Kiểm tra kích thước cửa sổ** Hệ thống chống gian lận có thể tạo ra các tình huống yêu cầu thay đổi kích thước cửa sổ (ví dụ: cửa sổ bật lên). Các trình duyệt giả mạo có thể không đáp ứng đầy đủ các yêu cầu như vậy. **2. Kiểm tra kích thước** So sánh dữ liệu từ DOM (ví dụ: window.innerWidth) với dữ liệu từ tiêu đề HTTP giúp xác định sự không nhất quán. **3. Phân tích hành vi người dùng** Những thay đổi về kích thước cửa sổ trong quá trình tương tác với một trang web có thể mượt mà một cách bất thường hoặc ngược lại, quá đột ngột trong trường hợp mô phỏng. Hãy xem các ví dụ về kích thước mà hệ thống Chống gian lận có thể nhận được từ trình duyệt của người dùng. Mở trang browserleaks.com/javascript trong trình duyệt Chrome  Trên trang này, trang web xác định kích thước của màn hình, hướng và góc xoay của màn hình, kích thước bên ngoài và bên trong của cửa sổ trình duyệt. Chúng ta hãy xem xét kỹ hơn những kích thước và giá trị mà tài nguyên có thể nhận được. Hãy mở trang thử nghiệm của chúng tôi test-webapi.tech/screen  Trang thử nghiệm cung cấp các thông số sau: **Loại định hướng** Hiển thị hướng màn hình hiện tại của thiết bị (ví dụ: dọc-chính, ngang-chính). **Góc định hướng** Góc xoay của màn hình so với hướng tự nhiên của nó, tính bằng độ. **Chiều rộng có sẵn** Chiều rộng của màn hình có sẵn để sử dụng (không bao gồm các thành phần hệ thống như thanh tác vụ). **Chiều rộng bên ngoài** Toàn bộ chiều rộng của cửa sổ trình duyệt, bao gồm các khu vực bên ngoài trang hiển thị như thanh cuộn và khung. **Chiều rộng màn hình** Toàn bộ chiều rộng của màn hình thiết bị tính bằng pixel. **Chiều rộng bên trong** Chiều rộng vùng nội dung hiển thị của cửa sổ trình duyệt (không có thanh cuộn hoặc đường viền). **Chiều cao có sẵn** Chiều cao màn hình có sẵn để sử dụng (không bao gồm các thành phần hệ thống như thanh tác vụ). **Chiều cao bên ngoài** Chiều cao đầy đủ của cửa sổ trình duyệt, bao gồm các khu vực bên ngoài trang hiển thị như thanh cuộn và khung. **Chiều cao màn hình** Tổng chiều cao của màn hình thiết bị tính bằng pixel. **Chiều cao bên trong** Chiều cao của vùng nội dung hiển thị của cửa sổ trình duyệt (không bao gồm thanh cuộn và đường viền). **Có sẵn bên trái** Vị trí nằm ngang của vùng màn hình có thể truy cập so với điểm bắt đầu của màn hình (thường là 0). **Có sẵn hàng đầu** Vị trí thẳng đứng của vùng màn hình có thể truy cập so với điểm bắt đầu của màn hình (thường là 0). **Điểm tiếp xúc tối đa** Số lượng điểm tiếp xúc tối đa được thiết bị hỗ trợ. **Độ sâu màu** Số bit được sử dụng để biểu thị màu của một pixel màn hình. Ví dụ: 24 hoặc 32. **Độ sâu pixel** Độ sâu pixel theo bit thường giống với giá trị Độ sâu màu. **Tỷ lệ pixel của thiết bị** Tỷ lệ pixel vật lý của thiết bị với pixel logic. Ví dụ: 1.0 cho màn hình tiêu chuẩn hoặc 2.0 cho màn hình Retina. **Chiều rộng của khách hàng** Chiều rộng của vùng nội dung bên trong phần tử html không có thanh cuộn. **Chiều cao của khách hàng** Chiều cao của vùng nội dung bên trong phần tử html không có thanh cuộn. **Màn hình X** Vị trí nằm ngang của góc trên cùng bên trái của cửa sổ trình duyệt so với màn hình thiết bị, tính bằng pixel. **Màn hình Y** Vị trí dọc của góc trên bên trái của cửa sổ trình duyệt so với màn hình thiết bị, tính bằng pixel. ** Chiều rộng cuộn ** Toàn bộ chiều rộng của nội dung trang, bao gồm cả các vùng ẩn có thể cuộn được. **Chiều cao cuộn** Chiều cao đầy đủ của nội dung trang, bao gồm cả các vùng ẩn có thể cuộn được. **Chiều rộng khung nhìn trực quan** Chiều rộng của khu vực được hiển thị cho người dùng, bao gồm cả tỷ lệ có thể có. **Chiều cao khung nhìn trực quan** Chiều cao của khu vực được hiển thị cho người dùng, bao gồm cả tỷ lệ có thể có. **Cuộn X** Độ lệch ngang của trang từ đầu, tính bằng pixel. **Cuộn Y** Độ lệch dọc của trang so với đầu, tính bằng pixel. **Chênh lệch chiều cao (Bên ngoài - Bên trong)** Sự khác biệt giữa chiều cao đầy đủ của cửa sổ trình duyệt và chiều cao hiển thị của nội dung. Trình bày để xác định kích thước của bảng quản trị của trình duyệt. Trong số các thông số được trình bày, có những thông số hiếm khi thay đổi trong cùng một cấu hình, ví dụ: Loại hướng, Kích thước màn hình, Độ sâu màu, Độ sâu pixel, Điểm chạm tối đa, có những thông số chỉ có thể thay đổi trên một số loại thiết bị nhất định, chẳng hạn : Góc định hướng, Màn hình X, Màn hình Y. Hãy so sánh dữ liệu thu được từ trình duyệt Chrome và trình duyệt chống phát hiện:  Đối với phiên bản dành cho máy tính để bàn, trình duyệt chống phát hiện thay thế các thông số về màn hình và kích thước trình duyệt khá tốt, tuy nhiên giá trị của Màn hình X và Màn hình Y đều bằng 0, tương ứng với việc trình duyệt của chúng ta bị ràng buộc ở phía trên bên trái góc màn hình và chúng tôi sẽ nhận được vị trí này trong trình duyệt chống phát hiện mỗi khi bạn mở hồ sơ của mình, trong khi theo mặc định, một cửa sổ mới của trình duyệt Chrome thực sẽ mở ở giữa màn hình. Cần lưu ý rằng chúng tôi sẽ nhận được cùng một kích thước trình duyệt mỗi khi chúng tôi sử dụng hồ sơ, trong khi đối với người dùng thông thường, kích thước cửa sổ trình duyệt không được mở ở chế độ toàn màn hình thường thay đổi. Hãy chú ý đến giá trị Chênh lệch Chiều cao; trong trình duyệt Chrome chiếm một phần màn hình, chiều cao của bảng quản trị là 95px;  Chiều cao của bảng quản trị trong trường hợp này là 129px. Do đó, tài nguyên có thể xác định chính xác mức độ hiển thị của thanh dấu trang trong trình duyệt của người dùng. Hãy mở trang thử nghiệm của chúng tôi trong trình duyệt Firefox:  Trong trình duyệt Firefox, chiều cao của bảng quản trị là 91px, do đó hệ thống chống gian lận có thể xác định xem trình duyệt được người dùng khai báo trong User-Agent có tương ứng với kích thước tiêu chuẩn của trình duyệt gốc hay không. Điều quan trọng cần lưu ý là kích thước của bảng quản trị ở chế độ trình duyệt toàn màn hình khác với kích thước của trình duyệt chiếm một phần màn hình của người dùng. Hãy lặp lại thử nghiệm trên thiết bị di động và trình duyệt chống phát hiện cố gắng giả vờ là thiết bị di động:  Trình duyệt chống phát hiện đặt giá trị Chiều cao bên trong bằng Chiều cao bên ngoài, trong khi ở trình duyệt di động thực, giá trị Chiều cao bên trong lớn hơn giá trị Chiều cao bên ngoài và sự thay thế như vậy có thể là tác nhân kích hoạt các hệ thống chống gian lận. Cũng lưu ý rằng giá trị cuộn trang dọc, ở chế độ trình duyệt chống phát hiện đã thử nghiệm, chỉ được thực hiện bởi các giá trị pixel nguyên (tham số Scroll Y). ###### Các sự kiện hành động trong trình duyệt và vai trò của chúng trong hệ thống chống gian lận Các ứng dụng web hiện đại sử dụng rộng rãi các sự kiện trình duyệt để cải thiện trải nghiệm người dùng. Tuy nhiên, các hành động như nhấp chuột, cuộn và chạm cũng cung cấp dữ liệu duy nhất, có thể được sử dụng bởi các hệ thống chống gian lận để phát hiện hoạt động đáng ngờ. Các hệ thống này phân tích hành vi của người dùng để phát hiện bot, hành động mô phỏng hoặc thay thế dữ liệu. ###### Sự kiện hành động cơ bản của trình duyệt Các sự kiện của trình duyệt bao gồm nhiều loại tương tác mà người dùng có thể thực hiện trên trang web. Điều quan trọng nhất trong số đó: • **Số lần nhấp chuột (nhấp chuột, dblclick):** ghi lại các lần nhấp chuột vào các thành phần trang. • **Cuộn:** đăng ký sự dịch chuyển của vùng hiển thị của trang. • **Mouseover (mouseover, mouseout, mousemove):** theo dõi chuyển động của con trỏ. • **Sự kiện chạm (touchstart, touchmove, touchend):** ghi lại các thao tác trên thiết bị có màn hình cảm ứng. • **Nhập văn bản (keydown, keyup, input):** ghi lại các thao tác văn bản của người dùng. • **Lấy nét (lấy nét, làm mờ):** xác định xem các thành phần đầu vào được kích hoạt hay hủy kích hoạt. • **Phản ứng với những thay đổi (thay đổi kích thước, thay đổi hướng):** ghi lại những thay đổi về kích thước cửa sổ trình duyệt hoặc hướng thiết bị. ###### Vai trò của sự kiện trong hệ thống chống gian lận Hệ thống chống gian lận sử dụng các sự kiện để phân tích hành vi thực của người dùng và so sánh chúng với các tình huống dự kiến. Các khía cạnh chính của phân tích: **1. Tốc độ và nhịp điệu hành động** ◦ Bot thường bắt chước hành động của người dùng nhưng có thể có nhịp điệu không tự nhiên, chẳng hạn như nhấp hoặc cuộn quá nhanh. ◦ Trong trường hợp cuộn, người dùng thực có xu hướng di chuyển trang ở các tốc độ khác nhau, trong khi bot có thể sử dụng chuyển động tuyến tính. **2. Đặc điểm của sự kiện chạm** ◦ Các sự kiện chạm thực tế có tọa độ chạm duy nhất và có thể chứa dữ liệu áp suất (nếu thiết bị hỗ trợ các cảm biến đó). ◦ Các sự kiện chạm được mô phỏng thường được ghi lại dưới dạng giá trị cố định hoặc mẫu tọa độ. **3. Hành vi không tự nhiên** ◦ Hệ thống chống gian lận giám sát sự lặp lại của các hành động, ví dụ: cùng thời gian giữa các lần nhấp chuột hoặc cùng một góc cuộn. ◦ Con trỏ không di chuyển trong thời gian dài cũng có thể là dấu hiệu của quá trình tự động hóa. ###### Phương thức thay thế sự kiện Những kẻ tấn công có thể sử dụng nhiều cách tiếp cận khác nhau để mô phỏng các sự kiện: **1. Tập lệnh tự động** Sử dụng các thư viện tự động hóa như Puppeteer hoặc Selenium để tạo các sự kiện nhân tạo (ví dụ: document.dispatchEvent). **2. Mô phỏng các sự kiện chạm** Các công cụ dành cho nhà phát triển cho phép bạn chạy các thao tác chạm mô phỏng trên các thiết bị không tồn tại. **3. Thay thế dữ liệu sự kiện** Thay đổi thuộc tính sự kiện, chẳng hạn như tọa độ hoặc thời gian thực hiện, để ẩn tự động hóa. ###### Phương pháp xác định sự thay thế Hệ thống chống gian lận sử dụng nhiều phương pháp khác nhau để phát hiện sự thay thế: **1. Phân tích dấu thời gian** So sánh dấu thời gian của sự kiện với thời gian thực: Các sự kiện tổng hợp có thể thể hiện tốc độ không thực tế. **2. Kiểm tra tọa độ** Hệ thống phân tích sự phân bố tọa độ của các sự kiện nhấp chuột hoặc chạm. Các mẫu đáng ngờ (chẳng hạn như tập trung ở một nơi) có thể cho thấy hàng giả. **3. Sử dụng hình ảnh xác thực** Kiểm tra tương tác yêu cầu các hành động khó mô phỏng (chẳng hạn như kéo và thả các phần tử). **4. So sánh dữ liệu trình duyệt** Các thông số sự kiện (chẳng hạn như điểm tiếp xúc hoặc dữ liệu cuộn) được so sánh với dữ liệu thiết bị để xác định sự không nhất quán. Ví dụ: Mở trang thử nghiệm test-webapi.tech/touch trong trình duyệt Chrome và nhập văn bản vào trường nhập văn bản :  Bấm vào nút:  Lưu ý rằng tọa độ chuyển động của chuột và sự kiện nhấp vào nút và nhấp vào trường nhập trước khi nhập văn bản sẽ được ghi lại; Sự kiện cuộn trang cũng được ghi lại.  Đối với các hệ thống chống gian lận, việc nhấp vào nút sẽ có vẻ đáng ngờ nếu trước khi nhấp chuột không di chuyển đến tọa độ của nút trên trang hoặc đóng tab trong trình duyệt mà không di chuyển chuột đến bảng điều khiển trình duyệt. Hãy kiểm tra các sự kiện trên thiết bị di động và trong trình duyệt chống phát hiện mô phỏng trình duyệt di động. Hãy so sánh các sự kiện nhập văn bản vào một trường:  Trong ví dụ này, chúng ta thấy sự khác biệt đáng kể: 1. Sự kiện chạm được tạo ở tọa độ nguyên trong trình duyệt chống phát hiện. 2. Bán kính của sự kiện Chạm trong trình duyệt phát hiện kiến là 11,5px, cao hơn 10 lần so với chỉ số thực của thiết bị di động. 3. Trong trình duyệt chống phát hiện, phần hiển thị của màn hình không bị giảm và sự xuất hiện của bàn phím ảo trên màn hình thiết bị không được mô phỏng, không giống như thiết bị thật. Lưu ý rằng kích thước phần hiển thị của màn hình trên thiết bị di động không chỉ thay đổi khi bàn phím xuất hiện trên màn hình thiết bị mà còn khi các sự kiện, chẳng hạn như khi cuộn xuống một trang, thanh địa chỉ trong phiên bản di động của trình duyệt sẽ bị ẩn và kích thước của phần hiển thị của màn hình sẽ tăng lên. Hãy so sánh các sự kiện khi cuộn xuống trang:  Trong thử nghiệm này, chúng tôi thấy rằng nhật ký các hành động khi cuộn một trang trong trình duyệt chống phát hiện khác với nhật ký trên thiết bị di động. Ngoài thực tế là chúng tôi chỉ nhìn thấy các giá trị tọa độ nguyên, chúng tôi còn nhận được bản ghi sự kiện chạm sau mỗi trang di chuyển xuống một giá trị pixel nhỏ. Hiện nay, nhiều hệ thống chống lừa đảo theo dõi các sự kiện trên trình duyệt, nếu mở trang web Amazon chúng ta sẽ thấy trang này theo dõi một lượng lớn các sự kiện, chẳng hạn như: thời gian tải trang, thay đổi kích thước trang, hành động của người dùng trên trang.  #### Phần kết luận Các sự kiện hành động của trình duyệt, màn hình người dùng và giá trị kích thước trình duyệt cung cấp một tập hợp dữ liệu lớn cho các hệ thống chống gian lận. Phân tích kích thước trình duyệt cho phép bạn nhận dạng duy nhất người dùng và phân tích hành vi của người dùng cho phép bạn xác định bot, mô phỏng hoặc các nỗ lực lừa dối khác. Để cải thiện độ chính xác, các hệ thống như vậy sử dụng các phương pháp kết hợp, so sánh dữ liệu sự kiện với đặc điểm của thiết bị và các tình huống dự kiến. *Bannykh MV*