fetch_url
Ambil dan hurai halaman web dengan pengendalian ubah hala automatik, kawalan tamat masa dan pengepala tersuai. Sesuai untuk mendapatkan kandungan HTML daripada mana-mana URL yang boleh diakses umum.
Kes Penggunaan
Mendapatkan Kandungan Halaman
Ambil kandungan HTML daripada mana-mana halaman web untuk pemprosesan atau analisis lanjut
Pengambilan Data API
Buat permintaan GET ke API REST dan dapatkan respons JSON
Semakan Kesihatan
Pantau ketersediaan tapak web dan masa respons
Muat Turun Mudah
Muat turun aset statik, dokumen atau kandungan halaman
Endpoint
/api/v1/tools/fetch_urlParameters
| Name | Type | Required | Default | Description |
|---|---|---|---|---|
url | string | Required | - | URL untuk diambil (mesti termasuk protokol: http:// atau https://) Example: https://example.com |
headers | object | Optional | - | Pengepala HTTP tersuai untuk disertakan dalam permintaan Example: {"Accept": "text/html", "User-Agent": "MyBot/1.0"} |
timeout | number | Optional | 10000 | Tamat masa permintaan dalam milisaat (1000-30000) Example: 15000 |
follow_redirects | boolean | Optional | true | Sama ada untuk mengikuti ubah hala HTTP secara automatik Example: true |
user_agent | string | Optional | - | Pengepala User-Agent tersuai (mengatasi lalai) Example: Mozilla/5.0 (compatible; CrawlBot/1.0) |
respect_robots | boolean | Optional | true | Hormati robots.txt tapak sasaran. Dibiarkan pada `true`, laluan yang dilarang untuk `CrawlForge` ditolak dengan 403 sebelum apa-apa diambil dan tiada credits dicaj. Tetapkan kepada `false` hanya untuk sasaran yang anda mempunyai perjanjian sendiri dengannya — respons kemudiannya membawa entri `warnings` dan tindakan mengatasi itu direkodkan pada API key anda. Example: true |
Contoh Permintaan
cURL
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
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
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']}")Contoh Respons
{ "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", "response_time_ms": 245 }, "credits_used": 1, "credits_remaining": 999, "processing_time": 245}data.urlURL asal yang dimintadata.statusKod status HTTP bagi responsdata.contentKandungan HTML penuh halamandata.content_lengthSaiz kandungan dalam baitdata.final_urlURL akhir selepas mengikuti ubah haladata.response_time_msBerapa lama sasaran mengambil masa untuk membalas dan menghantar badannya, dalam milisaatcredits_usedCredits ditolak untuk permintaan ini (1 setiap pengambilan)credits_remainingBaki credit anda yang masih adaPengendalian Ralat
URL Tidak Sah (400 Bad Request)
Format URL tidak sah. Pastikan ia termasuk protokol (http:// atau https://)
Ralat Tamat Masa (500 Internal Server Error)
Permintaan mengambil masa lebih lama daripada tamat masa yang ditentukan. Cuba tingkatkan parameter timeout.
Credits Tidak Mencukupi (402 Payment Required)
Akaun anda tidak mempunyai credits yang mencukupi. Beli lebih banyak credits atau naik taraf pelan anda.
Had Kadar Dilampaui (429 Too Many Requests)
Anda telah melampaui had kadar pelan anda. Tunggu sebentar atau naik taraf pelan anda untuk had yang lebih tinggi.
Disekat oleh robots.txt (403 Forbidden)
robots.txt tapak sasaran melarang laluan ini untuk CrawlForge. Tetapkan respect_robots: false untuk mengatasinya jika anda mempunyai perjanjian sendiri dengan sasaran — tindakan mengatasi itu direkodkan pada API key anda. Tindakan mengatasi itu tidak sampai kepada hos yang berada dalam senarai penarikan diri kekal CrawlForge, yang ditolak tanpa mengira nilai respect_robots.
Kos Credit
Free Plan: 1,000 credit percubaan sekali sahaja = 1,000 permintaan
Hobby Plan: 5,000 credits/bulan = 5,000 permintaan ($19/bln)
Professional Plan: 50,000 credits/bulan = 50,000 permintaan ($99/bln)
Business Plan: 250,000 credits/bulan = 250,000 permintaan ($399/bln)