Nhiều người đổi proxy, thay User-Agent, vẫn bị Cloudflare challenge hay tài khoản bị gắn cờ mà không hiểu tại sao. Lý do có thể nằm ở tầng kết nối: JA3 Fingerprint là dấu vân tay được tạo ngay khi trình duyệt thiết lập kết nối HTTPS, không phụ thuộc cookie hay JavaScript. Bài này giải thích JA3 hoạt động như thế nào, website dùng nó để làm gì, và tại sao một số hành vi thông thường lại dễ bị hệ thống phát hiện qua JA3.
1. JA3 Fingerprint là gì?
Trước khi tìm hiểu JA3 Fingerprint, bạn chỉ cần biết rằng JA3 là một dạng TLS Fingerprint. Khi truy cập một website sử dụng HTTPS, trình duyệt và máy chủ sẽ thực hiện TLS Handshake để thiết lập kết nối bảo mật. Trong quá trình này, trình duyệt gửi một số thông tin về cách hỗ trợ giao thức TLS. Những thông tin đó có thể được dùng để tạo TLS Fingerprint.
Nếu muốn tìm hiểu kỹ hơn về TLS Fingerprint và TLS Handshake, bạn có thể tìm đọc bài viết TLS Fingerprint là gì? trên blog của Hidemyacc. Trong bài viết này, chúng ta sẽ tập trung vào JA3 Fingerprint và cách website sử dụng nó để nhận diện client.
JA3 là một trong những phương pháp phổ biến nhất để tạo TLS Fingerprint. Thay vì phân tích toàn bộ quá trình TLS Handshake, JA3 chỉ lấy một số trường quan trọng trong gói tin đầu tiên của trình duyệt, sau đó tạo thành một chuỗi hash ngắn. Nhờ vậy, website có thể nhanh chóng nhận biết loại client đang kết nối.
Nói đơn giản, mỗi khi bạn mở một website, trình duyệt sẽ gửi một số thông tin đến máy chủ để thiết lập kết nối HTTPS. JA3 Fingerprint chính là dấu vân tay được tạo từ những thông tin này.
Điều quan trọng cần hiểu là JA3 không dùng để xác định bạn là ai. Nó chỉ giúp website nhận biết bạn đang sử dụng loại trình duyệt hoặc công cụ nào.
Ví dụ, hai người cùng sử dụng Chrome trên cùng phiên bản Windows thường sẽ có JA3 Fingerprint giống nhau. Ngược lại, nếu một công cụ tự động có cách thiết lập kết nối khác Chrome thông thường, website sẽ dễ dàng nhận ra sự khác biệt ngay từ khi kết nối được tạo.
Nhiều người cũng nhầm rằng JA3 có thể thu thập toàn bộ thông tin về thiết bị. Thực tế không phải vậy. JA3 chỉ ghi nhận cách trình duyệt thiết lập kết nối TLS và không liên quan đến các thông tin như IP, cookie hay cấu hình phần cứng.
| JA3 có ghi lại | JA3 không đụng tới |
|---|---|
| Phiên bản giao thức bảo mật | Địa chỉ IP |
| Danh sách cách mã hóa trình duyệt biết dùng | Cookie |
| Các tính năng bảo mật kèm theo | Dấu vết vẽ hình trên trình duyệt (Canvas) |
| Thông số kỹ thuật của khóa mã hóa | Phông chữ trong máy |
| Độ phân giải màn hình |
2. JA3 Fingerprint hoạt động như thế nào?
Bước 1. Trình duyệt gửi gói ClientHello
Ngay khi bắt đầu kết nối HTTPS, trình duyệt sẽ gửi một gói tin đầu tiên có tên là ClientHello đến máy chủ.
Gói tin này chứa các thông tin về cách trình duyệt hỗ trợ giao thức TLS, giúp máy chủ lựa chọn phương thức mã hóa phù hợp để hai bên có thể trao đổi dữ liệu an toàn. Đây cũng là nguồn dữ liệu để JA3 tạo ra fingerprint.
Bước 2. JA3 lấy các thông tin cần thiết
JA3 không sử dụng toàn bộ dữ liệu trong ClientHello. Thay vào đó, nó chỉ lấy một số trường quan trọng rồi ghép lại thành một chuỗi theo đúng thứ tự.
Ví dụ:
769,47-53-5-10,0-11-10-35,23-24,0
Chuỗi này chưa phải là JA3 Fingerprint cuối cùng mà chỉ là dữ liệu đầu vào để tạo fingerprint.
Nếu sử dụng Chrome, bạn có thể nghe đến GREASE. Đây là cơ chế giúp Chrome chèn thêm một số giá trị ngẫu nhiên vào ClientHello để kiểm tra khả năng tương thích của máy chủ.
Tuy nhiên, JA3 sẽ tự động bỏ qua các giá trị này trước khi tính toán. Vì vậy, cùng một phiên bản Chrome vẫn tạo ra JA3 Fingerprint ổn định thay vì thay đổi sau mỗi lần kết nối.
Bước 3. Tạo JA3 Fingerprint
Sau khi ghép các trường cần thiết, JA3 sẽ sử dụng thuật toán băm MD5 để tạo thành một chuỗi hash có độ dài cố định.
Ví dụ:
e7d705a3286e19ea42f587b344ee6865
Website chỉ cần lưu hoặc so sánh chuỗi hash này thay vì xử lý toàn bộ dữ liệu trong ClientHello. Điều này giúp quá trình nhận diện client diễn ra nhanh hơn và tiết kiệm tài nguyên hơn.
Điểm đáng chú ý là JA3 Fingerprint được tạo ngay khi kết nối HTTPS được thiết lập, trước khi website tải nội dung và không cần JavaScript. Vì vậy, website có thể nhận diện loại client ngay từ những giây đầu tiên của quá trình kết nối.
3. Vì sao website dùng JA3 fingerprint?
Mục đích của JA3 Fingerprint không phải để xác định danh tính của từng người dùng. Thay vào đó, website sử dụng nó để nhận biết loại client đang kết nối và phát hiện những dấu hiệu bất thường ngay từ khi kết nối HTTPS được thiết lập.
Dưới đây là những mục đích phổ biến nhất.
- Phát hiện công cụ tự động: Nhiều công cụ tự động như Selenium, Puppeteer hoặc các trình duyệt chạy ngầm có thể tạo ra JA3 Fingerprint khác với trình duyệt thông thường. Nhờ đó, website có thể phát hiện lưu lượng truy cập đáng ngờ ngay từ khi kết nối được tạo, trước cả khi người dùng tải xong trang web hoặc thực hiện bất kỳ thao tác nào.
- Chống gian lận: JA3 Fingerprint cũng được sử dụng để phát hiện các hoạt động có nguy cơ gian lận. Ví dụ, nếu hàng trăm tài khoản cùng sử dụng một JA3 Fingerprint bất thường để đăng nhập hoặc nhận khuyến mãi, hệ thống có thể đánh dấu đây là dấu hiệu của phần mềm tự động hoặc nhiều tài khoản được điều khiển bằng cùng một công cụ.
- Bảo vệ tài khoản: Một số website theo dõi JA3 Fingerprint trong quá trình đăng nhập. Nếu tài khoản thường xuyên sử dụng Chrome nhưng đột nhiên xuất hiện một JA3 Fingerprint hoàn toàn khác, hệ thống có thể yêu cầu xác minh bổ sung hoặc áp dụng thêm các biện pháp bảo mật để bảo vệ tài khoản.
- Phân tích lưu lượng truy cập: Ngoài mục đích bảo mật, JA3 Fingerprint còn được dùng để phân loại các loại client đang truy cập website. Thông tin này giúp doanh nghiệp hiểu tỷ lệ người dùng sử dụng trình duyệt thật, công cụ tự động hoặc các ứng dụng khác khi truy cập hệ thống. Dữ liệu thu được có thể phục vụ việc thống kê, phân tích và tối ưu hạ tầng.
JA3 Fingerprint không phải là yếu tố duy nhất quyết định việc chặn hay cho phép một kết nối. Tuy nhiên, đây là một tín hiệu quan trọng giúp website đánh giá mức độ tin cậy của client ngay từ những giây đầu tiên của quá trình kết nối.
4. Vì sao JA3 Fingerprint có thể khiến bạn bị website chặn?
Nhiều người cho rằng chỉ cần đổi proxy hoặc User-Agent là website sẽ không thể nhận ra mình. Tuy nhiên, thực tế không đơn giản như vậy.
Ngay cả khi địa chỉ IP đã thay đổi, JA3 Fingerprint vẫn có thể cho website biết bạn đang sử dụng loại client nào để kết nối. Nếu JA3 không giống với một trình duyệt thông thường hoặc không khớp với các thông tin khác, hệ thống chống bot có thể đánh giá kết nối đó có mức độ rủi ro cao. Dưới đây là những nguyên nhân phổ biến.
4.1 Sử dụng thư viện TLS cũ hoặc không tương đồng với browser thật
Nhiều công cụ hoặc thư viện không sử dụng cùng TLS stack với Chrome hoặc Firefox. Vì vậy, JA3 Fingerprint được tạo ra cũng sẽ khác so với trình duyệt thông thường.
Ví dụ:
- Python Requests và Scrapy sử dụng OpenSSL nên tạo ra JA3 Fingerprint đặc trưng của OpenSSL.
- Node.js, axios hoặc fetch sử dụng TLS stack của Node.js.
- cURL cũng có JA3 Fingerprint riêng và rất dễ nhận biết.
Ngay cả Puppeteer, Playwright hay Selenium cũng có thể tạo ra JA3 khác với Chrome thông thường trong một số trường hợp.
Kết quả là bạn có thể sử dụng Residential Proxy và User-Agent mới nhất, nhưng hệ thống như Cloudflare vẫn yêu cầu xác minh hoặc chặn kết nối vì JA3 cho thấy đây có thể là một công cụ tự động.
4.2 Browser Fingerprint và JA3 không khớp
Website thường không chỉ kiểm tra một loại fingerprint.
Ví dụ, User-Agent khai báo là Chrome mới nhất nhưng JA3 Fingerprint lại giống OpenSSL hoặc một thư viện automation. Đây là dấu hiệu cho thấy các thông tin của trình duyệt không nhất quán.
Sự không khớp này là một trong những tín hiệu phổ biến để hệ thống chống bot phát hiện lưu lượng truy cập đáng ngờ.
4.3 Nhiều tài khoản cùng sử dụng một JA3
Nếu hàng chục hoặc hàng trăm tài khoản đều kết nối với cùng một JA3 Fingerprint trong thời gian ngắn, website có thể nghi ngờ chúng được điều khiển bằng cùng một công cụ.
Điều này thường xảy ra khi nhiều tài khoản cùng sử dụng một thư viện automation hoặc cùng một môi trường thực thi.
4.4 Proxy có JA3 bất thường
Proxy chỉ thay đổi địa chỉ IP, không thay đổi cách client thiết lập kết nối TLS.
Vì vậy, dù sử dụng Residential Proxy, website vẫn có thể phát hiện dấu hiệu bất thường nếu JA3 Fingerprint không giống trình duyệt thật hoặc không phù hợp với browser fingerprint.
Nói cách khác, một proxy chất lượng không đồng nghĩa với việc JA3 cũng sẽ tự nhiên.
4.5 Website không chỉ dựa vào JA3
Có một điểm quan trọng để tránh hiểu sai. Rất ít hệ thống chỉ dựa vào JA3 để quyết định chặn. Thông thường, JA3 chỉ là một tín hiệu trong bức tranh đánh giá rủi ro tổng thể.
Hãy hình dung hai trường hợp. Một trình duyệt có dấu vết giống Chrome, dấu vết trình duyệt tự nhiên, proxy dân cư chất lượng và hành vi bình thường, thường sẽ có mức rủi ro thấp. Ngược lại, nếu User-Agent khai là Chrome nhưng dấu vết lại giống thư viện lập trình, cộng thêm proxy máy chủ (datacenter proxy) và vài điểm bất thường khác, hệ thống có nhiều cơ sở hơn để đánh dấu đây là lưu lượng đáng ngờ.
Vì vậy, chỉ đổi proxy hoặc User-Agent thường không đủ để vượt qua các hệ thống chống bot hiện đại. Điều quan trọng là các tín hiệu nhận diện phải nhất quán với nhau.
5. JA3 Fingerprint khác Browser Fingerprint như thế nào?
Ngoài JA3 Fingerprint, nhiều website còn sử dụng Browser Fingerprint để nhận diện người dùng. Mặc dù đều là các kỹ thuật fingerprinting, hai phương pháp này hoạt động ở những thời điểm khác nhau và thu thập các loại thông tin khác nhau.
JA3 Fingerprint được tạo ngay khi trình duyệt thiết lập kết nối HTTPS. Trong khi đó, Browser Fingerprint chỉ được tạo sau khi website tải xong và trình duyệt bắt đầu thực thi JavaScript.
Nói đơn giản, JA3 Fingerprint phản ánh cách trình duyệt thiết lập kết nối, còn Browser Fingerprint phản ánh đặc điểm của chính trình duyệt và thiết bị.
Bảng dưới đây sẽ giúp bạn dễ hình dung hơn.
| Tiêu chí | JA3 Fingerprint | Browser Fingerprint |
|---|---|---|
| Tầng hoạt động | Hoạt động ở tầng TLS | Hoạt động trong trình duyệt |
| Thời điểm khởi tạo | Được tạo khi bắt đầu kết nối HTTPS | Được tạo sau khi tải trang |
| Yêu cầu kỹ thuật | Không cần JavaScript | Phụ thuộc JavaScript |
Trong thực tế, các hệ thống chống bot hiện đại thường kết hợp cả JA3 Fingerprint và Browser Fingerprint thay vì chỉ dựa vào một loại fingerprint. Nếu hai tín hiệu này không nhất quán, khả năng kết nối bị đánh dấu sẽ cao hơn.
6. Làm sao để JA3 Fingerprint tự nhiên hơn?
JA3 Fingerprint được tạo từ cách client thiết lập kết nối TLS. Vì vậy, nếu muốn JA3 Fingerprint trông tự nhiên hơn, bạn cần sử dụng client có cách thiết lập kết nối giống với trình duyệt thông thường.
6.1 Sử dụng trình duyệt thật
Cách đơn giản nhất là sử dụng các trình duyệt như Chrome hoặc Firefox.
Các trình duyệt này sử dụng TLS stack gốc nên JA3 Fingerprint được tạo ra cũng giống với phần lớn người dùng thông thường. Bạn gần như không cần cấu hình thêm để có một JA3 tự nhiên.
Tuy nhiên, cách này không phù hợp nếu cần quản lý nhiều tài khoản hoặc tự động hóa công việc.
6.2 Đồng bộ TLS với trình duyệt
Nếu đang phát triển scraper hoặc automation bằng Python, Go hay các ngôn ngữ khác, bạn nên sử dụng các thư viện có khả năng mô phỏng TLS stack của trình duyệt.
Một số thư viện phổ biến như tls-client hoặc curl-impersonate có thể giúp tạo kết nối gần giống Chrome hoặc Firefox hơn, từ đó giảm sự khác biệt của JA3 Fingerprint.
Cách này phù hợp với lập trình viên nhưng sẽ yêu cầu kiến thức về lập trình và cấu hình TLS.
6.3 Tránh sử dụng thư viện TLS lỗi thời
Một số thư viện sử dụng phiên bản TLS hoặc bộ thuật toán mã hóa đã cũ. Điều này có thể khiến JA3 Fingerprint khác đáng kể so với các trình duyệt hiện đại.
Vì vậy, bạn nên cập nhật thư viện thường xuyên và sử dụng các phiên bản TLS phổ biến để giảm nguy cơ bị phát hiện.
6.4 Duy trì Fingerprint nhất quán
JA3 Fingerprint chỉ là một trong nhiều tín hiệu mà website sử dụng để đánh giá kết nối.
Nếu JA3 cho thấy bạn đang dùng Chrome nhưng browser fingerprint hoặc địa chỉ IP lại mang đặc điểm của một môi trường khác, hệ thống chống bot vẫn có thể đánh dấu kết nối là đáng ngờ.
Do đó, hãy đảm bảo các tín hiệu như JA3 Fingerprint, dấu vân tay thiết bị và địa chỉ IP luôn phù hợp với nhau thay vì chỉ tập trung thay đổi một yếu tố.
6.5 Sử dụng antidetect browser
Nếu cần quản lý nhiều tài khoản, antidetect browser là một lựa chọn phù hợp hơn so với trình duyệt thông thường.
Các antidetect browser được thiết kế để tạo browser profile riêng cho từng tài khoản, đồng thời giúp các thông số như Browser Fingerprint, User-Agent và các tín hiệu nhận diện khác hoạt động nhất quán hơn.
Nhiều antidetect browser hiện nay cũng sử dụng Chromium làm nền tảng. Nhờ đó, quá trình thiết lập kết nối TLS gần giống với Chrome thông thường, giúp JA3 Fingerprint tự nhiên hơn mà người dùng không cần cấu hình TLS thủ công.
Một trong những giải pháp phổ biến là antidetect browser Hidemyacc. Công cụ này cho phép tạo nhiều browser profile độc lập, mỗi profile đều có fingerprint riêng và hoạt động tách biệt với các profile khác. Nhờ duy trì sự nhất quán giữa JA3 Fingerprint, Browser Fingerprint và các thông số liên quan, Hidemyacc giúp giảm nguy cơ bị hệ thống chống bot đánh dấu khi quản lý nhiều tài khoản.
Tải HIdemyacc tại đây
6.6 Kiểm tra JA3 fingerprint trước khi vận hành
Trước khi chạy automation hoặc triển khai trên quy mô lớn, bạn nên kiểm tra JA3 Fingerprint để phát hiện các điểm bất thường.
Một số công cụ thường được sử dụng gồm:
- ScrapFly JA3 Fingerprint Tool để xem JA3 hash và các thông tin TLS của client.
- JA3er để tra cứu và so sánh JA3 Fingerprint với cơ sở dữ liệu các client phổ biến.
- Wireshark để phân tích gói tin TLS ClientHello khi cần kiểm tra chi tiết.
Việc kiểm tra trước sẽ giúp bạn phát hiện sớm những vấn đề về TLS và hạn chế nguy cơ bị website đánh dấu khi đưa hệ thống vào hoạt động.
7. Hạn chế của JA3 Fingerprint
Mặc dù JA3 Fingerprint là một kỹ thuật nhận diện phổ biến, nó vẫn có một số hạn chế.
- Không thể nhận diện từng người dùng : A3 Fingerprint chỉ phản ánh cách client thiết lập kết nối TLS, không phải danh tính của người dùng. Điều đó có nghĩa là nhiều người cùng sử dụng một phiên bản Chrome trên cùng hệ điều hành vẫn có thể có cùng JA3 Fingerprint. Vì vậy, website không thể chỉ dựa vào JA3 để xác định chính xác một người dùng cụ thể.
- Có thể thay đổi khi trình duyệt được cập nhật: JA3 Fingerprint phụ thuộc vào cách trình duyệt thiết lập kết nối TLS. Nếu Chrome, Firefox hoặc các trình duyệt khác cập nhật TLS stack hay thay đổi cách gửi gói ClientHello, JA3 Fingerprint cũng có thể thay đổi theo. Vì vậy, cùng một thiết bị nhưng sau khi cập nhật trình duyệt vẫn có thể tạo ra JA3 Fingerprint khác trước.
- Độ ổn định không còn như trước: Từ năm 2023, Chrome bắt đầu ngẫu nhiên hóa thứ tự của một số TLS Extensions trong ClientHello. Điều này khiến cùng một trình duyệt có thể tạo ra các JA3 Fingerprint khác nhau giữa các lần kết nối. Đây cũng là một trong những lý do JA3 không còn ổn định như trước và khó phản ánh chính xác một loại client chỉ bằng một chuỗi hash.
Mặc dù vẫn được sử dụng rộng rãi, JA3 Fingerprint không còn là tiêu chuẩn duy nhất trong các hệ thống nhận diện hiện đại. Để khắc phục những hạn chế này, một phương pháp mới có tên JA4 đã được phát triển và ngày càng được nhiều nền tảng áp dụng.
8. JA3 và JA4 khác nhau như thế nào?
Chính việc Chrome xáo trộn thứ tự đã làm JA3 mất đi độ tin cậy với trình duyệt đời mới. Đó là lý do một nhóm khác, FoxIO, phát triển JA4 và ra mắt chính thức vào tháng 9 năm 2023.
Ý tưởng cốt lõi của JA4 khá đơn giản. Thay vì phụ thuộc vào thứ tự thông tin, nó sắp xếp lại các thông tin cho gọn trước khi tạo dấu vết. Nhờ vậy, việc Chrome xáo trộn thứ tự không còn làm nhiễu kết quả.
Dưới đây là một số điểm khác biệt giữa hai phương pháp.
| Tiêu chí | JA3 | JA4 |
|---|---|---|
| Thời điểm ra đời | 2017 | 2023 |
| Dữ liệu sử dụng | Các trường trong ClientHello | Dữ liệu TLS đã được chuẩn hóa |
| Ảnh hưởng bởi thay đổi TLS | Cao | Thấp hơn |
| Độ ổn định | Có thể thay đổi do trình duyệt cập nhật | Ổn định hơn trên các trình duyệt hiện đại |
| Mức độ sử dụng | Vẫn được sử dụng rộng rãi | Đang được nhiều nền tảng áp dụng |
Điều này không có nghĩa JA4 sẽ thay thế hoàn toàn JA3. Trên thực tế, nhiều website và hệ thống chống bot vẫn tiếp tục sử dụng JA3 do đã được triển khai từ nhiều năm trước.
Trong thời gian tới, JA3 và JA4 nhiều khả năng sẽ cùng tồn tại. Tùy vào hệ thống và mục đích sử dụng, website có thể dùng một trong hai hoặc kết hợp cả hai để đánh giá mức độ tin cậy của kết nối.
9. Kết luận
JA3 Fingerprint là kỹ thuật nhận diện client dựa trên cách trình duyệt thiết lập kết nối TLS. Dù không thể xác định chính xác từng người dùng, đây vẫn là một tín hiệu quan trọng được nhiều website và hệ thống chống bot sử dụng để phát hiện các kết nối bất thường.
Nếu thường xuyên quản lý nhiều tài khoản, bạn nên đảm bảo JA3 Fingerprint, Browser Fingerprint và các tín hiệu nhận diện khác luôn nhất quán. Các giải pháp như antidetect browser Hidemyacc có thể hỗ trợ tạo browser profile độc lập, giúp duy trì fingerprint ổn định và giảm nguy cơ bị hệ thống đánh dấu.
Hy vọng bài viết đã giúp bạn hiểu rõ JA3 Fingerprint là gì, cách kỹ thuật này hoạt động và vì sao nó vẫn đóng vai trò quan trọng trong các hệ thống nhận diện hiện nay.
10. FAQ
1. JA3 Fingerprint có theo dõi được người dùng không?
hông. JA3 được tạo từ các thông tin trong TLS ClientHello, nên phụ thuộc vào TLS stack của trình duyệt hoặc công cụ đang sử dụng, không phụ thuộc vào địa chỉ IP. Bạn có thể đổi proxy hoặc VPN nhưng JA3 vẫn giữ nguyên nếu client không thay đổi.
2. Đổi IP có làm thay đổi JA3 không?
Không. JA3 phụ thuộc vào TLS stack của client đang dùng, không phụ thuộc địa chỉ IP hay HTTP header. Cùng một tool hay browser cho ra cùng JA3 hash bất kể IP là gì.
3. VPN có thay đổi JA3 không?
Không. VPN chỉ thay đổi địa chỉ IP và định tuyến kết nối, không can thiệp vào TLS stack của trình duyệt. JA3 vẫn giữ nguyên khi bật VPN.
4. Hai máy tính cùng dùng Chrome có JA3 giống nhau không?
Trong nhiều trường hợp là có, đặc biệt khi cùng phiên bản Chrome và hệ điều hành. Tuy nhiên, từ Chrome 108 trở đi, Google đã ngẫu nhiên hóa thứ tự một số TLS Extension, khiến JA3 có thể không còn hoàn toàn giống nhau giữa các phiên kết nối. Dù vậy, các kết nối này vẫn mang đặc điểm của Chrome và có hành vi tương tự trình duyệt thật. .
5. JA3 còn được sử dụng khi đã có JA4 không?
Có. JA3 và JA4 thường được dùng song song. JA4 ổn định hơn với Chrome hiện đại nhưng JA3 vẫn hiệu quả với nhiều client khác. Các hệ thống như Cloudflare kết hợp cả hai.
6. JA3 Fingerprint có thay đổi khi cập nhật Chrome không?
Có thể. Mỗi khi Chrome thay đổi TLS stack hoặc cách gửi TLS ClientHello, JA3 Fingerprint cũng có thể thay đổi theo. Đó là lý do cùng một máy tính nhưng sau khi cập nhật trình duyệt, JA3 hash có thể khác trước dù người dùng không thay đổi bất kỳ cài đặt nào.









