# Sửa đổi hàng loạt cấu hình proxy

Gán proxy cho nhiều profile trình duyệt.
- **Điều kiện tiên quyết**: cung cấp ít nhất một trong `envIds` hoặc `uniqueIds`. Nếu bạn truyền `proxyId`, nó phải đã tồn tại trong nhóm, nếu không lệnh gọi bị từ chối chứ không tự tạo proxy mới.
- **Tác động**: ghi `proxyId` lên từng profile. Khi `proxyId` được bỏ trống hoặc bằng `0`, một proxy hiện có với thông tin kết nối giống hệt sẽ được dùng lại, và nếu không có proxy nào khớp thì **một bản ghi proxy mới được tạo trong nhóm của bên gọi**.
- **Hoàn tất**: đồng bộ. Các trình duyệt đang chạy vẫn giữ proxy mà chúng đã khởi động cùng.
- **Thử lại**: gán lại cùng một `proxyId` là idempotent, nhưng gọi lại một yêu cầu mang thông tin kết nối thô có thể tạo thêm một bản ghi proxy mỗi lần cơ chế chống trùng không khớp được.

Các mã lỗi nghiệp vụ đã ghi nhận: `19106`, `19193`, `14023`. 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/setProxy/batch
Version: 2026-09-05

## Request fields (application/json):

  - `envIds` (array)
    Chọn một mục có mã số seri, phải điền vào mục đó.

  - `proxy` (object, required)
    Công cụ này dùng để thay đổi proxy được liên kết cho các môi trường. Nếu proxyId được cung cấp, hãy liên kết với proxy được đại diện bởi ID đó; nếu không, hãy liên kết với một proxy mới được thêm vào. Nếu thông tin proxy không thay đổi, quá trình liên kết lại sẽ không diễn ra (bất kỳ thay đổi nào trong proxyIp, proxyPort, proxyType hoặc proxyProvider đều được coi là một proxy mới và quá trình liên kết lại sẽ thành công).

  - `proxy.city` (string, required)
    Thành phố

  - `proxy.state` (string, required)
    Tiểu bang/Tỉnh

  - `proxy.country` (string, required)
    Quốc gia (mã quốc gia cụ thể, xem phụ lục). Bắt buộc khi proxyProvider là 16/17/18

  - `proxy.encryptionType` (integer, required)
    Phương thức mã hóa. Không được để trống khi proxyProvider là 11. 1: aes-128-gcm, 2: aes-192-gcm, 3: aes-256-gcm, 4: aes-128-cfb, 5: aes-192-cfb, 6: aes-256-cfb, 7: aes-128-ctr, 8: aes-192-ctr, 9: aes-256-ctr, 10: rc4-md5, 11: chacha20-ietf, 12: xchacha20, 13: chacha20-ietf-poly1305, 14: xchacha20-ietf-poly1305

  - `proxy.proxyId` (string, required)
    ID ủy quyền

  - `proxy.proxyIp` (string, required)
    Địa chỉ IP proxy. Có thể để trống khi proxyProvider là 16/17/18; bắt buộc đối với các trường hợp khác.

  - `proxy.proxyPort` (integer, required)
    Cổng proxy (chỉ cho phép các số từ 1-65535). Có thể để trống khi proxyProvider là 16/17/18; bắt buộc đối với các trường hợp khác.

  - `proxy.proxyType` (integer, required)
    Loại proxy, 0: http, 1: https. Không được để trống khi proxyProvider là 7/8

  - `proxy.proxyProvider` (string, required)
    Loại proxy 0: http, 1: https, 2: socks5, 3: ssh, 4: Oxylabs, 5: Proxys.io, 7: Luminati, 8: Lumauto, 9: Oxylabsauto, 10: Trojan, 11: Shadowsocks, 13: ABCPROXY, 14: LunaProxy, 15: IPHTML, 16: PiaProxy, 17: 922S5, 18: 360Proxy

  - `proxy.proxyName` (string, required)
    Tên máy chủ proxy (tối đa 600 ký tự)

  - `proxy.password` (string, required)
    Mật khẩu (tối đa 100 ký tự)

  - `proxy.refreshUrl` (string, required)
    Làm mới URL

  - `proxy.ipMonitor` (boolean, required)
    Cho phép theo dõi thay đổi địa chỉ IP? true: Bật, false: Tắt

  - `proxy.ipChangeAction` (integer, required)
    Giám sát thay đổi địa chỉ IP: 0: Chặn truy cập, 1: Cảnh báo

  - `proxy.username` (string, required)
    Tên người dùng (tối đa 200 ký tự)

  - `uniqueIds` (array)
    Chọn một tùy chọn có ID môi trường, phải điền vào một tùy chọn.

## Response 200:

  - `200` (unknown)
    Thành công. `data` là một giá trị boolean duy nhất.

## Response 200 fields (application/json):

  - `code` (integer)

  - `msg` (string | null)

  - `data` (boolean)

  - `requestId` (string, required)

