# 启动浏览器会话
浏览器会话（Session）是浏览器沙箱中执行自动化任务的基本单元，每个会话相互隔离。本章介绍如何通过SDK启动浏览器会话。
在启动一个新的浏览器会话时，您可以指定加载某个已存在的配置文件，使会话在创建后立即恢复至该配置文件保存的状态。加载的配置文件包括 Cookie、LocalStorage、SessionStorage、登录凭证等浏览器状态数据，使 Agent 无需每次会话都重新登录目标网站。
#### 约束与限制
- 会话默认空闲超时900秒，超过该时间无操作将自动终止。
- 会话最大持续时间为24小时。
- 单次invoke请求体上限为10 MB。
- 一个会话创建时只能加载一个配置文件ID；多会话可共用同一配置文件但相互隔离。
- 域名访问限制 创建会话时，您可以配置域名访问白名单和黑名单，限制浏览器会话可访问的网络范围，满足租户合规与防越权要求。
  - 白名单（allowed_domains）：仅允许访问白名单中的域名，其余域名一律拦截。
  
  - 黑名单（blocked_domains）：禁止访问黑名单中的域名，其余域名正常放行。
  
  
  **示例**：租户希望Agent只能访问内部知识库 \*.tenant.com，同时禁止访问广告和社交平台，可将 \*.tenant.com 加入白名单，将广告和社交平台等加入黑名单。
  白名单和黑名单可单独使用，也可组合使用。当同时配置时，请求需同时满足"在白名单中"且"不在黑名单中"才允许访问。
  
 
#### 前提条件
在会话中加载配置文件时，已创建至少一个浏览器配置文件（Profile），具体请参见[新建配置文件](https://support.huaweicloud.com/highcode-agentarts/agentarts_10_177.html)。
#### 启动会话
1. 确保已安装agentarts-sdk包，且Python版本不低于3.10。
2. 配置环境变量 AGENTARTS_BROWSER_DATA_ENDPOINT，值为 http://{浏览器沙箱域名}。 
   浏览器域名获取如下：
   1. 单击浏览器名称。
   
   2. 进入"配置信息"页面后，获取域名。
      图1获取沙箱域名   
      ![](https://support.huaweicloud.com/highcode-agentarts/zh-cn_image_0000002711683136.png "点击放大") 
    
   
   
3. 使用 browser_session 上下文管理器启动会话，会话在代码块执行完毕后自动终止。 
   获取API_KEY请参考[如何获取浏览器的API_KEY](https://support.huaweicloud.com/highcode-agentarts/agentarts_10_225.html)。
   获取配置文件ID请参考[如何获取浏览器配置文件的ID](https://support.huaweicloud.com/highcode-agentarts/agentarts_10_230.html)。
   API_KEY认证代码示例如下：
   ```
   from agentarts.sdk.tools import Browser
   # 创建浏览器客户端
   client = Browser(region="cn-southwest-2", auth_type="API_KEY", verify_ssl=False)
   # 启动会话并加载配置文件
   client.start_session(
       browser_name="your_browser_name",
       session_name="your_session_name",
       api_key="your_api_key",
       profile_configuration={"profile_id": "your_profile_id"}
   )
   ```
   IAM认证代码示例如下：
   ```
   from agentarts.sdk.tools import Browser
   # 创建浏览器客户端（使用IAM认证）
   client = Browser(region="cn-southwest-2", auth_type="IAM", verify_ssl=False)
   # 启动会话并加载配置文件
   client.start_session(
       browser_name="your_browser_name",
       session_name="your_session_name",
       profile_configuration={"profile_id": "your_profile_id"}
   )
   ```
   
   
 
#### 会话状态说明
| 状态 | 说明                       |
|:---|:---|
| 运行中   | 会话正在执行自动化任务，可查看实时画面、可终止。 |
| 已终止   | 会话已结束，实时画面与终止操作均不可用。      |
   
