fingerprint-chromium-engine 0.1.0 → 0.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (2) hide show
  1. package/README.md +227 -227
  2. package/package.json +1 -1
package/README.md CHANGED
@@ -1,227 +1,227 @@
1
- # Chromium Anti-Detect Engine
2
-
3
- Thư viện điều khiển trình duyệt Chromium chống bot detection, tích hợp fingerprint, proxy và quản lý profile đa phiên.
4
-
5
- Được xây dựng trên nền `playwright-core` — tương thích hoàn toàn với Playwright API hiện có, không cần viết lại code nghiệp vụ.
6
-
7
- [![TypeScript](https://img.shields.io/badge/TypeScript-Ready-blue)](https://www.typescriptlang.org/)
8
- [![Playwright Compatible](https://img.shields.io/badge/Playwright-Compatible-2ea44f)](https://playwright.dev/)
9
-
10
- ---
11
-
12
- ## Tính năng
13
-
14
- ### Fingerprint từ thiết bị thật, inject ở tầng C native
15
-
16
- Không sinh fingerprint ngẫu nhiên — engine sử dụng fingerprint thu thập từ các thiết bị thực tế, sau đó inject trực tiếp vào Chromium ở cấp độ C/C++. Kết quả là mọi thuộc tính đều trả về giá trị native, không có dấu hiệu bị override dưới bất kỳ hình thức kiểm tra nào.
17
-
18
- **Navigator & Platform**
19
- - Navigator properties (thiết bị, trình duyệt, locale, OS...)
20
- - Network headers `Accept-Language` và `User-Agent` tự động khớp với navigator
21
- - Kích thước & độ phân giải màn hình, inner/outer viewport
22
- - `devicePixelRatio` & HiDPI/Retina screen emulation
23
-
24
- **Đồ họa**
25
- - WebGL parameters, supported extensions, context attributes & shader precision formats
26
- - Canvas 2D — thêm nhiễu chống canvas fingerprinting
27
- - Font fingerprinting (hỗ trợ FontPack đồng bộ font hệ thống)
28
-
29
- **Media & Hardware**
30
- - AudioContext sample rate, output latency & max channel count
31
- - Device voices & speech playback rates
32
- - Số lượng microphone, webcam, speaker available
33
- - Battery API, Sensor API (gia tốc kế, con quay hồi chuyển)
34
- - ClientRects & DOM element coordinates
35
-
36
- **Mạng & Vị trí**
37
- - WebRTC IP spoofing ở tầng protocol — không thể bị detect qua JS
38
- - Geolocation, timezone & locale
39
-
40
- ### Proxy & Môi trường thông minh
41
-
42
- Không chỉ định tuyến traffic — engine tự động đồng bộ toàn bộ môi trường trình duyệt theo IP proxy:
43
-
44
- - **Timezone** — múi giờ tự động khớp với vị trí địa lý của proxy
45
- - **Ngôn ngữ** — `Accept-Language`, `navigator.language` theo quốc gia proxy
46
- - **Geolocation** — vị trí địa lý theo IP (tuỳ chọn)
47
- - **WebRTC** — che giấu hoặc thay thế IP rò rỉ qua WebRTC
48
- - **DNS tùy chỉnh** — hỗ trợ `custom-proxy` và `custom-direct` để tránh DNS leak
49
- - **QUIC** — tùy chọn bật giao thức QUIC nếu proxy hỗ trợ UDP
50
-
51
- ### Profile đa phiên
52
-
53
- Duy trì trạng thái đăng nhập, cookies, localStorage và lịch sử giữa các lần chạy:
54
-
55
- - Mỗi profile độc lập, được lưu theo đường dẫn tùy chọn
56
- - Tự động khôi phục fingerprint và proxy đã dùng ở phiên trước
57
- - Lưu profile khi đóng — có thể chỉ định đường dẫn lưu khác nhau mỗi lần
58
-
59
- ### Tương thích Playwright 100%
60
-
61
- Trả về `BrowserContext` chuẩn của `playwright-core`. Toàn bộ API Playwright (`page`, `locator`, `expect`, `route`...) hoạt động bình thường — không cần thay đổi code nghiệp vụ.
62
-
63
- ---
64
-
65
- ## Cài đặt
66
-
67
- Cài đặt trực tiếp từ GitHub:
68
-
69
- ```bash
70
- # npm
71
- npm install github:maxlogvn/PrivateBrowser playwright-core
72
-
73
- # yarn
74
- yarn add github:maxlogvn/PrivateBrowser playwright-core
75
-
76
- # bun
77
- bun add github:maxlogvn/PrivateBrowser playwright-core
78
- ```
79
-
80
- > `playwright-core` là peer dependency — cần cài kèm để thư viện hoạt động.
81
-
82
- ---
83
-
84
- ## Bắt đầu nhanh
85
-
86
- ```ts
87
- import { Chromium } from 'playwright-browser-manager';
88
-
89
- const context = await Chromium
90
- .useFingerprint(fingerprintData)
91
- .useProxy('http://user:pass@127.0.0.1:8080')
92
- .useProfile('./profiles/user_01')
93
- .launch({ headless: false })
94
- .newContext();
95
-
96
- const page = await context.newPage();
97
- await page.goto('https://example.com');
98
-
99
- await Chromium.quit();
100
- ```
101
-
102
- > Tất cả method cấu hình (`use*`) trả về `this` — hỗ trợ method chaining.
103
- > Bắt buộc gọi trước `launch()`. Sau khi `launch()`, cấu hình bị khóa.
104
-
105
- ---
106
-
107
- ## Hướng dẫn sử dụng
108
-
109
- ### Fingerprint
110
-
111
- ```ts
112
- Chromium.useFingerprint(fingerprintData, {
113
- usePerfectCanvas: true, // Canvas chính xác theo fingerprint
114
- safeWebGL: true, // Che giấu GPU renderer & vendor
115
- safeAudio: true, // Che giấu thông tin audio hardware
116
- useFontPack: true, // Đồng bộ font với fingerprint mục tiêu
117
- })
118
- ```
119
-
120
- > `useFontPack` yêu cầu cài đặt [FontPack từ Bablosoft](https://wiki.bablosoft.com/doku.php?id=fontpack). Nếu chưa cài, engine tự fallback.
121
-
122
- | Tùy chọn | Mô tả | Mặc định |
123
- |---|---|---|
124
- | `emulateDeviceScaleFactor` | Giả lập màn hình HiDPI/Retina | `true` |
125
- | `emulateSensorAPI` | Giả lập cảm biến di động | `true` |
126
- | `usePerfectCanvas` | Canvas chính xác từ fingerprint | `true` |
127
- | `useFontPack` | Đồng bộ font hệ thống | `true` |
128
- | `safeElementSize` | Che giấu tọa độ DOM element | `false` |
129
- | `safeBattery` | Giả lập Battery API | `true` |
130
- | `safeCanvas` | Thêm nhiễu Canvas 2D | `true` |
131
- | `safeAudio` | Thêm nhiễu Web Audio | `true` |
132
- | `safeWebGL` | Thêm nhiễu WebGL | `true` |
133
-
134
- ---
135
-
136
- ### Proxy
137
-
138
- ```ts
139
- Chromium.useProxy('http://user:pass@127.0.0.1:8080', {
140
- changeTimezone: true, // Đồng bộ múi giờ theo IP proxy
141
- changeGeolocation: true, // Đồng bộ vị trí địa lý
142
- changeBrowserLanguage: true, // Đồng bộ ngôn ngữ trình duyệt
143
- changeWebRTC: 'replace', // Thay IP WebRTC bằng IP proxy
144
- })
145
- ```
146
-
147
- **Tùy chọn DNS:**
148
-
149
- ```ts
150
- Chromium.useProxy('http://...', {
151
- dnsMode: 'custom-direct', // phân giải DNS cục bộ, traffic còn lại qua proxy
152
- dnsIP: '1.1.1.1',
153
- })
154
- ```
155
-
156
- > `custom-proxy` yêu cầu proxy hỗ trợ UDP. Nếu proxy chỉ hỗ trợ TCP, dùng `custom-direct` hoặc `system-proxy`.
157
-
158
- **Tùy chọn WebRTC:**
159
-
160
- | Giá trị | Hành vi |
161
- |---|---|
162
- | `enable` | Bật WebRTC — lộ IP thật |
163
- | `disable` | Tắt hoàn toàn WebRTC |
164
- | `replace` | Thay IP WebRTC bằng IP proxy *(khuyến nghị)* |
165
-
166
- ---
167
-
168
- ### Profile
169
-
170
- ```ts
171
- // Lần đầu — tạo mới profile
172
- Chromium.useProfile('./profiles/user_01')
173
-
174
- // Các lần sau — tự động khôi phục session, proxy, fingerprint
175
- Chromium.useProfile('./profiles/user_01', {
176
- loadProxy: true, // khôi phục proxy từ phiên trước
177
- loadFingerprint: true, // khôi phục fingerprint từ phiên trước
178
- })
179
- ```
180
-
181
- Profile tự động lưu khi gọi `quit()`. Có thể ghi đè đường dẫn lưu:
182
-
183
- ```ts
184
- await Chromium.quit('./profiles/user_01_backup');
185
- ```
186
-
187
- ---
188
-
189
- ### Vòng đời trình duyệt
190
-
191
- ```ts
192
- // 1. Cấu hình (có thể chaining)
193
- Chromium
194
- .useFingerprint(data)
195
- .useProxy('http://...')
196
- .useProfile('./profiles/user_01')
197
-
198
- // 2. Khởi tạo engine — chỉ gọi một lần
199
- .launch({ headless: false })
200
-
201
- // 3. Mở phiên duyệt
202
- const context = await Chromium.newContext();
203
- const page = await context.newPage();
204
-
205
- // 4. Đóng và lưu
206
- await Chromium.quit();
207
- ```
208
-
209
- > `launch()` chỉ được gọi **một lần**. Gọi lại sẽ ném lỗi.
210
- > `newContext()` chỉ cho phép một context tại một thời điểm. Gọi `quit()` trước khi tạo context mới.
211
-
212
- ---
213
-
214
- ## Lưu ý
215
-
216
- **IP Geolocation với ip-api.com** — bản free giới hạn 45 request/phút/IP. Vượt quá giới hạn nhận HTTP 429. Cân nhắc dùng bản Pro hoặc chuyển về `ipInfoMethod: 'database'` khi scale lớn.
217
-
218
- **FontPack** — cần tải và cài đặt riêng từ [Bablosoft Wiki](https://wiki.bablosoft.com/doku.php?id=fontpack) để `useFontPack` hoạt động đúng.
219
-
220
- **Thứ tự gọi** — `use*` → `launch()` → `newContext()` → `quit()`. Sai thứ tự sẽ ném lỗi có mô tả rõ ràng.
221
-
222
- ---
223
-
224
- ## Đóng góp & Hỗ trợ
225
-
226
- Gặp vấn đề hoặc muốn đề xuất tính năng — tạo [Issue](../../issues) hoặc [Pull Request](../../pulls).
227
-
1
+ # Chromium Anti-Detect Engine
2
+
3
+ Thư viện điều khiển trình duyệt Chromium chống bot detection, tích hợp fingerprint, proxy và quản lý profile đa phiên.
4
+
5
+ Được xây dựng trên nền `playwright-core` — tương thích hoàn toàn với Playwright API hiện có, không cần viết lại code nghiệp vụ.
6
+
7
+ [![TypeScript](https://img.shields.io/badge/TypeScript-Ready-blue)](https://www.typescriptlang.org/)
8
+ [![Playwright Compatible](https://img.shields.io/badge/Playwright-Compatible-2ea44f)](https://playwright.dev/)
9
+
10
+ ---
11
+
12
+ ## Tính năng
13
+
14
+ ### Fingerprint từ thiết bị thật, inject ở tầng C native
15
+
16
+ Không sinh fingerprint ngẫu nhiên — engine sử dụng fingerprint thu thập từ các thiết bị thực tế, sau đó inject trực tiếp vào Chromium ở cấp độ C/C++. Kết quả là mọi thuộc tính đều trả về giá trị native, không có dấu hiệu bị override dưới bất kỳ hình thức kiểm tra nào.
17
+
18
+ **Navigator & Platform**
19
+ - Navigator properties (thiết bị, trình duyệt, locale, OS...)
20
+ - Network headers `Accept-Language` và `User-Agent` tự động khớp với navigator
21
+ - Kích thước & độ phân giải màn hình, inner/outer viewport
22
+ - `devicePixelRatio` & HiDPI/Retina screen emulation
23
+
24
+ **Đồ họa**
25
+ - WebGL parameters, supported extensions, context attributes & shader precision formats
26
+ - Canvas 2D — thêm nhiễu chống canvas fingerprinting
27
+ - Font fingerprinting (hỗ trợ FontPack đồng bộ font hệ thống)
28
+
29
+ **Media & Hardware**
30
+ - AudioContext sample rate, output latency & max channel count
31
+ - Device voices & speech playback rates
32
+ - Số lượng microphone, webcam, speaker available
33
+ - Battery API, Sensor API (gia tốc kế, con quay hồi chuyển)
34
+ - ClientRects & DOM element coordinates
35
+
36
+ **Mạng & Vị trí**
37
+ - WebRTC IP spoofing ở tầng protocol — không thể bị detect qua JS
38
+ - Geolocation, timezone & locale
39
+
40
+ ### Proxy & Môi trường thông minh
41
+
42
+ Không chỉ định tuyến traffic — engine tự động đồng bộ toàn bộ môi trường trình duyệt theo IP proxy:
43
+
44
+ - **Timezone** — múi giờ tự động khớp với vị trí địa lý của proxy
45
+ - **Ngôn ngữ** — `Accept-Language`, `navigator.language` theo quốc gia proxy
46
+ - **Geolocation** — vị trí địa lý theo IP (tuỳ chọn)
47
+ - **WebRTC** — che giấu hoặc thay thế IP rò rỉ qua WebRTC
48
+ - **DNS tùy chỉnh** — hỗ trợ `custom-proxy` và `custom-direct` để tránh DNS leak
49
+ - **QUIC** — tùy chọn bật giao thức QUIC nếu proxy hỗ trợ UDP
50
+
51
+ ### Profile đa phiên
52
+
53
+ Duy trì trạng thái đăng nhập, cookies, localStorage và lịch sử giữa các lần chạy:
54
+
55
+ - Mỗi profile độc lập, được lưu theo đường dẫn tùy chọn
56
+ - Tự động khôi phục fingerprint và proxy đã dùng ở phiên trước
57
+ - Lưu profile khi đóng — có thể chỉ định đường dẫn lưu khác nhau mỗi lần
58
+
59
+ ### Tương thích Playwright 100%
60
+
61
+ Trả về `BrowserContext` chuẩn của `playwright-core`. Toàn bộ API Playwright (`page`, `locator`, `expect`, `route`...) hoạt động bình thường — không cần thay đổi code nghiệp vụ.
62
+
63
+ ---
64
+
65
+ ## Cài đặt
66
+
67
+ Cài đặt trực tiếp từ GitHub:
68
+
69
+ ```bash
70
+ # npm
71
+ npm install github:maxlogvn/PrivateBrowser playwright-core
72
+
73
+ # yarn
74
+ yarn add github:maxlogvn/PrivateBrowser playwright-core
75
+
76
+ # bun
77
+ bun add github:maxlogvn/PrivateBrowser playwright-core
78
+ ```
79
+
80
+ > `playwright-core` là peer dependency — cần cài kèm để thư viện hoạt động.
81
+
82
+ ---
83
+
84
+ ## Bắt đầu nhanh
85
+
86
+ ```ts
87
+ import { Chromium } from 'playwright-browser-manager';
88
+
89
+ const context = await Chromium
90
+ .useFingerprint(fingerprintData)
91
+ .useProxy('http://user:pass@127.0.0.1:8080')
92
+ .useProfile('./profiles/user_01')
93
+ .launch({ headless: false })
94
+ .newContext();
95
+
96
+ const page = await context.newPage();
97
+ await page.goto('https://example.com');
98
+
99
+ await Chromium.quit();
100
+ ```
101
+
102
+ > Tất cả method cấu hình (`use*`) trả về `this` — hỗ trợ method chaining.
103
+ > Bắt buộc gọi trước `launch()`. Sau khi `launch()`, cấu hình bị khóa.
104
+
105
+ ---
106
+
107
+ ## Hướng dẫn sử dụng
108
+
109
+ ### Fingerprint
110
+
111
+ ```ts
112
+ Chromium.useFingerprint(fingerprintData, {
113
+ usePerfectCanvas: true, // Canvas chính xác theo fingerprint
114
+ safeWebGL: true, // Che giấu GPU renderer & vendor
115
+ safeAudio: true, // Che giấu thông tin audio hardware
116
+ useFontPack: true, // Đồng bộ font với fingerprint mục tiêu
117
+ })
118
+ ```
119
+
120
+ > `useFontPack` yêu cầu cài đặt [FontPack từ Bablosoft](https://wiki.bablosoft.com/doku.php?id=fontpack). Nếu chưa cài, engine tự fallback.
121
+
122
+ | Tùy chọn | Mô tả | Mặc định |
123
+ |---|---|---|
124
+ | `emulateDeviceScaleFactor` | Giả lập màn hình HiDPI/Retina | `true` |
125
+ | `emulateSensorAPI` | Giả lập cảm biến di động | `true` |
126
+ | `usePerfectCanvas` | Canvas chính xác từ fingerprint | `true` |
127
+ | `useFontPack` | Đồng bộ font hệ thống | `true` |
128
+ | `safeElementSize` | Che giấu tọa độ DOM element | `false` |
129
+ | `safeBattery` | Giả lập Battery API | `true` |
130
+ | `safeCanvas` | Thêm nhiễu Canvas 2D | `true` |
131
+ | `safeAudio` | Thêm nhiễu Web Audio | `true` |
132
+ | `safeWebGL` | Thêm nhiễu WebGL | `true` |
133
+
134
+ ---
135
+
136
+ ### Proxy
137
+
138
+ ```ts
139
+ Chromium.useProxy('http://user:pass@127.0.0.1:8080', {
140
+ changeTimezone: true, // Đồng bộ múi giờ theo IP proxy
141
+ changeGeolocation: true, // Đồng bộ vị trí địa lý
142
+ changeBrowserLanguage: true, // Đồng bộ ngôn ngữ trình duyệt
143
+ changeWebRTC: 'replace', // Thay IP WebRTC bằng IP proxy
144
+ })
145
+ ```
146
+
147
+ **Tùy chọn DNS:**
148
+
149
+ ```ts
150
+ Chromium.useProxy('http://...', {
151
+ dnsMode: 'custom-direct', // phân giải DNS cục bộ, traffic còn lại qua proxy
152
+ dnsIP: '1.1.1.1',
153
+ })
154
+ ```
155
+
156
+ > `custom-proxy` yêu cầu proxy hỗ trợ UDP. Nếu proxy chỉ hỗ trợ TCP, dùng `custom-direct` hoặc `system-proxy`.
157
+
158
+ **Tùy chọn WebRTC:**
159
+
160
+ | Giá trị | Hành vi |
161
+ |---|---|
162
+ | `enable` | Bật WebRTC — lộ IP thật |
163
+ | `disable` | Tắt hoàn toàn WebRTC |
164
+ | `replace` | Thay IP WebRTC bằng IP proxy *(khuyến nghị)* |
165
+
166
+ ---
167
+
168
+ ### Profile
169
+
170
+ ```ts
171
+ // Lần đầu — tạo mới profile
172
+ Chromium.useProfile('./profiles/user_01')
173
+
174
+ // Các lần sau — tự động khôi phục session, proxy, fingerprint
175
+ Chromium.useProfile('./profiles/user_01', {
176
+ loadProxy: true, // khôi phục proxy từ phiên trước
177
+ loadFingerprint: true, // khôi phục fingerprint từ phiên trước
178
+ })
179
+ ```
180
+
181
+ Profile tự động lưu khi gọi `quit()`. Có thể ghi đè đường dẫn lưu:
182
+
183
+ ```ts
184
+ await Chromium.quit('./profiles/user_01_backup');
185
+ ```
186
+
187
+ ---
188
+
189
+ ### Vòng đời trình duyệt
190
+
191
+ ```ts
192
+ // 1. Cấu hình (có thể chaining)
193
+ Chromium
194
+ .useFingerprint(data)
195
+ .useProxy('http://...')
196
+ .useProfile('./profiles/user_01')
197
+
198
+ // 2. Khởi tạo engine — chỉ gọi một lần
199
+ .launch({ headless: false })
200
+
201
+ // 3. Mở phiên duyệt
202
+ const context = await Chromium.newContext();
203
+ const page = await context.newPage();
204
+
205
+ // 4. Đóng và lưu
206
+ await Chromium.quit();
207
+ ```
208
+
209
+ > `launch()` chỉ được gọi **một lần**. Gọi lại sẽ ném lỗi.
210
+ > `newContext()` chỉ cho phép một context tại một thời điểm. Gọi `quit()` trước khi tạo context mới.
211
+
212
+ ---
213
+
214
+ ## Lưu ý
215
+
216
+ **IP Geolocation với ip-api.com** — bản free giới hạn 45 request/phút/IP. Vượt quá giới hạn nhận HTTP 429. Cân nhắc dùng bản Pro hoặc chuyển về `ipInfoMethod: 'database'` khi scale lớn.
217
+
218
+ **FontPack** — cần tải và cài đặt riêng từ [Bablosoft Wiki](https://wiki.bablosoft.com/doku.php?id=fontpack) để `useFontPack` hoạt động đúng.
219
+
220
+ **Thứ tự gọi** — `use*` → `launch()` → `newContext()` → `quit()`. Sai thứ tự sẽ ném lỗi có mô tả rõ ràng.
221
+
222
+ ---
223
+
224
+ ## Đóng góp & Hỗ trợ
225
+
226
+ Gặp vấn đề hoặc muốn đề xuất tính năng — tạo [Issue](../../issues) hoặc [Pull Request](../../pulls).
227
+
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "fingerprint-chromium-engine",
3
- "version": "0.1.0",
3
+ "version": "0.1.1",
4
4
  "type": "module",
5
5
  "license": "MIT",
6
6
  "description": "Native Chromium anti-detect engine for Playwright with real-device fingerprint injection, proxy synchronization and persistent browser profiles.",