CrawlForge
基础工具1 credit

fetch_url

抓取并解析网页,支持自动处理重定向、超时控制和自定义请求头。非常适合从任何可公开访问的 URL 获取 HTML 内容。

使用场景

获取页面内容

从任意网页抓取 HTML 内容,用于后续处理或分析

获取 API 数据

向 REST API 发起 GET 请求并获取 JSON 响应

健康检查

监控网站可用性和响应时间

简单下载

下载静态资源、文档或页面内容

Endpoint

POST/api/v1/tools/fetch_url
Auth Required
Free 计划 2 req/s
1 credit

Parameters

NameTypeRequiredDefaultDescription
url
stringRequired-
要抓取的 URL(必须包含协议:http:// 或 https://)
Example: https://example.com
headers
objectOptional-
请求中要包含的自定义 HTTP 请求头
Example: {"Accept": "text/html", "User-Agent": "MyBot/1.0"}
timeout
numberOptional10000
请求超时时间,单位毫秒(1000-30000)
Example: 15000
follow_redirects
booleanOptionaltrue
是否自动跟随 HTTP 重定向
Example: true
user_agent
stringOptional-
自定义 User-Agent 请求头(覆盖默认值)
Example: Mozilla/5.0 (compatible; CrawlBot/1.0)

请求示例

cURL

terminalBash
curl -X POST https://crawlforge.dev/api/v1/tools/fetch_url \
  -H "X-API-Key: cf_test_YOUR_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "url": "https://example.com",
    "timeout": 15000,
    "follow_redirects": true
  }'

TypeScript

fetchUrl.tsTypescript
const response = await fetch('https://crawlforge.dev/api/v1/tools/fetch_url', {
  method: 'POST',
  headers: {
    'X-API-Key': process.env.CRAWLFORGE_API_KEY!,
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    url: 'https://example.com',
    timeout: 15000,
    headers: {
      'Accept': 'text/html',
      'Accept-Language': 'en-US'
    }
  }),
});

const data = await response.json();

if (data.success) {
  console.log('Page fetched:', data.data.url);
  console.log('Status:', data.data.status);
  console.log('Content length:', data.data.content_length);
  console.log('Credits used:', data.credits_used);
  console.log('Credits remaining:', data.credits_remaining);
} else {
  console.error('Error:', data.error);
}

Python

fetch_url.pyPython
import requests
import os

response = requests.post(
    'https://crawlforge.dev/api/v1/tools/fetch_url',
    headers={
        'X-API-Key': os.environ['CRAWLFORGE_API_KEY'],
        'Content-Type': 'application/json',
    },
    json={
        'url': 'https://example.com',
        'timeout': 15000,
        'headers': {
            'Accept': 'text/html',
            'Accept-Language': 'en-US'
        }
    }
)

data = response.json()

if data['success']:
    print(f"Page fetched: {data['data']['url']}")
    print(f"Status: {data['data']['status']}")
    print(f"Content length: {data['data']['content_length']}")
    print(f"Credits used: {data['credits_used']}")
    print(f"Credits remaining: {data['credits_remaining']}")
else:
    print(f"Error: {data['error']}")

响应示例

200 OK245ms
{
"success": true,
"data": {
"url": "https://example.com",
"status": 200,
"status_text": "OK",
"headers": {
"content-type": "text/html; charset=UTF-8",
"content-length": "1256",
"server": "nginx"
},
"content": "Example Domain......",
"content_length": 1256,
"content_type": "text/html; charset=UTF-8",
"redirected": false,
"final_url": "https://example.com"
},
"credits_used": 1,
"credits_remaining": 999,
"processing_time": 245
}
Field Descriptions
data.url请求的原始 URL
data.status响应的 HTTP 状态码
data.content页面的完整 HTML 内容
data.content_length内容大小,单位字节
data.final_url跟随重定向后的最终 URL
credits_used本次请求扣除的 credits(每次抓取 1 个)
credits_remaining你剩余的 credit 余额

错误处理

无效 URL(400 Bad Request)

URL 格式无效。请确保它包含协议(http:// 或 https://)

超时错误(500 Internal Server Error)

请求耗时超过了指定的超时时间。请尝试增大 timeout 参数。

credits 不足(402 Payment Required)

你的账户 credits 不足。购买更多 credits 或 升级你的计划。

超出速率限制(429 Too Many Requests)

你已超出计划的速率限制。请稍候片刻,或 升级你的计划 以获得更高的限额。

专业提示: 生产环境应用应始终实现带指数退避的重试逻辑。最佳实践请参阅我们的 错误处理指南。

credit 费用

1 credit
每次请求 1 credit
每次成功的 fetch_url 请求花费 1 credit,与页面大小或响应时间无关。

Free 计划: 1,000 个一次性试用 credits = 1,000 次请求

Hobby 计划: 每月 5,000 credits = 5,000 次请求($19/mo)

Professional 计划: 每月 50,000 credits = 50,000 次请求($99/mo)

Business 计划: 每月 250,000 credits = 250,000 次请求($399/mo)

相关工具

extract_text
从抓取的 HTML 内容中提取干净文本(1 credit)
extract_links
从抓取的页面中发现所有链接(1 credit)
extract_metadata
提取 OpenGraph、Twitter Card 和 meta 标签(1 credit)
scrape_structured
使用 CSS 选择器提取结构化数据(2 credits)
准备好试用 fetch_url 了吗?免费注册,获取 1,000 credits 开始构建。