User Agent
User Agent là gì?
User agent là bất kỳ phần mềm nào tương tác với các máy chủ web thay mặt người dùng Internet. Nó cũng có thể được coi là cầu nối giữa bạn và Internet.
Bất kỳ phần mềm nào gửi yêu cầu web đến các máy chủ web đều là user agent, dù nó có hoạt động độc lập mà không có sự tương tác của con người, như trong trường hợp các công cụ tự động hóa hoặc bot, hay trong trường hợp các trình duyệt web và phần mềm khác chấp nhận các lệnh trực tiếp từ con người.
Ví dụ, nếu bạn muốn truy cập nội dung trực tuyến, bạn sẽ phải sử dụng trình duyệt web, là user agent, để lấy, hiển thị và cho phép bạn tương tác với nội dung.
Trong giao thức mạng, khách hàng được coi là user agent, được sử dụng để giao tiếp với hệ thống mạng client-server. Bạn có thể sẽ ngạc nhiên khi biết rằng trình đọc email của bạn cũng là một mail user agent.
User agents không chỉ dừng lại ở đó — máy chơi game của bạn cũng có thể là user agent, cũng như TV thông minh và các thiết bị có kết nối Internet khác. Trong Giao thức Chuyển tải Siêu văn bản (HTTP), các khách hàng (user agents) được xác định thông qua header user-agent.
Sử dụng User Agents
Bạn có thể tự hỏi tại sao phần mềm client lại phải xác định chính nó và tại sao các máy chủ web cần thông tin này? Hóa ra, user agents có hai công dụng chính. Bao gồm việc thỏa thuận nội dung và cấp quyền truy cập hoặc chặn quyền truy cập.
Thỏa thuận nội dung
Có nhiều phiên bản của một trang web được phục vụ cho các thiết bị tùy thuộc vào khả năng của chúng. Ví dụ, cấu trúc của trang kết quả tìm kiếm Google thay đổi tùy vào trình duyệt hoặc nền tảng bạn sử dụng để truy cập. Bằng cách xem chuỗi user agent, Google có thể phục vụ bạn phiên bản tốt nhất cho trình duyệt và thiết bị của bạn.
Có nhiều trang web khác trên Internet sử dụng user-agent để cung cấp trải nghiệm người dùng tốt hơn. Nếu không có user-agent, tốt nhất bạn sẽ nhận được phiên bản chung của trang web, có thể sẽ không hiển thị đúng trên trình duyệt của bạn. Các nhà phát triển bot sử dụng điều này để tránh các trang web có nhiều JavaScript, bằng cách sử dụng các agent trình duyệt di động, buộc các máy chủ web trả về phiên bản trang nhẹ nhàng hơn về JavaScript.
Thỏa thuận và chặn quyền truy cập
Có lẽ, ứng dụng phổ biến nhất của chuỗi user-agent là để xác định liệu phần mềm client cụ thể có quyền truy cập vào nội dung nhất định hay không. Các máy chủ web sử dụng chuỗi user-agent trong tiêu đề yêu cầu HTTP để loại trừ các crawler, scraper và bot khác khỏi việc truy cập vào nền tảng của họ.
Nhiều trang web phổ biến trên Internet không chào đón tệp bot, vì vậy chúng sẽ từ chối quyền truy cập đối với user-agent khác ngoài các trình duyệt phổ biến. Trong khi làm điều này nội bộ, họ có thể cung cấp tín hiệu cho các web crawler thông qua tệp robots.txt và mong bạn tuân theo các chỉ dẫn trong đó. Thông thường, các máy chủ web chỉ muốn cho phép truy cập từ tệp người dùng và có xu hướng chặn truy cập từ các nguồn tự động, trừ khi có lợi cho họ.
Cookie
Cookie, là một loại "tệp văn bản nhỏ", ám chỉ dữ liệu (thường là mã hóa) mà một số trang web lưu trữ trên thiết bị cục bộ của người dùng (ở phía khách hàng) để nhận diện người dùng. Bởi vì giao thức HTTP là vô trạng thái, tức là máy chủ không biết người dùng đã làm gì lần trước, điều này cản trở nghiêm trọng việc triển khai các ứng dụng web tương tác. Trong một tình huống mua sắm trực tuyến điển hình, người dùng duyệt qua nhiều trang và mua một hộp bánh quy và hai chai nước uống. Khi thanh toán cuối cùng, do bản chất vô trạng thái của HTTP, máy chủ không biết người dùng đã mua gì mà không có các phương tiện bổ sung, vì vậy cookie là một trong những "phương tiện bổ sung" được sử dụng để vượt qua sự vô trạng thái của HTTP. Máy chủ có thể thiết lập hoặc đọc thông tin chứa trong cookie để duy trì trạng thái của người dùng trong cuộc trò chuyện với máy chủ.
Trong tình huống mua sắm vừa rồi, khi người dùng mua sản phẩm đầu tiên, máy chủ gửi cookie cho người dùng khi gửi trang web, ghi lại thông tin của sản phẩm đó. Khi người dùng truy cập một trang khác, trình duyệt sẽ gửi cookie đến máy chủ, vì vậy máy chủ biết người đó đã mua gì trước đó. Người dùng tiếp tục mua nước uống, và máy chủ thêm thông tin sản phẩm mới vào cookie gốc. Khi thanh toán, máy chủ chỉ cần đọc cookie đã gửi.
Một ứng dụng điển hình khác của cookie là khi đăng nhập vào trang web, trang web thường yêu cầu người dùng nhập tên người dùng và mật khẩu, và người dùng có thể chọn "Đăng nhập tự động lần sau". Nếu chọn, lần sau người dùng truy cập lại trang web đó, họ sẽ thấy rằng họ đã đăng nhập mà không cần nhập tên người dùng và mật khẩu. Đây chính là vì máy chủ đã gửi cookie chứa thông tin đăng nhập (dưới dạng mã hóa tên người dùng và mật khẩu) vào ổ cứng của người dùng trong lần đăng nhập trước. Khi đăng nhập lần thứ hai, nếu cookie chưa hết hạn, trình duyệt sẽ gửi cookie và máy chủ kiểm tra thông tin đăng nhập, để người dùng có thể đăng nhập mà không cần nhập tên người dùng và mật khẩu.
Language
Ngôn ngữ là một trong những dấu vân tay cơ bản của trình duyệt. Dấu vân tay cơ bản của trình duyệt là một mã nhận dạng đặc trưng mà trình duyệt nào cũng có, bao gồm độ phân giải màn hình, loại phần cứng, hệ điều hành, user agent, phông chữ hệ thống, ngôn ngữ, plugin trình duyệt, tiện ích mở rộng của trình duyệt, cài đặt trình duyệt, sự chênh lệch múi giờ và nhiều thông tin khác, các thông tin dấu vân tay này giống như chiều cao, tuổi tác của con người, có khả năng trùng lặp cao và chỉ có thể được sử dụng như một phương thức nhận diện phụ trợ.
Resolution
Độ phân giải màn hình là độ rõ nét của văn bản và hình ảnh hiển thị trên màn hình. Màn hình càng lớn, độ phân giải càng cao. Việc có thể tăng độ phân giải hay không phụ thuộc vào kích thước và khả năng của màn hình và loại thẻ video được sử dụng. Về mặt kỹ thuật, "độ phân giải" là số lượng điểm ảnh trên mỗi đơn vị diện tích, chứ không phải tổng số điểm ảnh.
Timezone
Múi giờ là một khu vực được chỉ định trên quy mô toàn cầu, trong đó thời gian chuẩn thống nhất được áp dụng cho các mục đích pháp lý, thương mại và xã hội. Các múi giờ thường tuân theo biên giới của các quốc gia và khu vực con của chúng, thay vì theo đúng vĩ độ, vì việc duy trì thời gian giống nhau trong các khu vực thương mại hoặc giao tiếp gần nhau là thuận tiện hơn.
Chênh lệch thời gian giữa hầu hết các múi giờ trên đất liền và Thời gian Phối hợp Quốc tế (UTC) là một giờ tròn (UTC-11:00 (không có UTC-12:00) đến UTC+14:00), nhưng một số múi giờ có sự chênh lệch 30 hoặc 45 phút (ví dụ, Thời gian chuẩn Newfoundland là UTC-03:30, Thời gian chuẩn Nepal là UTC+05:45, Thời gian chuẩn Ấn Độ là UTC+05:30, và Thời gian chuẩn Myanmar là UTC+06:30).
Audio
Audio API được cung cấp bởi HTML5 cho lập trình JavaScript cho phép các nhà phát triển thao tác trực tiếp với dữ liệu luồng âm thanh gốc trong mã, tạo, xử lý và phát lại âm thanh một cách tùy ý, chẳng hạn như cải thiện âm sắc, thay đổi độ cao và phân đoạn âm thanh. Nó có thể được coi là phiên bản web của Adobe Audition.
Nguyên lý của việc nhận dạng dấu vân tay AudioContext như sau:
Phương pháp 1: Tạo một luồng thông tin âm thanh (sóng tam giác), thực hiện phép biến đổi FFT và tính toán giá trị SHA như dấu vân tay.
Phương pháp 2: Tạo một luồng thông tin âm thanh (sóng sin), thực hiện xử lý nén động và tính toán giá trị MD5.
Cả hai phương pháp đều làm sạch âm thanh trước khi phát ra thiết bị âm thanh, và người dùng không nhận thấy khi dấu vân tay được tạo ra.
Nguyên lý cơ bản của dấu vân tay AudioContext:
Sự khác biệt nhỏ trong phần cứng hoặc phần mềm của máy chủ hoặc trình duyệt dẫn đến sự khác biệt trong việc xử lý tín hiệu âm thanh. Một loại trình duyệt trên cùng một máy tính sẽ tạo ra âm thanh giống nhau, và âm thanh được tạo ra trên các máy tính hoặc trình duyệt khác nhau sẽ khác nhau.
Có thể thấy sự tương đồng giữa dấu vân tay AudioContext và dấu vân tay Canvas vì cả hai đều sử dụng sự khác biệt trong phần cứng hoặc phần mềm. Một cái tạo ra âm thanh, cái kia tạo ra hình ảnh, rồi tính toán các giá trị băm khác nhau làm dấu vân tay nhận dạng.
LocalStorage
Là một trong các API của tính năng lưu trữ web local storage của HTML5, localStorage chủ yếu được sử dụng để lưu trữ dữ liệu trên phía khách hàng, và khách hàng thường chỉ đến máy tính của người dùng thiết kế trang web. Trên các thiết bị di động, vì hầu hết các trình duyệt đều hỗ trợ tính năng lưu trữ web, các trình duyệt web trên điện thoại thông minh như Android và iOS có thể sử dụng tính năng này bình thường.
Dữ liệu được lưu trữ bằng localStorage thường được lưu vĩnh viễn, có nghĩa là chỉ cần thông tin được lưu trữ trong localStorage, dữ liệu sẽ luôn được lưu trữ trên thiết bị của người dùng. Ngay cả khi người dùng đóng trình duyệt web hiện tại và khởi động lại, dữ liệu vẫn tồn tại. Vòng đời của dữ liệu chỉ kết thúc khi người dùng hoặc chương trình rõ ràng xóa nó.
Về mặt bảo mật, localStorage là an toàn trong phạm vi miền, tức là localStorage gắn với miền. Bất kỳ trang nào trong miền đó đều có thể truy cập dữ liệu localStorage. Tuy nhiên, có một vấn đề là dữ liệu giữa các trình duyệt của từng nhà phát triển trình duyệt là độc lập. Nói cách khác, nếu bạn sử dụng localStorage để lưu trữ dữ liệu trong Firefox, dữ liệu này sẽ không thể đọc được trong trình duyệt Chrome. Tương tự, vì dữ liệu localStorage được lưu trữ trên thiết bị của người dùng, dữ liệu được lưu bởi cùng một ứng dụng trên các thiết bị khác nhau sẽ khác nhau.
Geo
Geolocation API là một phần của chuẩn W3C HTML5, cung cấp một API JavaScript đơn giản giúp các trang web yêu cầu vị trí vật lý, từ đó có thể xâm phạm quyền riêng tư của người dùng. Kiểm tra API Geolocation này nhằm đảm bảo rằng không có thông tin vị trí nào bị truy cập qua API này mà không có sự cho phép rõ ràng của bạn.
Nguồn: https://browserleaks.com/geo
Fonts
Dấu vân tay phông chữ — là những phông chữ bạn có và cách chúng được vẽ. Dựa trên việc đo lường kích thước của các phần tử HTML chứa văn bản, có thể xây dựng một mã nhận dạng được sử dụng để theo dõi cùng một trình duyệt theo thời gian.
Dấu vân tay phông chữ dựa trên các chỉ số được kết hợp chặt chẽ với dấu vân tay Canvas. Đây có thể là một kỹ thuật dấu vân tay yếu hơn vì Canvas không chỉ nhận được các hộp bao mà còn cả dữ liệu pixel. Mặt khác, dấu vân tay phông chữ khó bảo vệ hơn nhiều.
Việc hiển thị văn bản là một phần tinh tế và phức tạp của trình duyệt web. Ngay cả trong bảng chữ cái Latinh, việc bố trí văn bản không chỉ là việc xếp các hộp lại với nhau: các yếu tố như các chữ cái liên kết, khoảng cách giữa các chữ cái và các ký tự kết hợp cũng cần được xem xét. Một số hệ thống chữ viết khác còn phức tạp hơn, khiến các trình duyệt phải dựa vào thư viện do hệ điều hành cung cấp để bố trí văn bản. Các thư viện này, bao gồm Pango trên GNU/Linux, Graphics Device Interface (GDI) hoặc DirectWrite trên Windows và Core Text trên Mac OS X, là các cơ sở mã độc lập và không hoạt động giống nhau. Các trình duyệt cũng áp dụng các tuỳ chỉnh riêng của mình lên việc hiển thị văn bản cơ bản.
Canvas
Canvas là một phần của HTML5 và cho phép các ngôn ngữ lập trình vẽ các hình ảnh bitmap động. Bạn có thể sử dụng ngôn ngữ lập trình JavaScript để vẽ trên phần tử này. Các ứng dụng phổ biến bao gồm vẽ đồ họa và văn bản, xử lý hình ảnh, trò chơi và hoạt hình.
WebGL
WebGL là một API JavaScript được sử dụng để vẽ đồ họa 2D và 3D tương tác trong bất kỳ trình duyệt web tương thích nào mà không cần sử dụng plugin. WebGL hoàn toàn được tích hợp vào tất cả các tiêu chuẩn trang web của trình duyệt, và có thể sử dụng tăng tốc GPU cho việc xử lý hình ảnh và hiệu ứng như một phần của trang web Canvas. Các phần tử WebGL có thể được thêm vào các phần tử HTML khác và trộn với các phần khác của trang web hoặc nền của trang web. Chương trình WebGL bao gồm một trình xử lý được viết bằng JavaScript và mã shader được viết bằng OpenGL Shading Language (GLSL), tương tự như C hoặc C++ và chạy trên đơn vị xử lý đồ họa (GPU) của máy tính.
WebRTC
WebRTC là một plugin trình duyệt thường được sử dụng bởi các ứng dụng web yêu cầu kết nối trực tiếp nhanh chóng. Vì WebRTC thiết lập kết nối qua giao thức UDP, nó không đi qua các máy chủ proxy mà bạn có thể sử dụng trong trình duyệt. Các trang web có thể khai thác điều này để tiết lộ địa chỉ IP công cộng và nội bộ thực sự của bạn ngay cả khi bạn đang sử dụng proxy. Plugin này cũng có thể được sử dụng để tiết lộ địa chỉ IP nội bộ của bạn hoặc theo dõi thiết bị truyền thông của bạn.
Các thứ mà plugin WebRTC có thể rò rỉ:
Địa chỉ IP công cộng
Địa chỉ IP nội bộ
Số và mã băm thiết bị truyền thông
Media devices
WebRTC là một plugin trình duyệt hỗ trợ giao tiếp âm thanh và video trên trang web bằng cách cho phép kết nối trực tiếp giữa các người dùng mà không cần phải cài đặt thêm plugin hoặc ứng dụng gốc. Để plugin này hoạt động, WebRTC cung cấp quyền truy cập vào các thiết bị truyền thông của bạn, chẳng hạn như micrô, camera và tai nghe. Các trang web có thể tận dụng cơ chế này theo hai cách:
Liệt kê thiết bị
Theo dõi ID thiết bị truyền thông
Do Not Track
Do Not Track (DNT) là một trường tiêu đề HTTP. Khi người dùng bật tính năng này, trình duyệt sẽ thêm trường tiêu đề vào dữ liệu HTTP: dnt: 1
. Trường này thông báo cho máy chủ trang web rằng người dùng không muốn bị theo dõi. Nhờ đó, các trang web tuân thủ quy định sẽ không theo dõi thông tin cá nhân của người dùng để phục vụ quảng cáo chính xác hơn.
SSL
Transport Layer Security (TLS) và phiên bản tiền nhiệm của nó Secure Sockets Layer (SSL) là các giao thức bảo mật nhằm cung cấp bảo mật và bảo vệ tính toàn vẹn của dữ liệu cho các giao tiếp trên Internet. Khi Netscape phát hành phiên bản đầu tiên của trình duyệt web Netscape Navigator vào năm 1994, họ đã giới thiệu giao thức HTTPS với mã hóa SSL, đánh dấu sự ra đời của SSL. IETF đã chuẩn hóa SSL và công bố tài liệu tiêu chuẩn TLS 1.0 (RFC 2246) vào năm 1999. Sau đó, các phiên bản TLS 1.1 (RFC 4346, 2006), TLS 1.2 (RFC 5246, 2008) và TLS 1.3 (RFC 8446, 2018) đã được công bố. Giao thức này được sử dụng rộng rãi trong các ứng dụng như trình duyệt, email, tin nhắn tức thời, VoIP và fax trên Internet. Nhiều trang web như Google, Facebook, Wikipedia cũng sử dụng giao thức này để tạo kết nối an toàn và truyền tải thông tin. Nó đã trở thành tiêu chuẩn công nghiệp cho giao tiếp bảo mật trên Internet.
SSL bao gồm một lớp ghi và một lớp truyền tải. Giao thức lớp ghi xác định định dạng bao bọc dữ liệu của lớp truyền tải. Giao thức bảo mật lớp truyền tải sử dụng xác thực X.509 và sau đó sử dụng mã hóa bất đối xứng để xác thực các bên giao tiếp và trao đổi khóa đối xứng, khóa này được sử dụng để mã hóa dữ liệu trao đổi giữa hai bên, đảm bảo tính bảo mật và độ tin cậy của giao tiếp giữa hai ứng dụng, giúp ngăn chặn việc nghe lén giao tiếp giữa khách hàng và máy chủ.
Cần thêm trợ giúp? Liên hệ với chúng tôi: