# Network

> HTTP 网络请求与网页正文读取工具。提供 http_get/http_post 原始请求，以及 web_read 网页文字/Markdown 读取；支持 public/local/private/all 网络作用域控制。

- Skill: `kesepain-ke/network` (Agent Skill, multi-file: 3 files)
- Install (CLI): `npx skillmds@latest add kesepain-ke/network`
- Raw SKILL.md: https://api.skillmd.com/api/skills/kesepain-ke/network/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Docs & Writing
- Author: kesepain-ke (https://skillmd.com/u/kesepain-ke)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/kesepain-ke/network

---


# 网络请求与网页读取 (Network)

`network` 提供原始 HTTP 请求和网页正文读取能力。

## 插件路径

`plugins/network/`

## 注册工具

| 工具 | 用途 | 返回内容 |
|------|------|----------|
| `http_get` | API、JSON、源码、状态调试 | 原始响应 |
| `http_post` | 调用接口、提交 JSON、提交表单 | 原始响应 |
| `web_read` | 读文章、博客、新闻、文档、本地 Web 页面 | 可读正文文本或 Markdown |

## 工具边界

用户明确要 HTTP 原始响应、API 返回、JSON、源码、状态码、响应头、接口调试时，使用 `http_get`。

用户要向接口发送 POST 请求、提交 JSON、提交表单、调用 API 时，使用 `http_post`。

用户要阅读网页正文、总结网页、提取文章内容、读取本地 Web 页面或网页转 Markdown 时，使用 `web_read`。

## web_read

`web_read` 返回给人阅读的正文内容，不返回网页源码。优先 direct 抓取并在本地解析 HTML；公网 URL 在 direct 失败、内容为空或疑似 403/CAPTCHA/Cloudflare 时，按需尝试第三方 reader 服务。

### 参数

| 参数 | 类型 | 必需 | 默认值 | 说明 |
|------|------|------|--------|------|
| `url` | string | 是 | — | 要读取的网页 URL，仅支持 http/https |
| `strategy` | string (enum) | 否 | `"auto"` | `auto` 先 direct 后 reader / `direct` 只本地解析 / `reader` 只用 reader 服务 |
| `reader_service` | string (enum) | 否 | `"auto"` | `auto` / `jina` (r.jina.ai) / `markdown_new` (markdown.new) / `defuddle` (defuddle.md) |
| `network_scope` | string | 否 | `"public"` | 网络作用域：public / local / private / all |
| `max_chars` | integer | 否 | 12000 | 返回正文最大字符数，上限 30000 |
| `headers` | string | 否 | — | JSON 格式请求头，仅 direct 抓取时使用 |

### 结果说明

- 成功：返回网页正文文本或 Markdown
- 失败：返回 `ERROR:` 前缀的错误信息

## network_scope

`http_get`、`http_post`、`web_read` 都支持 `network_scope`：

| network_scope | 允许访问 |
|---------------|----------|
| `public` | 仅公网 |
| `local` | `localhost`、`127.0.0.1`、`::1` |
| `private` | 局域网地址，如 `192.168.x.x`、`10.x.x.x`、`172.16.x.x`、`.lan` 解析出的内网地址 |
| `all` | 公网 + local + private |

未显式传入时读取用户配置或环境变量，默认 `public`。

## 安全约束

- 仅允许 http/https 协议
- DNS 解析后二次校验 IP，防 DNS rebinding
- 云元数据地址始终禁止访问，即使 `network_scope=all`
- local/private 地址只能 direct 读取，禁止通过第三方 reader 服务转发
- 超时遵循 `tool.tool_timeout` 配置优先级

## 常见规范

- 读网页正文用 `web_read`，不用 `http_get`（后者返回原始 HTML 源码）
- 调用 API 获取 JSON 数据用 `http_get`/`http_post`，不用 `web_read`
- `headers` 参数为 JSON 字符串格式，如 `{"Authorization": "Bearer xxx"}`

## 常见处理办法

- **403/CAPTCHA/Cloudflare**：切换 `strategy="reader"` 使用第三方 reader 服务
- **内网访问被拒**：显式传入 `network_scope="local"` 或 `"private"` 或 `"all"`
- **内容截断**：增大 `max_chars`（上限 30000）
- **请求超时**：检查 `tool.tool_timeout` 配置

## 常见教训

- `web_read` 不返回网页源码，只返回正文；需要源码时用 `http_get`
- local/private 地址禁止通过第三方 reader 服务转发，会泄露内网信息
- `network_scope` 未配置时默认 `public`，访问内网需显式指定
