# Chỉnh sửa hồ sơ trình duyệt

Cập nhật một profile trình duyệt hiện có. Chỉ các trường xuất hiện trong yêu cầu bị thay đổi.
- **Điều kiện tiên quyết**: profile phải tồn tại trong nhóm. Không thể cập nhật các profile được mã hóa đầu-cuối. Không thể thay đổi hệ điều hành và loại trình duyệt. Một profile đang chạy vẫn cập nhật được.
- **Tác động**: ghi bản ghi profile, các thiết lập mở rộng và cookie của nó, và hợp nhất các thiết lập dấu vân tay nâng cao (các giá trị hiện có được giữ lại trừ khi bị ghi đè).
- **Hoàn tất**: đồng bộ.
- **Thử lại**: an toàn khi gọi lại với cùng một request body. Lưu ý là không có khóa lạc quan: các lần cập nhật đồng thời lên cùng một profile sẽ lấy lần ghi cuối cùng, và việc hợp nhất dấu vân tay đọc trước khi ghi, nên các lệnh gọi song song có thể làm mất thay đổi.

Các mã lỗi nghiệp vụ đã ghi nhận: `19001`, `19039`, `19104`, `19105`, `19106`, `19107`, `19108`, `19142`, `19159`, `19160`, `19175`, `19193`. Xem [Error Codes](../Getting%20Started/error-codes.md) để biết ý nghĩa từng mã. Mọi thao tác cũng có thể trả về các mã dùng chung.

Endpoint: POST /api/env/update
Version: 2026-09-05

## Request fields (application/json):

  - `browserTypeId` (integer)
    ID loại trình duyệt; 1=Chrome, 2=Firefox

  - `operatorSystemId` (integer)
    ID loại hệ điều hành; 1:Windows 2:macOS 3:Android 4:IOS 5:Linux

  - `isEncrypt` (integer)
    Có mã hóa profile hay không; 0=Không, 1=Có

  - `startupParams` (array)
    Tham số khởi động trình duyệt bổ sung

  - `accountInfo` (object)

  - `accountInfo.customerUrl` (string)
    URL nền tảng tùy chỉnh — bắt buộc nếu platformId=9999, phải là một URL hợp lệ.

  - `accountInfo.password` (string)
    Mật khẩu; độ dài tối đa: 50 ký tự

  - `accountInfo.platformId` (string)
    Mã định danh nền tảng; sử dụng 9999 cho URL tùy chỉnh. Tham khảo /api/system/platform/list.

  - `accountInfo.siteId` (string)
    Mã định danh trang web; lấy thông qua API "Lấy các nền tảng có thể cấu hình" (/api/system/platform/list)

  - `accountInfo.username` (string)
    Tên người dùng; độ dài tối đa: 64 ký tự

  - `advancedSetting` (object)
    Cấu hình nâng cao về dấu vân tay và hành vi trình duyệt.

  - `advancedSetting.ua` (string)
    Tùy chỉnh thông tin User-Agent (UA) của hồ sơ. Phải tuân theo định dạng UA chuẩn.
Có thể thực hiện thông qua API “Get Browser UA”.

  - `advancedSetting.time_zone` (object)

  - `advancedSetting.time_zone.switcher` (integer)
    Tùy chọn múi giờ. Mặc định: 1. 1 = Khớp địa chỉ IP, 2 = Tùy chỉnh.

  - `advancedSetting.time_zone.value` (string)
    Bắt buộc khi switcher=2.
ID múi giờ từ API “Lấy danh sách múi giờ và ngôn ngữ”.

  - `advancedSetting.web_rtc` (object)

  - `advancedSetting.web_rtc.switcher` (integer)
    Chính sách WebRTC. Mặc định: 2. 1 = Bảo mật, 2 = Thay thế, 3 = Thực, 4 = Vô hiệu hóa, 5 = Chuyển tiếp.

  - `advancedSetting.geo_location` (object)

  - `advancedSetting.geo_location.switcher` (integer)
    Chính sách định vị địa lý. Mặc định: 1. 1 = Yêu cầu xác nhận, 2 = Vô hiệu hóa.

  - `advancedSetting.geo_location.base_on_ip` (boolean)
    Tạo vị trí dựa trên địa chỉ IP? Mặc định: true. true = yêu cầu xác nhận, false = xác nhận thủ công.

  - `advancedSetting.geo_location.latitude` (number)
    Vĩ độ. Bắt buộc nếu base_on_ip=false.

  - `advancedSetting.geo_location.longitude` (number)
    Kinh độ. Bắt buộc nếu base_on_ip=false.

  - `advancedSetting.geo_location.accuracy` (number)
    Độ chính xác tính bằng mét. Bắt buộc nếu base_on_ip=false.

  - `advancedSetting.language` (object)

  - `advancedSetting.language.switcher` (integer)
    Chính sách ngôn ngữ. Mặc định: 1. 1 = Khớp IP, 2 = Tùy chỉnh.

  - `advancedSetting.language.value` (string)
    Bắt buộc khi switcher=2.
ID ngôn ngữ được phân tách bằng dấu phẩy từ API “Lấy danh sách múi giờ và ngôn ngữ”.

  - `advancedSetting.resolution` (object)

  - `advancedSetting.resolution.switcher` (integer)
    Chính sách độ phân giải. Mặc định: 1. 1 = Thực tế, 2 = Tùy chỉnh.

  - `advancedSetting.resolution.id` (string)
    Bắt buộc khi switcher=2.
ID độ phân giải từ API “Lấy danh sách độ phân giải”.

  - `advancedSetting.font` (object)

  - `advancedSetting.font.switcher` (integer)
    Chính sách phông chữ. Mặc định: 1. 1 = Phông chữ thật, 2 = Phông chữ tùy chỉnh.

  - `advancedSetting.font.value` (string)
    Tên phông chữ tùy chỉnh được phân tách bằng dấu phẩy (bắt buộc nếu switcher=2).

  - `advancedSetting.canvas` (object)

  - `advancedSetting.canvas.switcher` (integer)
    Chính sách Canvas. Mặc định: 1. 1 = Nhiễu, 2 = Thực.

  - `advancedSetting.webgl_image` (object)

  - `advancedSetting.webgl_image.switcher` (integer)
    Chính sách hình ảnh WebGL. Mặc định: 1. 1 = Nhiễu, 2 = Thực.

  - `advancedSetting.webgl_metadata` (object)

  - `advancedSetting.webgl_metadata.switcher` (integer)
    Chính sách siêu dữ liệu WebGL. Mặc định: 3. 1 = Thực, 2 = Tắt tăng tốc phần cứng, 3 = Tùy chỉnh.

  - `advancedSetting.webgl_metadata.provider` (string)
    Chuỗi dịch vụ thiết bị WebGL (ví dụ: "Google Inc.")

  - `advancedSetting.webgl_metadata.render` (string)
    Chuỗi hiển thị WebGL (ví dụ: "ANGLE (...)")

  - `advancedSetting.audio_context` (object)

  - `advancedSetting.audio_context.switcher` (integer)
    Chính sách AudioContext. Mặc định: 1. 1 = Tiếng ồn, 2 = Chân thực.

  - `advancedSetting.media_device` (object)

  - `advancedSetting.media_device.switcher` (integer)
    Chính sách thiết bị đa phương tiện. Mặc định: 1. 1 = Nhiễu, 2 = Thực.

  - `advancedSetting.client_rects` (object)

  - `advancedSetting.client_rects.switcher` (integer)
    Chính sách ClientRects. Mặc định: 1. 1 = Nhiễu, 2 = Thực.

  - `advancedSetting.speech_voise` (object)

  - `advancedSetting.speech_voise.switcher` (integer)
    Chính sách SpeechVoices. Mặc định: 1. 1 = Riêng tư, 2 = Thực tế

  - `advancedSetting.hardware_concurrency` (integer)
    Số lõi CPU logic được mô phỏng.
Mặc định: 4. Tùy chọn: 0 (thực), 2, 3, 4, 6, 8, 10, 12.

  - `advancedSetting.memery_device` (integer)
    Bộ nhớ thiết bị mô phỏng (GB).
Mặc định: 8. Tùy chọn: 0 (thực), 2, 4, 6, 8.

  - `advancedSetting.do_not_track` (integer)
    Chế độ "Không theo dõi". Mặc định: 2. 1 = bật, 2 = tắt.

  - `advancedSetting.bluetooth` (object)

  - `advancedSetting.bluetooth.switcher` (integer)
    Chính sách Bluetooth. Mặc định: 1. 1 = Quyền riêng tư, 2 = Xác thực.

  - `advancedSetting.battery` (object)

  - `advancedSetting.battery.switcher` (integer)
    Chính sách pin. Mặc định: 1. 1 = Quyền riêng tư, 2 = Tính xác thực.

  - `advancedSetting.port_scan_protection` (object)

  - `advancedSetting.port_scan_protection.switcher` (integer)
    Bảo vệ chống quét cổng. Mặc định: 1. 1 = Bật, 2 = Tắt.

  - `advancedSetting.port_scan_protection.value` (string)
    Các cổng mạng cục bộ được phép kết nối (phân cách bằng dấu phẩy).

  - `advancedSetting.os_version` (string)
    Phiên bản hệ điều hành macOS (ví dụ: macOS 12, macOS 13, macOS 14).

  - `advancedSetting.web_gpu` (object)

  - `advancedSetting.web_gpu.switcher` (integer)
    Chính sách WebGPU. Mặc định: 1. 1 = khớp dựa trên WebGL, 2 = đúng, 3 = tắt.

  - `advancedSetting.ciphers` (object)

  - `advancedSetting.ciphers.switcher` (integer)
    Chính sách mã hóa TLS. Mặc định: 1. 1 = Mặc định, 2 = Tùy chỉnh.

  - `advancedSetting.ciphers.value` (string)
    Bắt buộc khi switcher=2.
Danh sách các giao thức TLS cần vô hiệu hóa, được phân tách bằng dấu phẩy (ví dụ: "TLSv1,TLSv1.1").

  - `advancedSetting.mobile_device` (string)
    Mã định danh kiểu điện thoại (dưới dạng chuỗi). Lấy thông qua API "Lấy danh sách kiểu điện thoại".
Ví dụ: "1826502391344832512"

  - `afterStartupConfig` (object)

  - `afterStartupConfig.afterStartup` (integer)
    Hành động sau khi khởi động. Mặc định: 1.
1 = Tiếp tục trang trước,
2 = Mở URL được chỉ định,
3 = Mở URL + nền tảng,
4 = Tiếp tục trang trước + nền tảng.

  - `afterStartupConfig.autoOpenUrls` (array)
    Danh sách các URL hợp lệ cần tự động mở (bắt buộc đối với tùy chọn 2–3).

  - `browserCore` (integer)
    Phiên bản kernel; mặc định: 0 (tự động khớp). Lấy các phiên bản khả dụng qua `/api/env/advanced/ua/versions`.

  - `cookies` (string)
    Chuỗi cookie nạp trước (không bắt buộc)

  - `envName` (string)
    Tên môi trường

  - `envRemark` (string)
    Ghi chú môi trường; độ dài tối đa: 1500 ký tự

  - `groupId` (string)
    ID nhóm môi trường; mặc định: chưa thuộc nhóm (0)

  - `groupName` (string)
    Tên nhóm (tối đa 50 ký tự). Nếu được cung cấp, hệ thống sẽ kiểm tra groupId trước: nếu tìm thấy nhóm hợp lệ thì sử dụng nhóm đó; nếu không, tìm kiếm theo groupName. Nếu nhóm có tên đó tồn tại thì tham chiếu nhóm đó; nếu không thì tạo nhóm mới. Mỗi đội bị giới hạn 1.000 nhóm.

  - `proxyId` (string)
    ID proxy; mặc định: 0

  - `tagIds` (array)
    ID các thẻ; mặc định: không có

  - `uaVersion` (integer)
    Phiên bản UA đặt trước; mặc định: 0 (tất cả)

  - `disableAudio` (integer)
    Tắt âm thanh: 0 = không, 1 = có

  - `disableImg` (integer)
    Tắt tải hình ảnh: 0 = không, 1 = có

  - `disableVideo` (integer)
    Tắt tải video: 0 = không, 1 = có

  - `imgLimitSize` (integer)
    Kích thước ảnh tối đa (KB)

  - `envId` (string, required)
    ID môi trường

## Response 200:

  - `200` (unknown)
    Thành công. `data` luôn là null với thao tác này; kết quả được thể hiện qua `code`.

## Response 200 fields (application/json):

  - `code` (integer, required)

  - `msg` (string | null, required)

  - `data` (null, required)

  - `requestId` (string, required)

