Skip to content

TgeBrowser API 文档

浏览器自动化 API

TgeBrowser 提供 RESTful API ,支持通过编程方式控制浏览器环境的全生命周期,实现自动化部署和管理。

特点: 简洁高效 • 稳定可靠 • 完整错误处理 • 实时状态同步


基础配置

认证方式

所有 API 请求必须包含有效的身份认证:

http
Authorization: Bearer YOUR_API_KEY
Content-Type: application/json
User-Agent: YourApp/1.0
bash
curl -X GET http://127.0.0.1:50326/api/status \
  -H "Authorization: Bearer sk-1234567890abcdef" \
  -H "Content-Type: application/json"
javascript
const headers = {
  Authorization: 'Bearer YOUR_API_KEY',
  'Content-Type': 'application/json'
}

fetch('http://127.0.0.1:50326/api/status', { headers })
  .then((response) => response.json())
  .then((data) => console.log(data))

API Key 获取

登录 TgeBrowser 客户端 → API → 生成新密钥

请求格式

HTTP 方法规范

方法用途示例
GET获取资源信息查询环境列表
POST创建新资源创建浏览器环境
PUT更新完整资源更新环境配置
PATCH部分更新资源修改环境状态
DELETE删除资源删除环境

响应格式

标准响应结构

json
{
  "success": true,
  "message": "操作成功",
  "data": {
    // 响应数据
  }
}
json
{
  "success": false,
  "message": "详细错误描述",
  "code": "ERROR_CODE"
}

错误代码

HTTP 状态错误代码描述解决方案
400INVALID_PARAMS请求参数无效检查请求参数格式和类型
401AUTH_FAILED认证失败检查 API Key 是否有效
403PERMISSION_DENIED权限不足联系管理员分配权限
404RESOURCE_NOT_FOUND资源不存在确认资源 ID 正确性
409RESOURCE_CONFLICT资源冲突检查资源状态或名称冲突
429RATE_LIMITED请求频率限制降低请求频率或升级套餐
500SERVER_ERROR服务器内部错误稍后重试或联系技术支持

错误处理建议

  • 始终检查 success 字段
  • 根据 code 字段进行错误分类处理

浏览器环境管理

1. 获取服务状态

GET/api/status

检查 API 服务运行状态和基础信息,建议在应用启动时调用此接口验证连接。

请求参数

无需请求参数

请求示例

bash
curl -X GET http://127.0.0.1:50326/api/status \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json"
javascript
const response = await fetch('/api/status', {
  method: 'GET',
  headers: {
    Authorization: 'Bearer YOUR_API_KEY',
    'Content-Type': 'application/json'
  }
})
const data = await response.json()
console.log(data)
python
import requests

headers = {
    'Authorization': 'Bearer YOUR_API_KEY',
    'Content-Type': 'application/json'
}

response = requests.get(
    'http://127.0.0.1:50326/api/status',
    headers=headers
)
print(response.json())

响应数据

json
{
  "success": true,
  "message": "服务运行正常"
}

2. 创建浏览器环境

POST/api/browser/create

创建一个新的浏览器环境,支持完整的指纹配置、代理设置、启动参数等。每个环境都是完全独立的沙盒,确保数据隔离。

请求示例

bash
curl -X POST http://127.0.0.1:50326/api/browser/create \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "browserName": "Facebook营销环境",
    "groupId": 1,
    "proxy": {
      "protocol": "socks5",
      "host": "proxy.example.com",
      "port": 1080,
      "username": "user123",
      "password": "pass123",
      "timezone": "America/New_York"
    },
    "fingerprint": {
      "os": "Windows",
      "platformVersion": 11,
      "kernel": "135",
      "userAgent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/135.0.9.2537 Safari/537.36",
      "canvas": true,
      "speechVoices": true,
      "clientRects": true,
      "fonts": ["Arial", "Courier New"],
      "disableTLS": [],
      "resolution": "1920x1080",
      "ram": 8,
      "cpu": 4,
      "language": "en-US",
      "languageBaseIp": true,
      "timezone": "Europe/Amsterdam",
      "timezoneBaseIp": true,
      "hardwareAcceleration": true,
      "disableSandbox": false,
      "startupParams": "",
      "deviceName": "DESKTOP-ABCD",
      "portScanProtection": "",
      "randomFingerprint":  false,
      "disableImages":  false,
      "syncCookies":  false
    },
    "startInfo": {
      "startPage": {
        "mode": "custom",
        "value": [
            "https://www.baidu.com"
        ]
      },
      "otherConfig": {
        "openConfigPage": false,
        "checkPage": true,
        "extensionTab": true
      }
    }
  }'
javascript
const createBrowser = async () => {
  const response = await fetch('/api/browser/create', {
    method: 'POST',
    headers: {
      Authorization: 'Bearer YOUR_API_KEY',
      'Content-Type': 'application/json'
    },
    body: JSON.stringify({
      browserName: 'Facebook营销环境',
      groupId: 1,
      proxy: {
        protocol: 'socks5',
        host: 'proxy.example.com',
        port: 1080,
        username: 'user123',
        password: 'pass123',
        timezone: 'America/New_York'
      },
      fingerprint: {
        os: 'Windows',
        platformVersion: 11,
        kernel: '135',
        userAgent:
          'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/135.0.9.2537 Safari/537.36',
        canvas: true,
        speechVoices: true,
        clientRects: true,
        fonts: ['Arial', 'Courier New'],
        disableTLS: [],
        resolution: '1920x1080',
        ram: 8,
        cpu: 4,
        language: 'en-US',
        languageBaseIp: true,
        timezone: 'Europe/Amsterdam',
        timezoneBaseIp: true,
        hardwareAcceleration: true,
        disableSandbox: false,
        startupParams: '',
        deviceName: 'DESKTOP-ABCD',
        portScanProtection: '',
        randomFingerprint:  false,
        disableImages:  false,
        syncCookies:  false
      },
      startInfo: {
        startPage: {
          mode: 'custom',
          value: ['https://www.baidu.com']
        },
        otherConfig: {
          openConfigPage: false,
          checkPage: true,
          extensionTab: true
        }
      }
    })
  })

  const result = await response.json()
  return result
}
python
import requests

def create_browser():
    url = "http://127.0.0.1:50326/api/browser/create"
    headers = {
        "Authorization": "Bearer YOUR_API_KEY",
        "Content-Type": "application/json"
    }
    data = {
        "browserName": "Facebook营销环境",
        "groupId": 1,
        "proxy": {
            "protocol": "socks5",
            "host": "proxy.example.com",
            "port": 1080,
            "username": "user123",
            "password": "pass123",
            "timezone": "America/New_York"
        },
        "fingerprint": {
          "os": "Windows",
          "platformVersion": 11,
          "kernel": "135",
          "userAgent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/135.0.9.2537 Safari/537.36",
          "canvas": True,
          "speechVoices": True,
          "clientRects": True,
          "fonts": ["Arial", "Courier New"],
          "disableTLS": [],
          "resolution": "1920x1080",
          "ram": 8,
          "cpu": 4,
          "language": "en-US",
           "languageBaseIp": True,
          "timezone": "Europe/Amsterdam",
          "timezoneBaseIp": True,
          "hardwareAcceleration": True,
          "disableSandbox": False,
          "startupParams": "",
          "deviceName": "DESKTOP-ABCD",
          "portScanProtection": "",
          "randomFingerprint":  False,
          "disableImages":  False,
          "syncCookies":  False
        },
        "startInfo": {
          "startPage": {
            "mode": "custom",
            "value": [
                "https://www.baidu.com"
            ]
          },
          "otherConfig": {
            "openConfigPage": False,
            "checkPage": True,
            "extensionTab": True
          }
        }
    }

    response = requests.post(url, headers=headers, json=data)
    return response.json()

请求参数结构

json
{
  "browserName": "string",      // 环境名称(必填)
  "groupId": "number",          // 分组ID(可选)
  "remark": "string",           // 备注信息(可选)
  "proxy": { ... },             // 代理配置
  "fingerprint": { ... },       // 指纹配置
  "startInfo": { ... },         // 启动配置
  "Cookie": [...]               // 预设Cookie
}

详细参数说明

基础信息
参数类型必填说明示例
browserNamestring环境名称,建议使用有意义的名称"Facebook-营销账号1"
groupIdnumber分组 ID,用于环境分类管理1
remarkstring备注信息,最大 256 字符"主要用于Facebook广告投放"
代理配置 proxy
参数类型必填说明可选值
protocolstring代理协议http, socks5, direct
hoststring是*服务器地址"proxy.example.com"
portnumber是*端口1080, 8080
usernamestring用户名"user123"
passwordstring密码"pass123"
timezonestring时区"America/New_York"
proxyIdnumber已存在代理 ID1001

代理配置提示

  • 使用 proxyId 时,可省略其他代理参数
  • direct 协议表示不使用代理
  • 时区建议与代理 IP 地理位置匹配
指纹配置 fingerprint
参数类型必填说明可选值
osstring操作系统Windows, macOS, Linux, Android, iOS
platformVersionstring系统版本"11", "10"
kernelstring内核版本"135" (Chrome 版本)
userAgentstring用户代理自动生成或自定义
resolutionstring屏幕分辨率"1920x1080", "1366x768"
languagestring语言"en-US", "zh-CN"
timezonestring时区"Asia/Shanghai"
canvasbooleanCanvas 指纹true(开启), false(关闭)
webglbooleanWebGL 指纹true(开启), false(关闭)
fontsarray字体列表["Arial", "Times New Roman"]
ramnumber内存(GB)2, 4, 8, 16
cpunumberCPU 核心数2, 4, 8
disableSandboxboolean禁用沙盒true(开启), false(关闭)
startupParamsstring启动参数""
deviceNamestring设备名称"DESKTOP-ABCD"
portScanProtectionstring端口防护""
randomFingerprintboolean随机指纹true(开启), false(关闭)
disableImagesboolean禁用图片true(开启), false(关闭)
syncCookiesboolean同步Cookietrue(开启), false(关闭)

指纹配置注意事项

  • 建议使用常见的参数组合,避免过于独特的配置
  • 确保操作系统、浏览器版本、用户代理三者匹配
  • Canvas 和 WebGL 干扰有助于提高匿名性,但可能影响某些网站功能

响应数据

json
{
  "success": true,
  "message": "环境创建成功",
  "data": {
    "envId": 5880
  }
}

3. 更新浏览器环境

POST/api/browser/update

更新现有浏览器环境的配置信息。

请求头

http
Authorization: Bearer YOUR_API_KEY
Content-Type: application/json

请求体

json
{
  "envId": 1000,
  "browserName": "TestBrowser", // 浏览器环境名称
  "proxy": {
    "protocol": "socks5", // 代理协议(http/socks5/direct 等)新建代理
    "host": "108.165.69.97", // 代理主机名 (http/socks5 时候须填写)
    "port": 6059, // 代理端口 (http/socks5 时候须填写)
    "username": "hygwueis", // 代理用户名 (http/socks5 时候须填写)
    "password": "lc6bb3zfm359", // 代理密码 (http/socks5 时候须填写)
    // "timezone": "Europe/Amsterdam", // 时区(例如:`Asia/Shanghai`)
    "ipChecker": "https://ipinfo.io", // IP 检查地址
    // 当 proxyId 为空时,新建代理
    "proxyId": 1000
  },
  "fingerprint": {
    "os": "Windows", // 操作系统 Windows、macOS、iOS、Android
    "platformVersion": 11, // 系统版本 Windows的值:11、10; macOS的值: 11,10,Android的值:12,11,10;IOS的值:16,15;int类型,非必传,默认取最大值
    "kernel": "135", // 内核版本 135
    "userAgent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/135.0.9.2537 Safari/537.36", // 用户代理字符串
    "canvas": true, // Canvas 指纹 (true 开启随机,false 真实,默认 true)
    "speechVoices": true, // 语音
    "clientRects": true, //
    "fonts": ["Arial", "Courier New"], // 字体
    "disableTLS": [], // 禁用的 TLS 版本列表 [{ label: 'TLS_AES_128_GCM_SHA256',  value: '0x1301', }, { label: 'TLS_AES_256_GCM_SHA384', value: '0x1302', }, { label: 'TLS_AES_128_CCM_8_SHA256', value: '0x1305', }, { label: 'TLS_AES_128_CCM_SHA256', value: '0x1304', }, { label: 'TLS_RSA_WITH_AES_128_CBC_SHA', value: '0x002f', }, { label: 'TLS_DHE_RSA_WITH_AES_128_CBC_SHA', value: '0x0033', }, {label: 'TLS_RSA_WITH_AES_256_CBC_SHA', value: '0x0035', }, { label: 'TLS_DHE_RSA_WITH_AES_256_CBC_SHA', value: '0x0039', }, { label: 'TLS_RSA_WITH_AES_128_CBC_SHA256', value: '0x003C', }, {label: 'TLS_RSA_WITH_AES_256_CBC_SHA256', value: '0x003D', }, { label: 'TLS_DHE_RSA_WITH_AES_128_CBC_SHA256', value: '0x0067', }, { label: 'TLS_DHE_RSA_WITH_AES_256_CBC_SHA256', value: '0x006B', }, { label: 'TLS_RSA_WITH_AES_128_GCM_SHA256', value: '0x009C', }, {label: 'TLS_RSA_WITH_AES_256_GCM_SHA384', value: '0x009D', }, { label: 'TLS_DHE_RSA_WITH_AES_128_GCM_SHA256', value: '0x009E', }, { label: 'TLS_DHE_RSA_WITH_AES_256_GCM_SHA384', value: '0x009F', }, { label: 'TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA', value: '0xc009', }, { label: 'TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA', value: '0xc00a', }, { label: 'TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA', value: '0xc013', }, { label: 'TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA', value: '0xc014', }, { label: 'TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA', value: '0xc013', }, { label: 'TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA', value: '0xc014', }, { label: 'TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256',value: '0xC023',}, { label: 'TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384', value: '0xC024', },
    "resolution": "1920x1080", // 屏幕分辨率(例如:['1920x1080','1000x1080','1366x768','1536x864','1440x900','1280x720','1600x900'])
    "ram": 8, // 分配的内存 [2,4,8]
    "cpu": 4, // 分配的 CPU 核心数 [1,2,4,8]
    "language": "en-US", // 语言
    "languageBaseIp": true, // 语言是否基于 IP
    "timezone": "Europe/Amsterdam", // 时区
    "timezoneBaseIp": true, // 时区是否基于 IP
    "hardwareAcceleration": true, // 硬件加速
    "disableSandbox": false, // 禁用沙盒
    "startupParams": "", // 自定义启动参数
    "deviceName": "DESKTOP-ABCD", // 设备名称
    "portScanProtection": "", // 端口扫描防护
    "randomFingerprint":  false,
    "disableImages":  false,
    "syncCookies":  false
  },
  "groupId": 29, // 分组ID
  "remark": "备注", // 备注
  "Cookie": [], // Cookie
  "startInfo": {
    "startPage": {
      "mode": "custom", // 启动页模式
      "value": ["https://www.google.com", "https://www.bing.com"] // 启动页 ["https://www.google.com", "https://www.bing.com"]
    },
    "otherConfig": {
      "openConfigPage": true, // 是否打开配置页
      "checkPage": true, // 是否打开检查页
      "extensionTab": true // 是否打开扩展标签页
    }
  }
}

参数说明

基础参数
参数类型必填说明
envIdnumber浏览器环境 ID
browserNamestring浏览器环境名称
代理设置 proxy
参数类型必填说明
protocolstring当 proxyId 为空必填代理协议(http/socks5/direct 等)
hoststring主机名(http/socks5 时须填写)
portnumber端口(http/socks5 时须填写)
usernamestring用户名(http/socks5 时须填写)
passwordstring密码(http/socks5 时须填写)
timezonestring时区(例如:Asia/Shanghai),不填则根据 IP
ipCheckerstringIP 检查渠道
已有代理设置 proxyId
参数类型必填说明
proxyIdnumber当 proxy 为空必填使用已有代理
分组设置 groupId
参数类型必填说明
groupIdnumber设置存在分组
备注设置 remark
参数类型必填说明
remarkstring设置备注
参数类型必填说明
Cookiejson设置 Cookie
启动页设置 startInfo
参数类型必填说明示例值
startPage.modestring启动页模式custom 自定义,last 最后一次, none
startPage.valuearray启动页地址modecustom 时,["https://www.google.com"];当 modelast 时,[];当 modenone 时,[]
otherConfig.openConfigPageboolean打开配置页true 打开,false 关闭
otherConfig.checkPageboolean打开检查页true 打开,false 关闭
otherConfig.extensionTabboolean打开扩展标签页true 打开,false 关闭
指纹设置 fingerprint
参数类型必填说明
osstring操作系统
platformVersionstring系统版本
kernelstring内核版本
userAgentstring用户代理
timezonestring时区
timezoneBaseIpboolean时区基于 IP
languagestring语言
languageBaseIpboolean语言基于 IP
disableSandboxboolean禁用沙盒(true 开启,false 关闭,默认 false)
startupParamsstring启动参数
canvasbooleanCanvas 指纹(true 开启随机,false 真实,默认 true)
audioContextbooleanAudioContext 指纹(true 随机,false 真实,默认 true)
speechVoicesbooleanSpeechVoices 指纹(true 随机,false 真实,默认 true)
clientRectsbooleanClientRects 指纹(true 随机,false 真实,默认 true)
fontsarray字体列表
disableTLSarray禁用的 TLS 版本
resolutionstring屏幕分辨率(例如:1920x1080
ramnumber内存
cpunumberCPU 核心数
deviceNamestring设备名称
portScanProtectionstring端口扫描防护(默认关闭,格式:端口,端口)
hardwareAccelerationboolean硬件加速(true 开启,false 关闭,默认 true)
randomFingerprintboolean随机指纹(true 开启,false 关闭,默认 true)
disableImagesboolean禁用图片(true 开启,false 关闭,默认 true)
syncCookiesboolean同步 Cookie(true 开启,false 关闭,默认 true)

返回示例

json
{
  "success": true,
  "data": {
    "envId": 5880
  },
  "message": "成功"
}

4. 启动浏览器环境

POST/api/browser/start

启动指定的浏览器环境,返回 WebSocket 连接信息。

请求示例

bash
curl -X POST http://127.0.0.1:50326/api/browser/start \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "envId": 901,
    "args": ["--headless"],
    "port": 1111
  }'
javascript
const response = await fetch('/api/browser/start', {
  method: 'POST',
  headers: {
    Authorization: 'Bearer YOUR_API_KEY',
    'Content-Type': 'application/json'
  },
  body: JSON.stringify({
    envId: 901,
    args: ['--headless'],
    port: 1111
  })
})
const data = await response.json()
console.log(data)
python
import requests

url = "http://127.0.0.1:50326/api/browser/start"
headers = {
    "Authorization": "Bearer YOUR_API_KEY",
    "Content-Type": "application/json"
}
data = {
    "envId": 901,
    "args": ["--headless"],
    "port": 1111
}

response = requests.post(url, headers=headers, json=data)
print(response.json())

参数说明

参数类型必填说明
envIdnumber环境 ID
argsstring[]浏览器参数
portnumber自定义远程端口

返回示例

json
{
  "success": true,
  "data": {
    "envId": 900,
    "browserName": "11",
    "ws": "ws://127.0.0.1:34721/devtools/browser/33cc3bf7-1852-409f-ad3e-364f6233d735",
    "driver":"C://User/xxxxx/chromedriver.exe",// 1.0.1版本支持
    "http": "http://127.0.0.1:34721/json/version",
    "pid": 32512,
    "port": 34721,
    "userIndex":1
  },
  "message": "成功"
}

5. 停止浏览器环境

POST/api/browser/stop

停止正在运行的浏览器环境。

请求示例

bash
curl -X POST http://127.0.0.1:50326/api/browser/stop \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "envId": 900
  }'
javascript
const response = await fetch('/api/browser/stop', {
  method: 'POST',
  headers: {
    Authorization: 'Bearer YOUR_API_KEY',
    'Content-Type': 'application/json'
  },
  body: JSON.stringify({
    envId: 900
  })
})
const data = await response.json()
console.log(data)
python
import requests

url = "http://127.0.0.1:50326/api/browser/stop"
headers = {
    "Authorization": "Bearer YOUR_API_KEY",
    "Content-Type": "application/json"
}
data = {
    "envId": 900
}

response = requests.post(url, headers=headers, json=data)
print(response.json())

参数说明

参数类型必填说明
envIdnumber环境 ID

返回示例

json
{
  "success": true,
  "data": {
    "envId": 900
  },
  "message": "成功"
}

6. 删除浏览器环境

POST/api/browser/delete

删除指定的浏览器环境及其相关数据。

请求示例

bash
curl -X POST http://127.0.0.1:50326/api/browser/delete \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "envId": 911
  }'
javascript
const response = await fetch('/api/browser/delete', {
  method: 'POST',
  headers: {
    Authorization: 'Bearer YOUR_API_KEY',
    'Content-Type': 'application/json'
  },
  body: JSON.stringify({
    envId: 911
  })
})
const data = await response.json()
console.log(data)
python
import requests

url = "http://127.0.0.1:50326/api/browser/delete"
headers = {
    "Authorization": "Bearer YOUR_API_KEY",
    "Content-Type": "application/json"
}
data = {
    "envId": 911
}

response = requests.post(url, headers=headers, json=data)
print(response.json())

参数说明

参数类型必填说明
envIdnumber环境 ID

返回示例

json
{
  "success": true,
  "data": 911,
  "message": "成功"
}

7. 删除浏览器环境缓存

POST/api/browser/cache/delete

清理指定环境的缓存数据,包括 Cookie、本地存储等。

请求示例

bash
curl -X POST http://127.0.0.1:50326/api/browser/cache/delete \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type": "application/json" \
  -d '{
    "envId": 900
  }'
javascript
const response = await fetch('/api/browser/cache/delete', {
  method: 'POST',
  headers: {
    Authorization: 'Bearer YOUR_API_KEY',
    'Content-Type': 'application/json'
  },
  body: JSON.stringify({
    envId: 900
  })
})
const data = await response.json()
console.log(data)
python
import requests

url = "http://127.0.0.1:50326/api/browser/cache/delete"
headers = {
    "Authorization": "Bearer YOUR_API_KEY",
    "Content-Type": "application/json"
}
data = {
    "envId": 900
}

response = requests.post(url, headers=headers, json=data)
print(response.json())

参数说明

参数类型必填说明
envIdnumber环境 ID

返回示例

json
{
  "success": true,
  "data": 900,
  "message": "成功"
}

8. 获取环境列表

GET/api/browser/list

获取当前用户所有的浏览器环境列表,支持分页查询。

请求参数

参数类型必填默认值说明
currentnumber1当前页
pageSizenumber20每页数量
keywordstring-搜索关键词
groupIdnumber-分组 ID

请求示例

bash
curl -X GET "http://127.0.0.1:50326/api/browser/list?current=1&pageSize=20&keyword=test" \
  -H "Authorization: Bearer YOUR_API_KEY"
javascript
const params = new URLSearchParams({
  current: 1,
  pageSize: 20,
  keyword: 'test'
})

const response = await fetch(`/api/browser/list?${params}`, {
  method: 'GET',
  headers: {
    Authorization: 'Bearer YOUR_API_KEY'
  }
})
const data = await response.json()
console.log(data)
python
import requests

url = "http://127.0.0.1:50326/api/browser/list"
headers = {
    "Authorization": "Bearer YOUR_API_KEY"
}
params = {
    "current": 1,
    "pageSize": 20,
    "keyword": "test"
}

response = requests.get(url, headers=headers, params=params)
print(response.json())

返回示例 (具体看最新的返回)

json
{
  "success": true,
  "data": {
    "total": 1001,
    "current": 1,
    "pageSize": 1,
    "list": [
      {
        "userIndex": 2,
        "profileId": "c767c4455071401e8c69fcd35b83fee0",
        "browserName": "111",
        "startInfo": {
          "startPage": [],
          "otherConfig": {
            "checkPage": true,
            "openConfigPage": true
          }
        },
        "accountInfo": [
          {
            "twofa": "",
            "account": "",
            "password": "",
            "security": true
          }
        ],
        "remark": null,
        "cookie": "[{\"name\":\"NID\",\"value\":\"524=J62ojXztsmVdRN15JnjHZ1uKkZk03CqKGT6nv3MIzANjsX0yINK8LQjn9mwVFsrQLoIWZtcXH2N1WOrPA6vviGFZ2tz1DiloBntJnEPHNcElzIpUETTOBc00zsE9H9vZ9nBN1PbWbzplZMcvsKIf6TFYuoDZR8jW0yt1dRE_Vvu3cJ6mjQofbrTkX4adp3Evcg\",\"domain\":\".google.com\",\"path\":\"/\",\"expires\":1766503236,\"httpOnly\":true,\"secure\":true},{\"name\":\"acw_tc\",\"value\":\"1a16d61617506920127867097e1e8b766176dd649c824bb6961f76bffbd1a1\",\"domain\":\"wallet.ouxyi.cash\",\"path\":\"/\",\"expires\":1750693812,\"httpOnly\":true,\"secure\":false},{\"name\":\"__cf_bm\",\"value\":\"MpIJ9kyO3Y6bYsdWvosuv5YailhJ2NuXH9sfTn3R9U0-1750692605-1.0.1.1-hhzLUZ08o0q9t..yWgfC6pITz7OcOn.xQZNnQOaOyrI1e0HS1VuKfSFXyjQuSFZrfgTsC7JhIs.fJqlE.yfh8cZA6e4NhzwCj4efRKcxuC8\",\"domain\":\".okx-doh.com\",\"path\":\"/\",\"expires\":1750694404,\"httpOnly\":true,\"secure\":true},{\"name\":\"__cf_bm\",\"value\":\"NhdZ2_OAm9tyNium8NNVkZoOwSi1RHma6zRT2QeJ.d8-1750692976-1.0.1.1-q23Ow3e6CH6mnv6KJHLV8pE.21iKURpI1wltPnyXz11B7x5uZ2oB0jWPr5npR5BI0pO6AKV3A8Ao_mI9J_qUG4gy0Z9s7CorUa_9MLPY5YU\",\"domain\":\".okx.ac\",\"path\":\"/\",\"expires\":1750694775,\"httpOnly\":true,\"secure\":true},{\"name\":\"__cf_bm\",\"value\":\"d_H1JMrnKDsQXndxuXXFJLrqwhkexDTUbQxwwGDe0.g-1750693587-1.0.1.1-UjLo8PwvZmAfFL_mJgNXJHaysx.z5iSYtJs5VvELw2GMf078o5kPT7ZM9Nvb8FNLxMku6evcafgP.dZ_4teztEztPJChMcHSttA5nhsw_Gk\",\"domain\":\".okex.org\",\"path\":\"/\",\"expires\":1750695386,\"httpOnly\":true,\"secure\":true},{\"name\":\"__cf_bm\",\"value\":\"6819NtbBrV7Grq_hvrmzxu64cVaPAOVoAUjgVr5REVc-1750693587-1.0.1.1-EMWNB1c94XJnij_xsDOYMcXmYTg1BCQAxoRmi4HgPueSBsHBT3D4e3rvsckERtmMz9bCoi8kHb6a0I.cbI0ub0AooK9z6FSW3AQwfVyBEPA\",\"domain\":\".okx-httpdns.com\",\"path\":\"/\",\"expires\":1750695386,\"httpOnly\":true,\"secure\":true},{\"name\":\"__cf_bm\",\"value\":\"Kxf0ZwNSPAgpYMl5HKpzmNPabhmwqr99ICPcsIS4xe4-1750693588-1.0.1.1-IqCN4caOphkqcWHSyWFopiUhvmGvfHdJUs..6Ci8sUz8swXfdsYYuGonOdBpWFG_ZbmQW6MDoKF430f54caM53LLCVeM8CEtbsvlxyzKh50\",\"domain\":\".okx.com\",\"path\":\"/\",\"expires\":1750695388,\"httpOnly\":true,\"secure\":true}]",
        "status": 1,
        "createTime": "2025-06-23T15:19:50.000Z",
        "updateTime": "2025-06-23T16:00:51.000Z",
        "lastOpenedTime": null,
        "userId": 20,
        "proxyId": 55524,
        "isDeleted": false,
        "deleteTime": null,
        "teamId": 19,
        "groupId": null,
        "syncFile": null,
        "tags": [],
        "proxy": {
          "id": 55524,
          "userIndex": 1016,
          "address": "socks5://107.174.25.53:5507",
          "protocol": "socks5",
          "host": "107.174.25.53",
          "port": 5507,
          "username": "xxxx",
          "password": "xxxx",
          "timezone": "America/Chicago",
          "realIp": "107.174.25.53",
          "lastIp": null,
          "lastCheckedTime": "2025-06-23T16:00:46.000Z",
          "ipChecker": "https://iprust.io/ip.json",
          "ipChangeAction": null,
          "status": 2,
          "remark": null,
          "createdTime": "2025-06-23T16:00:50.000Z",
          "updatedTime": "2025-06-23T16:00:50.000Z",
          "userId": 20,
          "teamId": 19,
          "isDeleted": false,
          "groupId": null
        },
        "group": null,
        "fingerprint": {
          "os": "Windows",
          "cpu": 2,
          "ram": 2,
          "seed": 4946,
          "fonts": "Liberation Sans Narrow,Liberation Sans Narrow,Javanese Text Regular,AR PL UKai CN,Proxy 1,Avenir Next,Noto Sans Cypriot,Avenir Black,SimSun-ExtB Regular,Kohinoor Gujarati,Segoe MDL2 Assets,Sinhala Sangam MN,Gabriola Regular,EUROSTILE,DengXian Light,Century Schoolbook,Heiti TC,Hiragino Sans W4,Segoe MDL2 Assets,Hiragino Sans W9,cursive,Avenir Black,PT Serif,Segoe UI Black,Forte,Kristen ITC,Mallanna,Garamond,Hiragino Mincho ProN,Arial Hebrew,Javanese Text Regular,PT Serif",
          "webgl": {
            "glRender": "Intel(R) HD Graphics 3000 Direct3D11 vs_4_1 ps_4_1, D3D11-23.21.13.8857",
            "glVendor": "Intel"
          },
          "canvas": true,
          "kernel": "135",
          "webgpu": {
            "gpuArch": "gen-12lp",
            "gpuVendor": "intel"
          },
          "webrtc": "disable",
          "battery": true,
          "browser": "chrome",
          "language": "en-US",
          "bluetooth": true,
          "isEncrypt": false,
          "userAgent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/135.0.60.2288 Safari/537.36",
          "deviceName": "DESKTOP-0NCRDDBI",
          "disableTLS": [],
          "doNotTrack": false,
          "resolution": "1000x1080",
          "uiLanguage": "en-US",
          "clientRects": true,
          "audioContext": true,
          "speechVoices": true,
          "startupParams": "",
          "disableSandbox": false,
          "timezoneBaseIp": true,
          "platformVersion": 11,
          "portScanProtection": "",
          "hardwareAcceleration": false,
          "randomFingerprint": false,
          "disableImages":  false,
          "syncCookies":  false
        },
        "envId": 29286
      }
    ]
  },
  "message": "成功"
}

9. 获取正在运行的环境列表

GET/api/browser/open/list

获取当前正在运行的所有浏览器环境。

请求示例

bash
curl -X GET http://127.0.0.1:50326/api/browser/open/list \
  -H "Authorization: Bearer YOUR_API_KEY"
javascript
const response = await fetch('/api/browser/open/list', {
  method: 'GET',
  headers: {
    Authorization: 'Bearer YOUR_API_KEY'
  }
})
const data = await response.json()
console.log(data)
python
import requests

url = "http://127.0.0.1:50326/api/browser/open/list"
headers = {
    "Authorization": "Bearer YOUR_API_KEY"
}

response = requests.get(url, headers=headers)
print(response.json())

返回示例

json
{
  "success": true,
  "data": [
    {
      "envId": 900,
      "browserName": "11",
      "ws": "ws://127.0.0.1:36203/devtools/browser/f1049062-aead-47ed-8719-15f0938b7dd5",
      "http": "http://127.0.0.1:36203/json/version",
      "openStatus": 1,
      "pid": 27652,
      "port": 36203,
      "userIndex":1,
      "updatedAt": "2025-04-21T08:53:35.531Z"
    }
  ],
  "message": "成功"
}

10. 一键自适应排版

POST/api/windowbounds/sort

自动调整多个浏览器窗口的位置和大小,实现屏幕自适应排版。

请求示例

bash
curl -X POST http://127.0.0.1:50326/api/windowbounds/sort \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "envIds": [1, 2]
  }'
javascript
const response = await fetch('/api/windowbounds/sort', {
  method: 'POST',
  headers: {
    Authorization: 'Bearer YOUR_API_KEY',
    'Content-Type': 'application/json'
  },
  body: JSON.stringify({
    envIds: [1, 2]
  })
})
const data = await response.json()
console.log(data)
python
import requests

url = "http://127.0.0.1:50326/api/windowbounds/sort"
headers = {
    "Authorization": "Bearer YOUR_API_KEY",
    "Content-Type": "application/json"
}
data = {
    "envIds": [1, 2]
}

response = requests.post(url, headers=headers, json=data)
print(response.json())

参数说明

参数类型必填说明
envIdsnumber[]环境 ID

返回示例

json
{ "success": true, "data": [], "message": "成功排列 2 个窗口" }

分组

1. 获取分组列表

GET/api/groups/list

请求参数

参数类型必填默认值说明
currentnumber1当前页
pageSizenumber20每页数量

请求示例

http
GET /api/groups/list?current=1&pageSize=20
Authorization: Bearer YOUR_API_KEY

返回示例

json
{
  "success": true,
  "data": [
    {
      "id": 63,
      "name": "kkkk",
      "description": null,
      "orderGroup": 0,
      "userId": 4,
      "teamId": 1,
      "createTime": "2025-06-14T10:22:48.000Z",
      "updateTime": "2025-06-14T10:22:48.000Z",
      "envCount": 0
    },
    {
      "id": 61,
      "name": "vess",
      "description": null,
      "orderGroup": 2,
      "userId": 4,
      "teamId": 1,
      "createTime": "2025-06-11T08:19:03.000Z",
      "updateTime": "2025-06-11T08:19:03.000Z",
      "envCount": 0
    },
    {
      "id": 60,
      "name": "kkkk",
      "description": null,
      "orderGroup": 0,
      "userId": 4,
      "teamId": 1,
      "createTime": "2025-06-11T06:20:20.000Z",
      "updateTime": "2025-06-11T06:20:20.000Z",
      "envCount": 16
    },
    {
      "id": 59,
      "name": "aaa",
      "description": null,
      "orderGroup": 1,
      "userId": 4,
      "teamId": 1,
      "createTime": "2025-06-10T14:07:50.000Z",
      "updateTime": "2025-06-10T14:07:50.000Z",
      "envCount": 10
    }
  ],
  "total": 4,
  "current": 1,
  "pageSize": 10,
  "message": "成功"
}

代理

1. 获取代理列表

GET/api/proxies/list

请求参数

参数类型必填默认值说明
currentnumber1当前页
pageSizenumber20每页数量

请求示例

http
GET /api/proxies/list?current=1&pageSize=20
Authorization: Bearer YOUR_API_KEY

返回示例

json
{
  "success": true,
  "data": [
    {
      "userIndex": 1,
      "address": "socks5://185.171.254.53:6085",
      "protocol": "socks5",
      "host": "185.171.254.53",
      "port": 6085,
      "username": "username",
      "password": "password",
      "timezone": "Europe/Amsterdam",
      "realIp": "185.171.254.53",
      "lastIp": "185.171.254.53",
      "lastCheckedTime": "2025-09-02T18:37:52.000Z",
      "ipChecker": "https://ipinfo.io",
      "ipChangeAction": null,
      "status": 2,
      "remark": null,
      "createdTime": "2025-09-01T18:08:08.000Z",
      "updatedTime": "2025-09-01T18:08:08.000Z",
      "userId": 20,
      "teamId": 1,
      "isDeleted": false,
      "groupId": null,
      "profileId": "8e27864c1a3146c5929f49ac4036d886",
      "proxyId": 1
    }
  ],
  "message": "成功"
}

配置参数

分辨率

5120x2880
2880x1800
2560x1600
2560x1440
2304x1440
2048x1152
1920x1200
1920x1080
1600x1200
1600x900
1400x1050
1400x900
1360x768
1280x1024
1280x960
1280x800
1280x720
1024x768
800x600

语言

sq-AL - 阿尔巴尼亚语 - shqip
ak    - 阿肯语 - Akan
ar    - 阿拉伯语 - العربية
an    - 阿拉贡语 - aragonés
am    - 阿姆哈拉语 - አማርኛ
as    - 阿萨姆语 - অসমীয়া
az-Cyrl-AZ    - 阿塞拜疆语 - azərbaycan
ast   - 阿斯图里亚斯语 - asturianu
ee    - 埃维语 - Eʋegbe
ay    - 艾马拉语 - Aymar
ga    - 爱尔兰语 - Gaeilge
et-EE    - 爱沙尼亚语 - eesti
oc    - 奥克语 - occitan
or    - 奥里亚语 - ଓଡ଼ିଆ
om    - 奥罗莫语 - Oromoo
eu    - 巴斯克语 - euskara
be-BY    - 白俄罗斯语 - беларуская
bm    - 班巴拉语 - bamanakan
bg-BG    - 保加利亚语 - български
nso    - 北索托语 - Northern Sotho
is-IS    - 冰岛语 - íslenska
pl-PL    - 波兰语 - polski
bs    - 波斯尼亚语 - bosanski
fa    - 波斯语 - فارسی
bho    - 博杰普尔语 - भोजपुरी
br    - 布列塔尼语 - brezhoneg
tn    - 茨瓦纳语 - Tswana
ts    - 聪加语 - Xitsonga
tt    - 鞑靼语 - татар
da-DK    - 丹麦语 - dansk
de    - 德语 - Deutsch
de-AT    - 德语(奥地利) - Deutsch (Österreich)
de-DE    - 德语(德国) - Deutsch (Deutschland)
de-LI    - 德语(列支敦士登) - Deutsch (Liechtenstein)
de-CH    - 德语(瑞士) - Deutsch (Schweiz)
dv    - 迪维希语 - ދިވެހި
doi    - 多格拉语 - डोगरी
ru    - 俄语 - русский
fo    - 法罗语 - føroyskt
fr    - 法语 - français
fr-FR    - 法语(法国) - français (France)
fr-CA    - 法语(加拿大) - français (Canada)
fr-CH    - 法语(瑞士) - français (Suisse)
sa    - 梵语 - संस्कृत भाषा
fil-PH    - 菲律宾语 - Filipino
fi-FI    - 芬兰语 - suomi
km    - 高棉语 - ខ្មែរ
ka-GE    - 格鲁吉亚语 - ქართული
gu    - 古吉拉特语 - ગુજરાતી
gn    - 瓜拉尼语 - Guarani
ia    - 国际语 - interlingua
kk    - 哈萨克语 - қазақ тілі
ht    - 海地克里奥尔语 - créole haïtien
ko    - 韩语 - 한국어
ha    - 豪萨语 - Hausa
nl-NL    - 荷兰语 - Nederlands
gl    - 加利西亚语 - galego
ca    - 加泰罗尼亚语 - català
cs-CZ    - 捷克语 - čeština
kn    - 卡纳达语 - ಕನ್ನಡ
ky    - 柯尔克孜语 - кыргызча
xh    - 科萨语 - IsiXhosa
co    - 科西嘉语 - Corsican
hr-HR    - 克罗地亚语 - hrvatski
qu    - 克丘亚语 - Runasimi
kok    - 孔卡尼语 - कोंकणी
ku    - 库尔德语 - Kurdî
la    - 拉丁语 - Latin
lv-LV    - 拉脱维亚语 - latviešu
lo-LA    - 老挝语 - ລາວ
lt-LT    - 立陶宛语 - lietuvių
ln    - 林加拉语 - lingála
lg    - 卢干达语 - Luganda
lb    - 卢森堡语 - Lëtzebuergesch
rw-RW    - 卢旺达语 - Kinyarwanda
ro-RO    - 罗马尼亚语 - română
mo    - 罗马尼亚语(摩尔多瓦) - română (Republica Moldova)
rm    - 罗曼什语 - rumantsch
mt-MT    - 马耳他语 - Malti
mr    - 马拉地语 - मराठी
mg    - 马拉加斯语 - Malagasy
ml    - 马拉雅拉姆语 - മലയാളം
ms    - 马来语 - Melayu
mk-MK    - 马其顿语 - македонски
mai    - 迈蒂利语 - मैथिली
mni-Mtei    - 曼尼普尔语(曼尼普尔文) - mni (Mtei)
mi    - 毛利语 - Māori
mn    - 蒙古语 - монгол
bn-BD    - 孟加拉语 - বাংলা
lus    - 米佐语 - Mizo tawng
my    - 缅甸语 - မြန်မာ
hmn    - 苗语 - Hmong
af  -  南非荷兰语 - Afrikaans
st    - 南索托语 - Southern Sotho
ne-NP    - 尼泊尔语 - नेपाली
nn    - 挪威尼诺斯克语 - norsk nynorsk
no    - 挪威语 - norsk
pa    - 旁遮普语 - ਪੰਜਾਬੀ
pt-PT    - 葡萄牙语 - português
pt-BR    - 葡萄牙语(巴西) - português (Brasil)
pt-PT    - 葡萄牙语(葡萄牙) - português (Portugal)
ps    - 普什图语 - پښتو
ny    - 齐切瓦语 - Nyanja
tw    - 契维语 - Twi
chr    - 切罗基语 - ᏣᎳᎩ
ja-JP    - 日语 - 日本語
sv-SE    - 瑞典语 - svenska
sm    - 萨摩亚语 - Samoan
sh    - 塞尔维亚-克罗地亚语 - srpskohrvatski
sr-Latn-RS    - 塞尔维亚语 - српски
si    - 僧伽罗语 - සිංහල
sn   - 绍纳语 - chiShona
eo   - 世界语 - Esperanto
nb   - 书面挪威语 - norsk bokmål
sk-SK    - 斯洛伐克语 - slovenčina
sl-SI    - 斯洛文尼亚语 - slovenščina
sw    - 斯瓦希里语 - Kiswahili
gd   - 苏格兰盖尔语 - Gàidhlig
ceb  - 宿务语 - Cebuano
so    - 索马里语 - Soomaali
tg    - 塔吉克语 - тоҷикӣ
te    - 泰卢固语 - తెలుగు
ta    - 泰米尔语 - தமிழ்
th    - 泰语 - ไทย
to    - 汤加语 - lea fakatonga
ti    - 提格利尼亚语 - ትግርኛ
tr-TR    - 土耳其语 - Türkçe
tk    - 土库曼语 - türkmen dili
wa    - 瓦隆语 - wa
cy    - 威尔士语 - Cymraeg
ug    - 维吾尔语 - ئۇيغۇرچە
wo    - 沃洛夫语 - Wolof
ur    - 乌尔都语 - اردو
uk-UA    - 乌克兰语 - українська
uz    - 乌兹别克语 - o‘zbek
es-ES     - 西班牙语 - español
es-AR    - 西班牙语(阿根廷) - español (Argentina)
es-CO    - 西班牙语(哥伦比亚) - español (Colombia)
es-CR    - 西班牙语(哥斯达黎加) - español (Costa Rica)
es-HN   - 西班牙语(洪都拉斯) - español (Honduras)
es-419   - 西班牙语(拉丁美洲) - español (Latinoamérica)
es-US    - 西班牙语(美国) - español (Estados Unidos)
es-PE    - 西班牙语(秘鲁) - español (Perú)
es-MX   - 西班牙语(墨西哥) - español (México)
es-VE    - 西班牙语(委内瑞拉) - español (Venezuela)
es-UY    - 西班牙语(乌拉圭) - español (Uruguay)
es-ES    - 西班牙语(西班牙) - español (España)
es-CL    - 西班牙语(智利) - español (Chile)
fy    - 西弗里西亚语 - Frysk
he   - 希伯来语 - עברית
el-GR   - 希腊语 - Ελληνικά
haw    - 夏威夷语 - ʻŌlelo Hawaiʻi
sd    - 信德语 - سنڌي
hu-HU    - 匈牙利语 - magyar
su    - 巽他语 - Basa Sunda
hy-AM    - 亚美尼亚语 - հայերեն
ig    - 伊博语 - Igbo
ilo   - 伊洛卡诺语 - Ilokano
it-IT    - 意大利语 - italiano
it-CH - 意大利语(瑞士) - italiano (Svizzera)
it-IT - 意大利语(意大利) - italiano (Italia)
yi    - 意第绪语 - ייִדיש
hi    - 印地语 - हिन्दी
id-ID    - 印度尼西亚语 - Indonesia
en    - 英语 - English
en-IE - 英语(爱尔兰) - English (Ireland)
en-AU - 英语(澳大利亚) - English (Australia)
en-CA - 英语(加拿大) - English (Canada)
en-US - 英语(美国) - English (United States)
en-ZA - 英语(南非) - English (South Africa)
en-NZ - 英语(新西兰) - English (New Zealand)
en-IN - 英语(印度) - English (India)
en-GB-oxendict - 英语(英国,《牛津英语词典》拼法) - English (United Kingdom
en-GB - 英语(英国) - English (United Kingdom)
yo - 约鲁巴语 - Èdè Yorùbá
vi-VN - 越南语 - Tiếng Việt
jv - 爪哇语 - Jawa
ckb  - 中库尔德语 - کوردیی ناوەندی
zh    - 中文 - 中文
zh-TW    - 中文(繁体) - 中文(繁體)
zh-CN    - 中文(简体) - 中文(简体)
zh-HK    - 中文(香港) - 中文(香港)
zu    - 祖鲁语 - isiZulu

时区

GMT-01:00 America/Scoresbysund
GMT-01:00 Atlantic/Azores
GMT-01:00 Atlantic/Cape_Verde
GMT-01:00 Etc/GMT+1
GMT-02:00 America/Noronha
GMT-02:00 Atlantic/South_Georgia
GMT-02:00 Etc/GMT+2
GMT-03:00 America/Araguaina
GMT-03:00 America/Argentina/Buenos_Aires
GMT-03:00 America/Argentina/Catamarca
GMT-03:00 America/Argentina/Cordoba
GMT-03:00 America/Argentina/Jujuy
GMT-03:00 America/Argentina/La_Rioja
GMT-03:00 America/Argentina/Mendoza
GMT-03:00 America/Argentina/Rio_Gallegos
GMT-03:00 America/Argentina/Salta
GMT-03:00 America/Argentina/San_Juan
GMT-03:00 America/Argentina/San_Luis
GMT-03:00 America/Argentina/Tucuman
GMT-03:00 America/Argentina/Ushuaia
GMT-03:00 America/Asuncion
GMT-03:00 America/Bahia
GMT-03:00 America/Belem
GMT-03:00 America/Cayenne
GMT-03:00 America/Fortaleza
GMT-03:00 America/Godthab
GMT-03:00 America/Maceio
GMT-03:00 America/Miquelon
GMT-03:00 America/Montevideo
GMT-03:00 America/Nuuk
GMT-03:00 America/Paramaribo
GMT-03:00 America/Punta_Arenas
GMT-03:00 America/Recife
GMT-03:00 America/Santarem
GMT-03:00 America/Santiago
GMT-03:00 America/Sao_Paulo
GMT-03:00 Antarctica/Palmer
GMT-03:00 Antarctica/Rothera
GMT-03:00 Atlantic/Stanley
GMT-03:00 Etc/GMT+3
GMT-03:30 America/St_Johns
GMT-04:00 America/Anguilla
GMT-04:00 America/Antigua
GMT-04:00 America/Aruba
GMT-04:00 America/Barbados
GMT-04:00 America/Blanc-Sablon
GMT-04:00 America/Boa_Vista
GMT-04:00 America/Campo_Grande
GMT-04:00 America/Caracas
GMT-04:00 America/Cuiaba
GMT-04:00 America/Curacao
GMT-04:00 America/Dominica
GMT-04:00 America/Glace_Bay
GMT-04:00 America/Goose_Bay
GMT-04:00 America/Grenada
GMT-04:00 America/Guadeloupe
GMT-04:00 America/Guyana
GMT-04:00 America/Halifax
GMT-04:00 America/Kralendijk
GMT-04:00 America/La_Paz
GMT-04:00 America/Lower_Princes
GMT-04:00 America/Manaus
GMT-04:00 America/Marigot
GMT-04:00 America/Martinique
GMT-04:00 America/Moncton
GMT-04:00 America/Montserrat
GMT-04:00 America/Port_of_Spain
GMT-04:00 America/Porto_Velho
GMT-04:00 America/Puerto_Rico
GMT-04:00 America/Santo_Domingo
GMT-04:00 America/St_Barthelemy
GMT-04:00 America/St_Kitts
GMT-04:00 America/St_Lucia
GMT-04:00 America/St_Thomas
GMT-04:00 America/St_Vincent
GMT-04:00 America/Thule
GMT-04:00 America/Tortola
GMT-04:00 Atlantic/Bermuda
GMT-04:00 Etc/GMT+4
GMT-05:00 America/Atikokan
GMT-05:00 America/Bogota
GMT-05:00 America/Cancun
GMT-05:00 America/Cayman
GMT-05:00 America/Detroit
GMT-05:00 America/Eirunepe
GMT-05:00 America/Grand_Turk
GMT-05:00 America/Guayaquil
GMT-05:00 America/Havana
GMT-05:00 America/Indiana/Indianapolis
GMT-05:00 America/Indiana/Marengo
GMT-05:00 America/Indiana/Petersburg
GMT-05:00 America/Indiana/Vevay
GMT-05:00 America/Indiana/Vincennes
GMT-05:00 America/Indiana/Winamac
GMT-05:00 America/Indianapolis
GMT-05:00 America/Iqaluit
GMT-05:00 America/Jamaica
GMT-05:00 America/Kentucky/Louisville
GMT-05:00 America/Kentucky/Monticello
GMT-05:00 America/Lima
GMT-05:00 America/Montreal
GMT-05:00 America/Nassau
GMT-05:00 America/New_York
GMT-05:00 America/Nipigon
GMT-05:00 America/Panama
GMT-05:00 America/Pangnirtung
GMT-05:00 America/Port-au-Prince
GMT-05:00 America/Rio_Branco
GMT-05:00 America/Thunder_Bay
GMT-05:00 America/Toronto
GMT-05:00 EST
GMT-05:00 EST5EDT
GMT-05:00 Etc/GMT+5
GMT-05:00 Pacific/Easter
GMT-06:00 America/Bahia_Banderas
GMT-06:00 America/Belize
GMT-06:00 America/Chicago
GMT-06:00 America/Costa_Rica
GMT-06:00 America/El_Salvador
GMT-06:00 America/Guatemala
GMT-06:00 America/Indiana/Knox
GMT-06:00 America/Indiana/Tell_City
GMT-06:00 America/Managua
GMT-06:00 America/Matamoros
GMT-06:00 America/Menominee
GMT-06:00 America/Merida
GMT-06:00 America/Mexico_City
GMT-06:00 America/Monterrey
GMT-06:00 America/North_Dakota/Beulah
GMT-06:00 America/North_Dakota/Center
GMT-06:00 America/North_Dakota/New_Salem
GMT-06:00 America/Rainy_River
GMT-06:00 America/Rankin_Inlet
GMT-06:00 America/Regina
GMT-06:00 America/Resolute
GMT-06:00 America/Swift_Current
GMT-06:00 America/Tegucigalpa
GMT-06:00 America/Winnipeg
GMT-06:00 CST6CDT
GMT-06:00 Etc/GMT+6
GMT-06:00 Pacific/Galapagos
GMT-07:00 America/Boise
GMT-07:00 America/Cambridge_Bay
GMT-07:00 America/Chihuahua
GMT-07:00 America/Creston
GMT-07:00 America/Dawson
GMT-07:00 America/Dawson_Creek
GMT-07:00 America/Denver
GMT-07:00 America/Edmonton
GMT-07:00 America/Fort_Nelson
GMT-07:00 America/Hermosillo
GMT-07:00 America/Inuvik
GMT-07:00 America/Mazatlan
GMT-07:00 America/Ojinaga
GMT-07:00 America/Phoenix
GMT-07:00 America/Whitehorse
GMT-07:00 America/Yellowknife
GMT-07:00 Etc/GMT+7
GMT-07:00 MST
GMT-07:00 MST7MDT
GMT-08:00 America/Los_Angeles
GMT-08:00 America/Tijuana
GMT-08:00 America/Vancouver
GMT-08:00 Etc/GMT+8
GMT-08:00 Pacific/Pitcairn
GMT-08:00 PST8PDT
GMT-09:00 America/Anchorage
GMT-09:00 America/Juneau
GMT-09:00 America/Metlakatla
GMT-09:00 America/Nome
GMT-09:00 America/Sitka
GMT-09:00 America/Yakutat
GMT-09:00 Etc/GMT+9
GMT-09:00 Pacific/Gambier
GMT-09:30 Pacific/Marquesas
GMT-10:00 America/Adak
GMT-10:00 Etc/GMT+10
GMT-10:00 HST
GMT-10:00 Pacific/Honolulu
GMT-10:00 Pacific/Rarotonga
GMT-10:00 Pacific/Tahiti
GMT-11:00 Etc/GMT+11
GMT-11:00 Pacific/Midway
GMT-11:00 Pacific/Niue
GMT-11:00 Pacific/Pago_Pago
GMT-12:00 Etc/GMT+12
GMT+00:00 Africa/Abidjan
GMT+00:00 Africa/Accra
GMT+00:00 Africa/Bamako
GMT+00:00 Africa/Banjul
GMT+00:00 Africa/Bissau
GMT+00:00 Africa/Conakry
GMT+00:00 Africa/Dakar
GMT+00:00 Africa/Freetown
GMT+00:00 Africa/Lome
GMT+00:00 Africa/Monrovia
GMT+00:00 Africa/Nouakchott
GMT+00:00 Africa/Ouagadougou
GMT+00:00 Africa/Sao_Tome
GMT+00:00 America/Danmarkshavn
GMT+00:00 Antarctica/Troll
GMT+00:00 Atlantic/Canary
GMT+00:00 Atlantic/Faroe
GMT+00:00 Atlantic/Madeira
GMT+00:00 Atlantic/Reykjavik
GMT+00:00 Atlantic/St_Helena
GMT+00:00 Etc/GMT
GMT+00:00 Etc/GMT-0
GMT+00:00 Etc/GMT+0
GMT+00:00 Etc/GMT0
GMT+00:00 Etc/Greenwich
GMT+00:00 Etc/Universal
GMT+00:00 Etc/Zulu
GMT+00:00 Europe/Dublin
GMT+00:00 Europe/Guernsey
GMT+00:00 Europe/Isle_of_Man
GMT+00:00 Europe/Jersey
GMT+00:00 Europe/Lisbon
GMT+00:00 Europe/London
GMT+00:00 GMT
GMT+00:00 UTC
GMT+00:00 WET
GMT+01:00 Africa/Algiers
GMT+01:00 Africa/Bangui
GMT+01:00 Africa/Brazzaville
GMT+01:00 Africa/Casablanca
GMT+01:00 Africa/Ceuta
GMT+01:00 Africa/Douala
GMT+01:00 Africa/El_Aaiun
GMT+01:00 Africa/Kinshasa
GMT+01:00 Africa/Lagos
GMT+01:00 Africa/Libreville
GMT+01:00 Africa/Luanda
GMT+01:00 Africa/Malabo
GMT+01:00 Africa/Ndjamena
GMT+01:00 Africa/Niamey
GMT+01:00 Africa/Porto-Novo
GMT+01:00 Africa/Tunis
GMT+01:00 Arctic/Longyearbyen
GMT+01:00 CET
GMT+01:00 Etc/GMT-1
GMT+01:00 Europe/Amsterdam
GMT+01:00 Europe/Andorra
GMT+01:00 Europe/Belgrade
GMT+01:00 Europe/Berlin
GMT+01:00 Europe/Bratislava
GMT+01:00 Europe/Brussels
GMT+01:00 Europe/Budapest
GMT+01:00 Europe/Busingen
GMT+01:00 Europe/Copenhagen
GMT+01:00 Europe/Gibraltar
GMT+01:00 Europe/Ljubljana
GMT+01:00 Europe/Luxembourg
GMT+01:00 Europe/Madrid
GMT+01:00 Europe/Malta
GMT+01:00 Europe/Monaco
GMT+01:00 Europe/Oslo
GMT+01:00 Europe/Paris
GMT+01:00 Europe/Podgorica
GMT+01:00 Europe/Prague
GMT+01:00 Europe/Rome
GMT+01:00 Europe/San_Marino
GMT+01:00 Europe/Sarajevo
GMT+01:00 Europe/Skopje
GMT+01:00 Europe/Stockholm
GMT+01:00 Europe/Tirane
GMT+01:00 Europe/Vaduz
GMT+01:00 Europe/Vatican
GMT+01:00 Europe/Vienna
GMT+01:00 Europe/Warsaw
GMT+01:00 Europe/Zagreb
GMT+01:00 Europe/Zurich
GMT+01:00 MET
GMT+02:00 Africa/Blantyre
GMT+02:00 Africa/Bujumbura
GMT+02:00 Africa/Cairo
GMT+02:00 Africa/Gaborone
GMT+02:00 Africa/Harare
GMT+02:00 Africa/Johannesburg
GMT+02:00 Africa/Khartoum
GMT+02:00 Africa/Kigali
GMT+02:00 Africa/Lubumbashi
GMT+02:00 Africa/Lusaka
GMT+02:00 Africa/Maputo
GMT+02:00 Africa/Maseru
GMT+02:00 Africa/Mbabane
GMT+02:00 Africa/Tripoli
GMT+02:00 Africa/Windhoek
GMT+02:00 Asia/Amman
GMT+02:00 Asia/Beirut
GMT+02:00 Asia/Damascus
GMT+02:00 Asia/Famagusta
GMT+02:00 Asia/Gaza
GMT+02:00 Asia/Hebron
GMT+02:00 Asia/Jerusalem
GMT+02:00 Asia/Nicosia
GMT+02:00 EET
GMT+02:00 Etc/GMT-2
GMT+02:00 Europe/Athens
GMT+02:00 Europe/Bucharest
GMT+02:00 Europe/Chisinau
GMT+02:00 Europe/Helsinki
GMT+02:00 Europe/Kaliningrad
GMT+02:00 Europe/Kiev
GMT+02:00 Europe/Mariehamn
GMT+02:00 Europe/Nicosia
GMT+02:00 Europe/Riga
GMT+02:00 Europe/Sofia
GMT+02:00 Europe/Tallinn
GMT+02:00 Europe/Uzhgorod
GMT+02:00 Europe/Vilnius
GMT+02:00 Europe/Zaporozhye
GMT+03:00 Africa/Addis_Ababa
GMT+03:00 Africa/Asmara
GMT+03:00 Africa/Dar_es_Salaam
GMT+03:00 Africa/Djibouti
GMT+03:00 Africa/Juba
GMT+03:00 Africa/Kampala
GMT+03:00 Africa/Mogadishu
GMT+03:00 Africa/Nairobi
GMT+03:00 Antarctica/Syowa
GMT+03:00 Asia/Aden
GMT+03:00 Asia/Baghdad
GMT+03:00 Asia/Bahrain
GMT+03:00 Asia/Istanbul
GMT+03:00 Asia/Kuwait
GMT+03:00 Asia/Qatar
GMT+03:00 Asia/Riyadh
GMT+03:00 Etc/GMT-3
GMT+03:00 Europe/Istanbul
GMT+03:00 Europe/Kirov
GMT+03:00 Europe/Minsk
GMT+03:00 Europe/Moscow
GMT+03:00 Europe/Simferopol
GMT+03:00 Indian/Antananarivo
GMT+03:00 Indian/Comoro
GMT+03:00 Indian/Mayotte
GMT+03:30 Asia/Tehran
GMT+04:00 Asia/Baku
GMT+04:00 Asia/Dubai
GMT+04:00 Asia/Muscat
GMT+04:00 Asia/Tbilisi
GMT+04:00 Asia/Yerevan
GMT+04:00 Etc/GMT-4
GMT+04:00 Europe/Astrakhan
GMT+04:00 Europe/Samara
GMT+04:00 Europe/Saratov
GMT+04:00 Europe/Ulyanovsk
GMT+04:00 Europe/Volgograd
GMT+04:00 Indian/Mahe
GMT+04:00 Indian/Mauritius
GMT+04:00 Indian/Reunion
GMT+04:30 Asia/Kabul
GMT+05:00 Antarctica/Mawson
GMT+05:00 Asia/Aqtau
GMT+05:00 Asia/Aqtobe
GMT+05:00 Asia/Ashgabat
GMT+05:00 Asia/Atyrau
GMT+05:00 Asia/Dushanbe
GMT+05:00 Asia/Karachi
GMT+05:00 Asia/Oral
GMT+05:00 Asia/Qyzylorda
GMT+05:00 Asia/Samarkand
GMT+05:00 Asia/Tashkent
GMT+05:00 Asia/Yekaterinburg
GMT+05:00 Etc/GMT-5
GMT+05:00 Indian/Kerguelen
GMT+05:00 Indian/Maldives
GMT+05:30 Asia/Calcutta
GMT+05:30 Asia/Colombo
GMT+05:30 Asia/Kolkata
GMT+05:45 Asia/Kathmandu
GMT+05:45 Asia/Katmandu
GMT+06:00 Antarctica/Vostok
GMT+06:00 Asia/Almaty
GMT+06:00 Asia/Bishkek
GMT+06:00 Asia/Dhaka
GMT+06:00 Asia/Omsk
GMT+06:00 Asia/Qostanay
GMT+06:00 Asia/Thimphu
GMT+06:00 Asia/Urumqi
GMT+06:00 Etc/GMT-6
GMT+06:00 Indian/Chagos
GMT+06:30 Asia/Yangon
GMT+06:30 Indian/Cocos
GMT+07:00 Antarctica/Davis
GMT+07:00 Asia/Bangkok
GMT+07:00 Asia/Barnaul
GMT+07:00 Asia/Ho_Chi_Minh
GMT+07:00 Asia/Hovd
GMT+07:00 Asia/Jakarta
GMT+07:00 Asia/Krasnoyarsk
GMT+07:00 Asia/Novokuznetsk
GMT+07:00 Asia/Novosibirsk
GMT+07:00 Asia/Phnom_Penh
GMT+07:00 Asia/Pontianak
GMT+07:00 Asia/Tomsk
GMT+07:00 Asia/Vientiane
GMT+07:00 Etc/GMT-7
GMT+07:00 Indian/Christmas
GMT+08:00 Asia/Brunei
GMT+08:00 Asia/Choibalsan
GMT+08:00 Asia/Hong_Kong
GMT+08:00 Asia/Irkutsk
GMT+08:00 Asia/Kuala_Lumpur
GMT+08:00 Asia/Kuching
GMT+08:00 Asia/Macau
GMT+08:00 Asia/Makassar
GMT+08:00 Asia/Manila
GMT+08:00 Asia/Shanghai
GMT+08:00 Asia/Singapore
GMT+08:00 Asia/Taipei
GMT+08:00 Asia/Ulaanbaatar
GMT+08:00 Australia/Perth
GMT+08:00 Etc/GMT-8
GMT+08:45 Australia/Eucla
GMT+09:00 Asia/Chita
GMT+09:00 Asia/Dili
GMT+09:00 Asia/Jayapura
GMT+09:00 Asia/Khandyga
GMT+09:00 Asia/Pyongyang
GMT+09:00 Asia/Seoul
GMT+09:00 Asia/Tokyo
GMT+09:00 Asia/Yakutsk
GMT+09:00 Etc/GMT-9
GMT+09:00 Pacific/Palau
GMT+09:30 Australia/Darwin
GMT+10:00 Antarctica/DumontDUrville
GMT+10:00 Asia/Ust-Nera
GMT+10:00 Asia/Vladivostok
GMT+10:00 Australia/Brisbane
GMT+10:00 Australia/Lindeman
GMT+10:00 Etc/GMT-10
GMT+10:00 Pacific/Chuuk
GMT+10:00 Pacific/Guam
GMT+10:00 Pacific/Port_Moresby
GMT+10:00 Pacific/Saipan
GMT+10:30 Australia/Adelaide
GMT+10:30 Australia/Broken_Hill
GMT+11:00 Antarctica/Casey
GMT+11:00 Antarctica/Macquarie
GMT+11:00 Asia/Magadan
GMT+11:00 Asia/Sakhalin
GMT+11:00 Asia/Srednekolymsk
GMT+11:00 Australia/Currie
GMT+11:00 Australia/Hobart
GMT+11:00 Australia/Lord_Howe
GMT+11:00 Australia/Melbourne
GMT+11:00 Australia/Sydney
GMT+11:00 Etc/GMT-11
GMT+11:00 Pacific/Bougainville
GMT+11:00 Pacific/Efate
GMT+11:00 Pacific/Guadalcanal
GMT+11:00 Pacific/Kosrae
GMT+11:00 Pacific/Noumea
GMT+11:00 Pacific/Pohnpei
GMT+12:00 Asia/Anadyr
GMT+12:00 Asia/Kamchatka
GMT+12:00 Etc/GMT-12
GMT+12:00 Pacific/Fiji
GMT+12:00 Pacific/Funafuti
GMT+12:00 Pacific/Kwajalein
GMT+12:00 Pacific/Majuro
GMT+12:00 Pacific/Nauru
GMT+12:00 Pacific/Norfolk
GMT+12:00 Pacific/Tarawa
GMT+12:00 Pacific/Wake
GMT+12:00 Pacific/Wallis
GMT+13:00 Antarctica/McMurdo
GMT+13:00 Etc/GMT-13
GMT+13:00 Pacific/Auckland
GMT+13:00 Pacific/Enderbury
GMT+13:00 Pacific/Fakaofo
GMT+13:00 Pacific/Tongatapu
GMT+13:45 Pacific/Chatham
GMT+14:00 Etc/GMT-14
GMT+14:00 Pacific/Apia
GMT+14:00 Pacific/Kiritimati