PRNT REST API
التوثيق ومجموعات التطوير SDK
ادمج التقاط الويب البرمجي في تطبيقاتك خلال دقائق. تصميم RESTful، استجابات JSON، وخطافات ويب موقعة بـ HMAC.
معالجة في أقل من 50 مللي ثانية
خوادم Chromium جاهزة ومسخنة مسبقاً عبر 12 عقدة طرفية عالمية مع تخزين CDN فوري للطلبات المتكررة.
بنية DOM مطابقة تماماً للبكسل
تنفيذ كامل لجافا سكريبت، إطارات WebGL، تمرير لانهائي، مضاعفات Retina، وإغلاق تلقائي لإشعارات ملفات تعريف الارتباط.
أمان وحماية معززة
حماية آلية من SSRF، حاويات Docker معزولة أحادية الاستخدام، عدم حفظ ملفات تعريف الارتباط للهدف، وتشفير TLS 1.3 256-bit.
مكتبات SDK متعددة اللغات
مكتبات برمجية ونماذج جاهزة للنسخ بلغات cURL وPython وNode.js وPHP وGo مع معلمات محددة النوع.
01 دليل البدء السريع
أرسل أول طلب لقطة شاشة برمجي في أقل من 60 ثانية باستخدام واجهة RESTful API الخاصة بنا:
- سجل للحصول على حساب مطور مجاني للحصول على مفتاح API الفعلي.
- انتقل إلى لوحة تحكم مفاتيح API لنسخ رمز Bearer الخاص بك.
- أرسل طلب HTTP POST إلى نقطة النهاية
/v1/captureمع رابط الموقع المطلوب.
# Request full-page PNG screenshot
curl -X POST "https://api.prnt.tr/v1/capture" \
-H "Authorization: Bearer prnt_live_your_api_key_here" \
-H "Content-Type: application/json" \
-d '{
"url": "https://github.com",
"format": "png",
"full_page": true,
"viewport": { "width": 1920, "height": 1080 }
}' --output screenshot.png
import requests
url = "https://api.prnt.tr/v1/capture"
headers = {
"Authorization": "Bearer prnt_live_your_api_key_here",
"Content-Type": "application/json"
}
payload = {
"url": "https://github.com",
"format": "png",
"full_page": True
}
response = requests.post(url, json=payload, headers=headers)
with open("screenshot.png", "wb") as f:
f.write(response.content)
print("Screenshot saved successfully!")
import fs from 'fs/promises';
const response = await fetch('https://api.prnt.tr/v1/capture', {
method: 'POST',
headers: {
'Authorization': 'Bearer prnt_live_your_api_key_here',
'Content-Type': 'application/json'
},
body: JSON.stringify({
url: 'https://github.com',
format: 'png',
full_page: true
})
});
const buffer = Buffer.from(await response.arrayBuffer());
await fs.writeFile('screenshot.png', buffer);
console.log('Screenshot captured successfully.');
<?php
$apiKey = 'prnt_live_your_api_key_here';
$ch = curl_init('https://api.prnt.tr/v1/capture');
curl_setopt_array($ch, [
CURLOPT_POST => true,
CURLOPT_HTTPHEADER => [
"Authorization: Bearer {$apiKey}",
"Content-Type: application/json"
],
CURLOPT_POSTFIELDS => json_encode([
'url' => 'https://github.com',
'format' => 'png',
'full_page' => true
]),
CURLOPT_RETURNTRANSFER => true
]);
$image = curl_exec($ch);
file_put_contents('screenshot.png', $image);
curl_close($ch);
02 المصادقة والأمان
يقوم PRNT بمصادقة طلبات API عبر رموز Bearer المشفرة. قم بتضمين مفتاحك في ترويسة Authorization لكل طلب:
03 الرابط الأساسي وتنسيقات المحتوى
تُقدم جميع نقاط نهاية API بأمان عبر بروتوكول TLS 1.3. نقطة الدخول الرسمية هي:
يدعم PRNT ترميزات صور متعددة للمخرجات مخصصة للويب والطباعة والأرشفة:
| التنسيق | نوع MIME | أفضل حالات الاستخدام |
|---|---|---|
png |
image/png |
الافتراضي. جودة بدون فقدان، مثالية للنصوص الواضحة، عناصر واجهة المستخدم، والخلفيات الشفافة. |
jpeg / jpg |
image/jpeg |
حجم ملف محسن للمواقع المليئة بالصور مع إمكانية تعديل quality (1-100). |
webp |
image/webp |
تنسيق ويب حديث عالي الضغط بحجم ملف أصغر بنسبة تصل إلى 30% مقارنة بـ JPEG. |
pdf |
application/pdf |
تصدير مستندات متجهة متعددة الصفحات للفواتير والامتثال القانوني والطباعة الأرشيفية. |
04 POST /v1/capture
نقطة النهاية البرمجية الأساسية لتحويل صفحات الويب إلى صور أو مستندات عالية الدقة.
معلمات الطلب (جسم JSON)
| المعلمة | النوع | الحالة | الوصف والقيمة الافتراضية |
|---|---|---|---|
url |
string | مطلوب | الرابط الكامل لصفحة الويب المستهدفة (يجب أن يبدأ بـ https:// أو http://). |
format |
string | اختياري | png (افتراضي), jpeg, webp, أو pdf. |
full_page |
boolean | اختياري | التمرير التلقائي عبر عناصر DOM المؤجلة لالتقاط ارتفاع الصفحة بالكامل. القيمة الافتراضية false. |
viewport.width |
integer | اختياري | عرض نافذة المتصفح بالبكسل. القيمة الافتراضية 1920. |
viewport.height |
integer | اختياري | ارتفاع نافذة المتصفح بالبكسل. القيمة الافتراضية 1080. |
delay |
integer | اختياري | وقت الانتظار بالمللي ثانية بعد تحميل DOM قبل التقاط الصورة (0 إلى 10000 مللي ثانية). القيمة الافتراضية 0. |
dark_mode |
boolean | اختياري | محاكاة استعلامات وسائط CSS للوضع الداكن prefers-color-scheme: dark. القيمة الافتراضية false. |
block_cookie_banners |
boolean | اختياري | الكشف التلقائي وإزالة نوافذ الموافقة المزعجة لـ GDPR وملفات تعريف الارتباط. القيمة الافتراضية true. |
custom_css |
string | اختياري | حقن قواعد CSS مخصصة قبل الالتقاط (مثال: .announcement { display: none; }). |
custom_js |
string | اختياري | تنفيذ كود JavaScript مخصص من جانب العميل قبل التقاط الشاشة. |
05 رموز استجابة HTTP والأخطاء
يرجع PRNT رموز استجابة HTTP قياسية مصحوبة ببيانات أخطاء JSON مهيكلة:
| رمز HTTP | ثابت الخطأ | السبب والحل |
|---|---|---|
200 OK |
SUCCESS | تمت معالجة لقطة الشاشة بنجاح وإرجاعها كصورة ثنائية أو رابط CDN. |
400 Bad Request |
INVALID_PARAMETER | رابط الموقع مفقود، أو الأبعاد غير صالحة، أو بنية JSON غير صحيحة. |
401 Unauthorized |
INVALID_API_KEY | رمز Bearer مفقود أو تم إلغاؤه في ترويسة الطلب. |
403 Forbidden |
DOMAIN_BLOCKED | النطاق المطلوب ينتهك سياسة الاستخدام المقبول أو تم حظره بواسطة جدار حماية SSRF. |
429 Too Many Requests |
RATE_LIMIT_EXCEEDED | تم الوصول إلى الحد الأقصى لطلبات خطتك أو سعة التزامن. قم بترقية خطتك للمتابعة. |
504 Gateway Timeout |
RENDER_TIMEOUT | فشلت الصفحة المستهدفة في الاستجابة أو العرض خلال المهلة المحددة بـ 30 ثانية. |
06 أمثلة كود ومكتبات SDK
استكشف نماذج برمجية جاهزة للدمج لمكتباتنا الرسمية وعملاء HTTP:
package main
import (
"bytes"
"encoding/json"
"io"
"net/http"
"os"
)
func main() {
payload, _ := json.Marshal(map[string]interface{}{
"url": "https://github.com",
"format": "png",
"full_page": true,
})
req, _ := http.NewRequest("POST", "https://api.prnt.tr/v1/capture", bytes.NewBuffer(payload))
req.Header.Set("Authorization", "Bearer prnt_live_your_api_key_here")
req.Header.Set("Content-Type", "application/json")
resp, err := http.DefaultClient.Do(req)
if err != nil {
panic(err)
}
defer resp.Body.Close()
out, _ := os.Create("screenshot.png")
defer out.Close()
io.Copy(out, resp.Body)
}
# pip install prnt-sdk
from prnt import PrntClient
client = PrntClient(api_key="prnt_live_your_api_key_here")
screenshot = client.capture(
url="https://github.com",
format="png",
full_page=True,
dark_mode=True,
delay=500
)
screenshot.save("github_dark.png")
// npm install @prnt/sdk
import { PrntClient } from '@prnt/sdk';
const prnt = new PrntClient({ apiKey: 'prnt_live_your_api_key_here' });
const image = await prnt.capture({
url: 'https://github.com',
format: 'webp',
fullPage: true,
blockCookieBanners: true
});
await image.save('output.webp');