Bypass check ẩn danh Web1s
Mở đầu
Web1s là giải pháp kiếm tiền online bằng cách rút gọn liên kết, ghi chú và upload file được nhiều người sử dụng, trong đó có cả mình. Web1s hoạt động chủ yếu bằng cách yêu cầu người truy cập tìm kiếm từ khóa và vào trang web cụ thể để lấy mã (hay còn gọi là vượt link rút gọn). Lợi dụng cách hoạt động của Web1s, nhiều người sử dụng nó để quảng cáo các web cờ bạc, cá độ bất hợp pháp. Đương nhiên không ai trong chúng ta muốn để lại những trang web này trong lịch sử tìm kiếm và lịch sử duyệt web của mình. Tuy nhiên, nếu bạn sử dụng chế độ ẩn danh để vượt link, bạn sẽ gặp phải thông báo như sau:
Trong bài viết này, chúng ta sẽ tìm hiểu cách Web1s phát hiện chế độ ẩn danh và cách bypass nó.
detectIncognito
Tải lại trang với DevTools mở sẵn ở tab Network
, ta thấy 1 file site-v5.js
được tải:
Ta có thể khẳng định rằng đây là script chịu trách nhiệm về việc kiểm tra chế độ ẩn danh cũng như lấy mã vượt link vì nó được tải từ web1s.com
và có chứa chuỗi Vui lòng tắt chế độ ẩn danh
:
Đặt breakpoint tại vị trí hàm f
được gọi và nhấn vào nút lấy mã, ta có được thông tin về vị trí hàm f
:
Tới vị trí hàm f
, ta thấy sự xuất hiện của chuỗi detectIncognito
:
Vài đường google cơ bản sẽ dẫn ta tới mã nguồn của detectIncognito, một công cụ giúp phát hiện chế độ ẩn danh trên các trình duyệt:
JavaScript detection of Incognito & other private browsing modes on Chrome, Edge, Safari, Brave, Firefox, Opera and MSIE.
Theo như hướng dẫn sử dụng, hàm detectIncognito
sẽ được gọi để kiểm tra chế độ ẩn danh. Ta sẽ xem qua nội dung tệp TypeScript detectIncognito.ts:
1 | ... |
Có thể thấy hàm main
chịu trách nhiệm phát hiện loại trình duyệt và gọi các hàm kiểm tra tương ứng. Vì mình đang sử dụng trình duyệt Chrome nên mình sẽ xem nội dung hàm chromePrivateTest
:
1 | ... |
Vì hiện nay hầu như chẳng còn ai sử dụng Chrome phiên bản 50 đến 75, ta sẽ tập trung vào hàm storageQuotaChromePrivateTest
. Hàm này gọi navigator.webkitTemporaryStorage.queryUsageAndQuota
với 2 callback, trong đó callback đầu tiên (successCallback
) được gọi khi truy vấn thành công. successCallback
là một hàm với 2 tham số, tham số thứ 2 được so sánh với kết quả của hàm getQuotaLimit
nhân 2 sau khi đã chuyển đổi đơn vị. Cuối cùng, kết quả so sánh được trả về bằng cách gọi __callback
.
Bypass detectIncognito
Ta đã biết cách detectIncognito hoạt động, việc bypass nó chỉ là vấn đề nhỏ. Chỉ cần ghi đè navigator.webkitTemporaryStorage.queryUsageAndQuota
bằng một hàm khác gọi callback thứ nhất với đối số thứ 2 là một số cực lớn:
1 | navigator.webkitTemporaryStorage.queryUsageAndQuota = function(successCallback, errorCallback) { |
Ta có thể làm tương tự với các trình duyệt khác. Ví dụ với trình duyệt Firefox, đặt navigator.serviceWorker
thành giá trị bất kỳ sẽ “đánh bại” detectIncognito:
1 | if (!navigator.serviceWorker) navigator.serviceWorker = null; |
Trình duyệt siêu cổ IE:
1 | if (!window.indexedDB) window.indexedDB = null; |
Nếu bạn muốn trình duyệt tự động bypass kiểm tra ẩn danh, bạn có thể cài đặt phần mở rộng Tampermonkey, cho phép Tampermonkey chạy ở chế độ ẩn danh và cài detectIncognitoBypass.user.js tại đây.
Lời kết
Với một chút hiểu biết về lập trình, bạn có thể bypass kiểm tra chế độ ẩn danh của Web1s và bảo vệ lịch sử của bạn khỏi những trang web cá độ, cờ bạc bất hợp pháp. Nếu bạn có thắc mắc cần giải đáp, bạn có thể để lại bình luận phía dưới hoặc tham gia server Discord của mình.
Bypass check ẩn danh Web1s
https://electroheavenvn.github.io/blog/bypass-incognito-check-web1s/