# 终止浏览器会话
本章介绍如何终止正在运行的浏览器会话，提供从会话详情页、会话列表以及SDK等方式终止浏览器会话。
#### 通过控制台在会话列表终止
1. 登录[AgentArts智能体平台](https://console.huaweicloud.com/agentarts/#/home/overview)。

2. 在左侧导航栏选择"托管与运行 \> 浏览器"，进入浏览器界面。
3. 单击已创建的浏览器名称。
4. 在"会话管理"页签，单击"运行中"的会话列表中操作列的"终止会话"。
5. 会话立即终止，状态变更为"已终止"。
 
#### 通过控制台在会话详情页终止
1. 在"会话管理"页签，单击"运行中"的会话列表中操作列的"查看实时会话"。
2. 进入会话详情页面。
3. 单击"终止会话" 按钮。
4. 会话立即终止，状态变更为"已终止"。
 
#### 通过SDK终止浏览器会话
浏览器支持通过SDK终止浏览器会话。SDK提供stop_session接口用于终止当前浏览器会话，释放浏览器资源。
**方式一：直接调用stop_session方法**
在Python文件中通过SDK直接调用stop_session方法终止浏览器会话。
- **方法名**：stop_session
 
- **参数说明** ：
  
  | 参数名       | 类型   | 描述                                                                                             |
  |:---|:---|:---|
  | api_key | str | API Key认证密钥。当使用API_KEY认证方式时，如果未提供此参数，SDK会尝试从环境变量HUAWEICLOUD_SDK_BROWSER_API_KEY获取。Default：None |
     
  
- **返回值** ：
  bool: 成功终止会话或无活跃会话时返回True。
  
- **行为说明** ：
  - 如果当前没有活跃会话（session_id为空），方法会立即返回True（no-op操作）。
  
  - 成功终止会话后，SDK会清空会话相关状态（session_id、browser_name、automation_endpoint、live_view_endpoint）。
  
  
  
  - 支持两种认证方式：API_KEY和IAM（AK/SK）
  
  
  **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"
  )
  # 执行浏览器操作...
  # 终止会话
  success = client.stop_session(api_key="your_api_key")
  print(f"会话终止结果: {success}")
  ```
  **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"
  )
  # 执行浏览器操作...
  # 终止会话（IAM认证无需传递api_key）
  success = client.stop_session()
  print(f"会话终止结果: {success}")
  ```
  
**方式二：使用上下文管理器自动终止**
推荐使用browser_session上下文管理器，它会在退出时自动终止会话，无需手动调用stop_session。
- **browser_session 参数说明** ：
  
  | 参数名                    | 类型           | 描述                                                                    |
  |:---|:---|:---|
  | region                 | str          | Required 区域名称，如 "cn-southwest-2"。                                    |
  | browser_name            | str          | Required 浏览器沙箱名称。                                                      |
  | session_name              | str          | Required 客户端指定的会话名称，只能包含字母、数字、下划线和中划线，长度1-128。                         |
  | session_id                | str           | 客户端指定的会话ID，不传则由服务端生成。Default：None                                      |
  | viewport              | Dict          | 视口配置，如 {"width": 1920, "height": 1080}。Default：None                     |
  | profile_configuration | Dict          | 配置档案配置，格式为 {"profile_id": "your_profile_id"}。Default：None             |
  | allowed_domains        | List\[str\]  | 允许访问的域名列表。与 blocked_domains 互斥。Default：None                            |
  | blocked_domains        | List\[str\] | 禁止访问的域名列表。与 allowed_domains 互斥。Default：None                            |
  | proxy_configuration   | Dict          | 代理配置。Default：None                                                      |
  | session_timeout          | int           | 会话超时时间（秒），默认900秒（15分钟）。Default：900                                     |
  | auth_type               | str           | 认证类型，支持 "API_KEY" 或 "IAM"。Default："API_KEY"                            |
  | api_key                 | str           | API_KEY模式下的认证密钥。也可通过环境变量HUAWEICLOUD_SDK_BROWSER_API_KEY设置。Default：None |
  | verify_ssl               | bool/str    | SSL证书验证。True验证、False跳过、或字符串指向CA包路径。Default：True                         |
     
  
- 支持两种认证方式：API_KEY和IAM（AK/SK） **API KEY代码示例**
  ```
  from agentarts.sdk.tools import browser_session
  api_key = "your_actual_api_key"  # your api key
  with browser_session(
      "cn-southwest-2",
      "your_browser_name",
      "your_session_name",
      api_key=api_key,
      profile_configuration={"profile_id": "your_profile_id"}  # 加载配置文件
  ) as browser_client:
      response = browser_client.navigate(
          url="https://example.com",
          api_key=api_key
      )
  # 退出with块时，会话自动终止
  ```
  **IAM代码示例**
  ```
  from agentarts.sdk.tools import browser_session
  # Please configure the HUAWEICLOUD_SDK_AK/HUAWEICLOUD_SDK_SK in your environment variables in advance.
  with browser_session(
      "cn-southwest-2",
      "your_browser_name",
      "your_session_name",
      auth_type="IAM",
      profile_configuration={"profile_id": "your_profile_id"}  # 加载配置文件
  ) as browser_client:
      response = browser_client.navigate(url="https://example.com")
  # 退出with块时，会话自动终止
  ```
  
**注意事项**
1. 资源释放：终止会话会释放浏览器沙箱资源，建议在完成所有浏览器操作后及时终止会话
2. 幂等性：多次调用stop_session是安全的，如果没有活跃会话，方法会返回True
3. 状态清空：终止会话后，Browser实例的会话相关状态会被清空，如需再次使用需重新启动会话
4. 认证方式：
   - API_KEY认证：需要传递api_key参数或设置环境变量HUAWEICLOUD_SDK_BROWSER_API_KEY
   
   - IAM认证：需要配置环境变量HUAWEICLOUD_SDK_AK和HUAWEICLOUD_SDK_SK
    
5. 超时机制：即使未主动终止会话，会话也会在超时后自动终止（默认超时时间为900秒/15分钟）
 
