Genel bakış
Yerel API, profilleri kendi betiklerinizle toplu olarak yönetmek için tasarlanmış bir Prism Pro özelliğidir: Kendi verilerinize göre profil oluşturun, profilleri sırayla başlatın, durumlarını kontrol edin ve işiniz bitince kapatın. Yalnızca profillerin kendisini yönetir; çerezleri, şifreleri, proxy kimlik bilgilerini ve sayfa içeriğini okumaz, Puppeteer / Playwright için hata ayıklama uç noktası da sağlamaz. Yapay zekanın web sayfalarını okumasını, tıklamasını ve form doldurmasını istiyorsanız MCP kullanın.
| Konu | Açıklama |
|---|---|
| Adres | http://127.0.0.1:<port>; bağlantı noktası her başlatmada rastgele atanır ve yalnızca bu bilgisayardan gelen istekler kabul edilir |
| Kimlik doğrulama | Authorization: Bearer <token> istek başlığı; belirteç API başlatıldığında bir kez gösterilir ve API durdurulunca geçersiz olur |
| Veri biçimi | JSON (UTF-8); başarılı yanıtlarda sonuç result alanında yer alır |
| İstek gövdesi | Yalnızca oluşturma uç noktaları JSON istek gövdesi kabul eder; en fazla 96 KiB |
| Hız sınırı | 60 saniyede en fazla 120 istek; bu sınır MCP ile ortaktır |
| Zaman aşımı | Her istek için en fazla 60 saniye beklenir |
| Kullanılabilirlik | Prism Pro; macOS ve Windows istemcilerinde aynıdır; oluşturma uç noktaları 0.3.22 veya üzeri bir sürüm gerektirir |
Hızlı başlangıç
Yerel API'yi başlatın
Prism'in sol tarafındaki “Otomasyon API'si” öğesini açın ve “Yerel API'yi başlat” düğmesine tıklayın. Bu özellik Prism Pro gerektirir.
Adresi ve belirteci kopyalayın
Pencerede “API adresi” ve “Bu oturumun erişim belirteci” gösterilir. Belirteç yalnızca API başarıyla başlatıldığında bir kez gösterilir, bu yüzden hemen kopyalayın; daha sonra yeni bir belirteç gerekirse API'yi durdurup yeniden başlatın.
İlk isteğinizi gönderin
Bir terminalde iki değişken tanımlayın, ardından hizmet durumunu kontrol edip profillerinizi listeleyin. Yanıtta
"state": "running"varsa adres ve belirteç çalışıyor demektir.
PRISM_API='http://127.0.0.1:43123' # the API address shown in Prism
PRISM_TOKEN='<token>' # the token shown in Prism
curl -H "Authorization: Bearer $PRISM_TOKEN" "$PRISM_API/v1/status"
curl -H "Authorization: Bearer $PRISM_TOKEN" "$PRISM_API/v1/profiles"Windows PowerShell'de curl başka bir komutun takma adıdır; bunun yerine curl.exe yazın veya PowerShell'in yerleşik Invoke-RestMethod komutunu kullanın:
$api = 'http://127.0.0.1:43123'
$headers = @{ Authorization = 'Bearer <token>' }
(Invoke-RestMethod -Uri "$api/v1/profiles" -Headers $headers).result | Format-Table serialNumber, name, statusİstek kuralları
API yalnızca bu bilgisayardaki betiklerin veya programların gönderdiği istekleri kabul eder. Aşağıdaki kurallardan birine uymayan istek yürütülmez ve tabloda gösterilen hatayı döndürür:
| Kural | HTTP | Hata |
|---|---|---|
localhost yerine 127.0.0.1 kullanın: Host istek başlığı API adresiyle birebir aynı olmalıdır | 403 | invalid_host |
Her istekte Authorization: Bearer <token> gönderin | 401 | unauthorized |
| Tarayıcının Origin başlığı bulunmamalıdır; bu nedenle web sayfalarındaki ve tarayıcı uzantılarındaki JavaScript API'yi çağıramaz | 403 | browser_origin_not_allowed |
URL'de sorgu parametresi bulunmamalıdır (?…) | 400 | query_not_allowed |
| Yalnızca aşağıda listelenen yolları ve yöntemleri kullanın | 404 | not_found |
Yalnızca oluşturma uç noktaları istek gövdesi kabul eder; başlatma, kapatma ve diğer istekler {} bile gönderemez | 400 | body_not_allowed |
Oluşturma uç noktaları Content-Type: application/json kullanır; istek gövdesi bir JSON nesnesidir | 400 | json_body_required / invalid_json_body |
| İstek gövdesi en fazla 96 KiB olabilir | 413 | request_too_large |
| 60 saniyede en fazla 120 istek; başarısız istekler ve MCP istekleri de sayılır | 429 | rate_limited |
Prism, yerel API ve MCP isteklerini geliş sırasına göre tek tek işler. Bir profili başlatmak, proxy testi ve tarayıcının açılması nedeniyle genellikle birkaç saniye sürer; bu süre içinde sonraki istekler kuyrukta bekler. Bir sonraki isteği göndermeden önce öncekinin yanıtını bekleyin.
Uç noktalar
| Yöntem | Yol | İşlev |
|---|---|---|
| GET | /v1/status | Hizmetin kullanılabilir olup olmadığını kontrol eder |
| GET | /v1/profiles | Tüm profilleri listeler (çöp kutusundakiler hariç) |
| GET | /v1/profiles/{id}/status | Tek bir profili sorgular |
| POST | /v1/profiles/{id}/start | Profili başlatır |
| POST | /v1/profiles/{id}/close | Profili kapatır; verileri korunur |
| POST | /v1/profiles | Tek bir profil oluşturur (0.3.22'den itibaren) |
| POST | /v1/profiles/batch | Tek seferde 1–50 profil oluşturur (0.3.22'den itibaren) |
{id} bir profil kimliğidir ve GET /v1/profiles sonucundan alınabilir. Tüm başarılı yanıtların HTTP durumu 200'dür; GET /v1/status dışında sonuç result alanında yer alır. API'de profil düzenleme veya silme uç noktası yoktur.
Profil nesnesi
Profil listesi, profil durumu, başlatma ve kapatma uç noktalarının hepsi aynı profil nesnesini döndürür:
| Alan | Tür | Açıklama |
|---|---|---|
id | dize | Profil kimliği; diğer uç noktalarda kullanılır |
serialNumber | tamsayı | Uygulamada gösterilen profil numarası; profil silinse bile yeniden kullanılmaz |
name | dize | Profil adı |
group | dize | Grup; profil bir gruba ait değilse boş dize |
tags | dize dizisi | Etiketler |
status | dize | closed kapalı, starting başlatılıyor, running çalışıyor, stopping kapatılıyor, orphaned kalıntı işlem var, error hata |
lastOpenedAt | dize | Profilin en son açıldığı zaman (ISO 8601, UTC); hiç açılmamış profillerde bu alan bulunmaz |
{
"result": {
"id": "8f0c2b9e-4d6a-4f51-9a7e-2f1c3d5b6a70",
"serialNumber": 12,
"name": "Shop A",
"group": "Project A",
"tags": ["automation"],
"status": "running",
"lastOpenedAt": "2026-10-02T08:30:00.000Z"
}
}Yanıtlar hiçbir zaman proxy adreslerini veya kimlik bilgilerini, parmak izi ayarlarını, çerezleri, şifreleri, site verilerini ya da uzantı verilerini içermez.
Sorgulama, başlatma ve kapatma
GET /v1/status
Adresin ve belirtecin çalıştığını doğrulamak için hizmet durumunu döndürür. result alanı içinde dönmeyen tek yanıt budur:
{
"state": "running",
"transport": "loopback",
"protocolVersion": 1
}GET /v1/profiles
Profil nesnelerinden oluşan bir dizi döndürür; en son değiştirilen profiller önce gelir. Çöp kutusundaki profiller listede yer almaz.
GET /v1/profiles/{id}/status
Bir profilin geçerli durumunu döndürür. Profil yoksa veya çöp kutusuna taşınmışsa 404 PROFILE_NOT_FOUND döner.
POST /v1/profiles/{id}/start
- Uygulamada “Aç” düğmesine tıklamakla aynı şekilde çalışır: Prism çekirdeği ve Pro çekirdek lisansını kontrol eder, proxy'yi test edip çıkış IP'sinin değişip değişmediğine bakar, ardından tarayıcı penceresini açar. Başarılı olursa durumu
runningolan profil nesnesini döndürür. - Profil zaten çalışıyorsa geçerli durumu hemen döndürülür; profil ikinci kez açılmaz.
- Prism, bir başlatma isteği yanıtlanmadan sonraki isteği işlemez. Çok sayıda profil başlatmak için uç noktayı her profil için sırayla çağırmanız yeterlidir; aynı anda kaç profilin çalışabileceği bilgisayarınızın belleğine ve CPU'suna bağlıdır.
- Gerekli çekirdek yoksa, proxy testi başarısız olursa, proxy çıkış IP'si değişmişse (politika
blockise) veya kalıntı bir işlem varsa başlatma başarısız olur ve 502 döner; nedenierror.messagealanında açıklanır. - Uygulamanın devam etmeden önce onayınızı isteyeceği durumlarda (örneğin proxy çıkışına ait coğrafi konum verileri birbiriyle çeliştiğinde) API isteği doğrudan başarısız olur. Bu tür hatalarda profili Prism uygulamasında açabilir veya ağ kimliğini
manualolarak değiştirebilirsiniz. - Başlatma uç noktasını çağırdığınız profiller (çağrı sırasında zaten çalışmakta olanlar dahil) kaydedilir; “Otomasyon API'si” penceresinde “Acil durdur” düğmesine tıklandığında bunlar da kapatılır. “API'yi durdur” düğmesi ile MCP penceresindeki durdurma ve acil durdurma düğmeleri yalnızca API'yi durdurur; bu profiller açık kalır.
POST /v1/profiles/{id}/close
Tarayıcı penceresini kapatır, profil verilerini korur ve durumu closed olan profil nesnesini döndürür; profil çalışmıyorsa da doğrudan closed döndürülür. Tarayıcı 8 saniye içinde kapanmaz ve veri dizinini kullanmaya devam ederse döndürülen durum orphaned olur; kapatma uç noktasını bir kez daha çağırdığınızda kalıntı işlem sonlandırılır.
PROFILE_ID='8f0c2b9e-4d6a-4f51-9a7e-2f1c3d5b6a70' # an id from GET /v1/profiles
curl -X POST -H "Authorization: Bearer $PRISM_TOKEN" "$PRISM_API/v1/profiles/$PROFILE_ID/start"
curl -X POST -H "Authorization: Bearer $PRISM_TOKEN" "$PRISM_API/v1/profiles/$PROFILE_ID/close"Profil oluşturma
Oluşturma uç noktaları yeni profilleri kapalı durumda kaydeder; tarayıcı açılmaz. Tüm alanlar isteğe bağlıdır: Belirtilmeyen alanlar, uygulamada “Yeni profil” ile oluşturulan profillerle aynı varsayılan değerleri alır ve her profil için yeni bir parmak izi tohumu oluşturulur. Bilinmeyen alanlar reddedilir.
Tek bir profil oluşturma
curl -X POST "$PRISM_API/v1/profiles" \
-H "Authorization: Bearer $PRISM_TOKEN" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: shop-b-001" \
-d '{
"name": "Shop B",
"group": "Project A",
"tags": ["automation"],
"startUrls": ["https://example.com/"],
"proxy": { "protocol": "socks5", "host": "203.0.113.10", "port": 1080, "username": "user", "password": "pass" }
}'Başarılı olursa yeni profil döndürülür:
{
"result": {
"id": "3b1f7a52-9c4e-4d2b-8f60-1a2b3c4d5e6f",
"serialNumber": 13,
"name": "Shop B",
"group": "Project A",
"tags": ["automation"],
"status": "closed"
}
}Toplu oluşturma
POST /v1/profiles/batch isteğinin gövdesi bir profiles dizisidir ve bir istekte 1–50 öğe bulunabilir; dizinin her öğesi tek profil oluştururken olduğu gibi yazılır, ancak requestKey en üst düzeyde veya istek başlığında belirtilir. Prism önce tüm profilleri doğrular: Herhangi biri geçersizse hiçbir profil oluşturulmaz ve hata mesajı hangi profilin hangi alanının hatalı olduğunu belirtir (profiles[1] ikinci profil demektir; sayım 0'dan başlar). Sonuçlar giriş sırasıyla döndürülür:
{
"requestKey": "shops-batch-001",
"profiles": [
{ "name": "Shop C", "group": "Project A" },
{ "name": "Shop D", "group": "Project A", "fingerprint": { "platform": "windows" } }
]
}{
"result": {
"profiles": [
{ "id": "…", "serialNumber": 14, "name": "Shop C", "group": "Project A", "tags": [], "status": "closed" },
{ "id": "…", "serialNumber": 15, "name": "Shop D", "group": "Project A", "tags": [], "status": "closed" }
],
"count": 2
}
}Profil alanları
| Alan | Açıklama | Belirtilmezse |
|---|---|---|
name | Ad, 1–60 karakter | “API” ve bir sayı, örneğin API 8: Sayı, mevcut profil sayısının 1 fazlasıdır ve toplu oluşturmada sırayla artar; oluşan ad var olan bir adla aynı olabilir |
group | Grup, en fazla 40 karakter | Grupsuz |
tags | Etiket dizisi: en fazla 20 etiket, her biri en fazla 30 karakter | Yok |
note | Not, en fazla 500 karakter | Yok |
color | İşaret rengi, #RRGGBB | Paletten sırayla atanır |
startUrls | Başlangıç sayfası dizisi, en fazla 50; yalnızca http / https, kullanıcı adı ve şifre içeremez; protokol yazılmazsa https kullanılır | Prism web sitesi |
proxy | Proxy; aşağıdaki tabloya bakın | Doğrudan bağlantı |
fingerprint | Parmak izi seçenekleri; aşağıdaki tabloya bakın | Uygulamada yeni profil oluştururken olduğu gibi |
extensionIds | Yüklü uzantıların Prism içindeki kimlikleri, en fazla 50. “Uzantılar” penceresinde gösterilen …/<ID>/extension uzantı yolundaki klasör adı bu kimliktir; Chrome Web Mağazası'ndaki uzantı kimliği değildir | Uzantı etkinleştirilmez |
kernelVersion | Profili belirli bir çekirdek sürümüne sabitler: dört bölümlü sürüm numarası, örneğin 144.0.7559.132; profil başlatılırken bu sürümün yüklü olması gerekir | Varsayılan çekirdeği izler |
requestKey | Güvenli yeniden deneme için istek anahtarı; bkz. “Güvenli yeniden deneme” | Yok |
Proxy alanları
| Alan | Açıklama |
|---|---|
protocol | Zorunlu: direct, http, https veya socks5 |
host | Ana bilgisayar adı veya IP (protokol, bağlantı noktası ve kimlik bilgisi olmadan); protokol direct değilse zorunludur |
port | 1–65535 arasında bir tamsayı; protokol direct değilse zorunludur |
username、password | İsteğe bağlı. Şifre bu bilgisayarda şifrelenerek saklanır ve hiçbir uç nokta tarafından döndürülmez |
Parmak izi alanları
| Alan | Açıklama | Belirtilmezse |
|---|---|---|
platform | macos veya windows | Donanım şablonunu izler; şablon belirtilmezse bu bilgisayarın işletim sistemi |
hardwareProfileId | Donanım şablonu; aşağıdaki tabloya bakın. İşletim sistemi sürümü, CPU çekirdek sayısı ve ekran boyutu şablona göre belirlenir | İlgili sistemin “tohum tabanlı bağımsız” şablonu |
seed | Parmak izi tohumu, 0–4294967295 arasında bir tamsayı; tohum ve diğer parmak izi ayarları aynıysa aynı parmak izi elde edilir | Rastgele oluşturulur |
brand | Chrome veya Edge | Chrome |
brandVersion | Tarayıcı sürüm numarası. Genellikle boş bırakılır ve çekirdek sürümü kullanılır; belirtilirse ana sürüm, profilin başlatıldığı çekirdekle aynı olmalıdır, aksi hâlde profil başlatılamaz | Çekirdeği izler |
language | Arayüz dili, örneğin en-US | Bu bilgisayarın sistem dili |
acceptLanguages | Accept-Language istek başlığı | Dile göre otomatik oluşturulur |
timezone | IANA saat dilimi, örneğin America/New_York | Bu bilgisayarın saat dilimi |
networkIdentityMode | proxy: Başlatmadan önce proxy çıkışı test edilir, saat dilimi ve coğrafi konum (çıkış ülkesi tanınırsa dil de) çıkışa göre ayarlanır; manual: Her zaman girdiğiniz değerler kullanılır | proxy |
proxyExitPolicy | Proxy çıkış IP'si son testten bu yana değiştiğinde: block bu başlatmayı başarısız kılar ve tekrar başlatmak onay sayılır, bu yüzden betikler bu hatadan sonra otomatik olarak yeniden denememelidir; warn yalnızca uyarır | block |
webrtcPolicy | proxy_only sızıntı koruması; public_only yalnızca genel arabirim; default sistem varsayılanı | proxy_only |
Donanım şablonları
| ID | Sistem | Açıklama |
|---|---|---|
macos-seeded-apple | macOS | Tohum tabanlı bağımsız Apple GPU, birden çok profil için uygundur; macOS varsayılanı |
macos-host | macOS | Yerel donanım; yalnızca Mac'te kullanılabilir |
macos-m1 | macOS | Apple M1 · 8GB |
macos-m3-pro | macOS | Apple M3 Pro · 18GB |
macos-m4-pro | macOS | Apple M4 Pro · 24GB |
windows-seeded-nvidia | Windows | Tohum tabanlı bağımsız NVIDIA GPU, birden çok profil için uygundur; Windows varsayılanı |
windows-host | Windows | Yerel donanım; yalnızca Windows bilgisayarlarda kullanılabilir |
windows-10-rtx3060 | Windows | Windows 10 · RTX 3060 · 16GB |
windows-11-rtx4060 | Windows | Windows 11 · RTX 4060 · 16GB |
windows-11-rtx4070 | Windows | Windows 11 · RTX 4070 · 32GB |
Şablon platform değeriyle uyuşmazsa istek reddedilir. Pencere konumu ve boyutu, çerezler, uzantı verileri gibi ayarlar API ile belirlenemez; bunları profil oluşturulduktan sonra Prism uygulamasında değiştirebilirsiniz.
Güvenli yeniden deneme
Ağ bağlantısı kesildiğinde veya istek zaman aşımına uğradığında profilin oluşturulup oluşturulmadığını bilemeyebilirsiniz. Her oluşturma isteğine bir istek anahtarı ekleyin; böylece yeniden deneme hiçbir zaman ikinci bir profil oluşturmaz:
- Anahtarı
Idempotency-Keyistek başlığında veya gövdedekirequestKeyalanında gönderin; anahtar 8–128 karakter uzunluğunda olmalı ve yalnızca ASCII harf, rakam ve. _ : -içermelidir. İkisini birden gönderirseniz değerler aynı olmalıdır. - 24 saat içinde aynı anahtar ve aynı içerikle yapılan yeniden deneme, ilk seferde oluşturulan profilleri döndürür (HTTP 200); bu, Prism yeniden başlatıldıktan sonra da geçerlidir.
- Anahtar aynı ama içerik farklıysa 409
IDEMPOTENCY_CONFLICTdöner. İlk istekte oluşturulan bir profil silinmişse (çöp kutusuna taşınması dahil) API, profili sessizce yeniden oluşturmak yerine 409IDEMPOTENCY_RESULT_GONEdöndürür; profili yeniden oluşturmak için yeni bir anahtar kullanın. - 24 saat geçtikten sonra aynı anahtar yeni bir istek sayılır.
- Anahtarlı istekler 24 saat boyunca saklanır ve en fazla 1.000 istek tutulur; bu sınır, MCP üzerinden yapılan profil oluşturma işlemleriyle ortaktır (MCP ile yapılan her oluşturma bir kayıt kullanır). Sınıra ulaşıldığında API, eski kayıtların süresi dolana kadar 429
IDEMPOTENCY_CAPACITYdöndürür. - Anahtarlar ve istek içerikleri bu bilgisayarda yalnızca kriptografik özet olarak saklanır; proxy şifreleri açık metin olarak saklanmaz.
Anahtarları kendi verilerinizden, örneğin bir tablo satır numarasından veya sipariş numarasından oluşturmanızı öneririz: shop-b-001.
Hata işleme
İstek daha girişte reddedilirse (bkz. “İstek kuralları”) error bir dizedir, örneğin {"error":"unauthorized"}. Prism isteği işlerken bir hata oluşursa error bir nesnedir:
{
"error": {
"code": "INVALID_PROFILE_INPUT",
"message": "Invalid profile creation request; see details",
"retryable": false,
"details": [
{ "path": "profiles[1].proxy.port", "message": "Too big: expected number to be <=65535" }
]
}
}Programlarınız HTTP durumuna ve code değerine göre karar vermelidir; message insanlar için yazılmış bir açıklamadır, kısmen Çincedir ve ifadesi sürümden sürüme değişebilir. retryable true ise aynı istek daha sonra olduğu gibi yeniden denenebilir. details yalnızca geçersiz oluşturma alanlarında yer alır, en fazla 20 öğe içerir ve gönderilen değerleri hiçbir zaman içermez.
| HTTP | Hata | Anlamı | Önerilen işlem |
|---|---|---|---|
| 400 | INVALID_PROFILE_INPUT | Geçersiz oluşturma alanları; details her alanı ve nedenini listeler | details içinde belirtilen alanları düzeltip yeniden gönderin |
| 400 | query_not_allowed、body_not_allowed、json_body_required、invalid_json_body | İstek, istek kurallarından birine uymuyor | “İstek kuralları” bölümüne bakarak düzeltin |
| 401 | unauthorized | Belirteç yanlış veya artık geçersiz | API'yi Prism'de yeniden başlatıp yeni belirteci kullanın |
| 403 | invalid_host、browser_origin_not_allowed | Adres veya istek kaynağı kabul edilmiyor | 127.0.0.1 kullanın; API'yi web sayfasından değil, bir betikten çağırın |
| 403 | PRO_REQUIRED | Pro lisansı artık geçerli değil veya sabitlenen çekirdek Pro gerektiriyor | Pro'yu yenileyin veya yeniden etkinleştirin |
| 404 | not_found | Böyle bir yol veya yöntem yok | “Uç noktalar” bölümünü kontrol edin |
| 404 | PROFILE_NOT_FOUND | Profil yok veya çöp kutusuna taşınmış | Profil listesini yeniden alın |
| 409 | IDEMPOTENCY_CONFLICT、IDEMPOTENCY_RESULT_GONE | İstek anahtarı çakışması veya bu anahtarla oluşturulan bir profil silinmiş | Yeni bir istek anahtarı kullanın |
| 413 | request_too_large | İstek gövdesi 96 KiB sınırını aşıyor | İsteği birkaç partiye bölün |
| 429 | rate_limited、IDEMPOTENCY_CAPACITY | Çok fazla istek veya 24 saat içinde 1.000 istek anahtarı sınırına ulaşıldı | Daha sonra yeniden deneyin |
| 502 | MCP_REQUEST_FAILED ve diğerleri | Diğer işlem hataları; örneğin eksik çekirdek, başarısız proxy testi veya kalıntı işlem | message alanına göre hareket edin |
| 504 | BROKER_TIMEOUT | Prism 60 saniye içinde yanıt vermedi; işlem hâlâ sürüyor olabilir | Önce durumu sorgulayın; oluşturma isteklerini aynı anahtarla yeniden deneyin |
MCP_REQUEST_FAILED, Prism'in dahili olarak kullandığı genel bir hata adıdır; yerel API de bu adı kullanır.
Kod örnekleri
Örneklerdeki adresi ve belirteci Prism penceresinde gösterilen değerlerle değiştirin. Örnekler profil oluşturur, ardından yeni oluşturulan profili başlatıp kapatır.
Python
requests paketi gerekir (pip install requests):
import requests
API = "http://127.0.0.1:43123" # the API address shown in Prism
TOKEN = "<token>" # the token shown in Prism
session = requests.Session()
session.headers["Authorization"] = f"Bearer {TOKEN}"
def call(method, path, **kwargs):
response = session.request(method, API + path, timeout=70, **kwargs)
body = response.json()
if not response.ok:
raise RuntimeError(f"{response.status_code}: {body['error']}")
return body.get("result", body)
created = call("POST", "/v1/profiles/batch",
headers={"Idempotency-Key": "shops-batch-002"},
json={"profiles": [{"name": "Shop C"}, {"name": "Shop D"}]})
for profile in created["profiles"]:
print("created", profile["serialNumber"], profile["id"])
profiles = call("GET", "/v1/profiles")
for profile in profiles:
print(profile["serialNumber"], profile["name"], profile["status"])
first = created["profiles"][0]["id"]
print(call("POST", f"/v1/profiles/{first}/start")["status"]) # running
print(call("POST", f"/v1/profiles/{first}/close")["status"]) # closedNode.js
Node.js 18'den itibaren fetch yerleşik olarak gelir; herhangi bir bağımlılık kurmanız gerekmez:
// prism.mjs — run with: node prism.mjs (Node.js 18 or later)
const API = 'http://127.0.0.1:43123' // the API address shown in Prism
const TOKEN = '<token>' // the token shown in Prism
async function call(method, path, body, headers = {}) {
const response = await fetch(API + path, {
method,
headers: { Authorization: `Bearer ${TOKEN}`, ...(body ? { 'Content-Type': 'application/json' } : {}), ...headers },
body: body ? JSON.stringify(body) : undefined,
signal: AbortSignal.timeout(70_000),
})
const data = await response.json()
if (!response.ok) throw new Error(`${response.status}: ${JSON.stringify(data.error)}`)
return data.result ?? data
}
const profile = await call('POST', '/v1/profiles', {
name: 'Shop E',
fingerprint: { language: 'en-US', timezone: 'America/New_York', networkIdentityMode: 'manual' },
}, { 'Idempotency-Key': 'shop-e-001' })
console.log('created', profile.serialNumber, profile.id)
console.log((await call('POST', `/v1/profiles/${profile.id}/start`)).status) // running
console.log((await call('POST', `/v1/profiles/${profile.id}/close`)).status) // closedYerel API ve MCP
Yerel API sizin yazdığınız betikler içindir; yapay zeka istemcileri Prism'e MCP üzerinden bağlanmalıdır. MCP'nin kendi belirteci ve izinleri vardır: Yalnızca “Yerel yapay zeka · MCP” penceresinde izin verilen profiller yapay zekaya görünür ve yapay zeka yerel API'yi çağıramaz. İkisi aynı yerel hizmeti ve 60 saniyede 120 isteklik ortak sınırı paylaşır; MCP durdurulduğunda veya acil olarak durdurulduğunda yerel API de durur.
Yapay zeka da bu sayfadakiyle aynı alanları kullanan prism_create_profile ve prism_create_profiles MCP araçlarıyla profil oluşturabilir. Bunun için “Yerel yapay zeka · MCP” penceresinde “Yapay zekâ profil oluşturabilsin” seçeneğini açmanız gerekir (varsayılan olarak kapalıdır); yapay zekanın yeni profilleri kontrol edip edemeyeceği, ayarladığınız profil erişim moduna bağlıdır. MCP ile yerel API'nin istek anahtarları birbirinden bağımsızdır, ancak 24 saatte 1.000 kayıtlık sınır ikisi için ortaktır.
Güvenlik önerileri
- Belirteç, bu bilgisayardaki profilleri yönetmenin anahtarıdır: Onu kod depolarına, günlüklere veya sohbet kayıtlarına yazmayın. Sızdığından şüpheleniyorsanız API'yi durdurup yeniden başlatın; eski belirteç hemen geçersiz olur.
- API yalnızca 127.0.0.1 üzerinde dinler; yerel ağdaki veya internetteki diğer cihazlar API'ye doğrudan erişemez. Host denetimi esas olarak tarayıcıları ve hatalı kullanımı engellemek içindir, erişim denetiminin yerini tutmaz; API'yi port yönlendirme veya ters proxy ile dışarıya açmayın.
- Bu bilgisayardaki başka programlar da belirteci elde ederse API'yi çağırabilir. API'yi yalnızca güvendiğiniz bilgisayarlarda etkinleştirin ve işiniz bitince “API'yi durdur” düğmesine tıklayın.
- “Otomasyon API'si” penceresindeki “Acil durdur” düğmesi API'yi durdurur ve bu oturumda API üzerinden başlatılıp hâlâ çalışan profilleri kapatır.
- Prism'in yürüttüğü her istek, bu bilgisayardaki
vault/logs/automation-audit.jsonldenetim günlüğüne (Prism veri dizininde) yazılır. Günlüğe zaman, işlem, sonuç, istek kimliği, profil kimlikleri ve hata nedeni kaydedilir; belirteç, istek içeriği ve sayfa içeriği asla kaydedilmez. İstek kuralları nedeniyle reddedilen istekler veGET /v1/statusistekleri günlüğe yazılmaz.
Sık sorulan sorular
- API'yi bir web sayfasından veya tarayıcı uzantısından çağırabilir miyim?
- Hayır. Tarayıcıların gönderdiği isteklerde Origin başlığı bulunur ve API bu istekleri reddeder. API'yi bir terminalden, betikten veya yerel bir programdan çağırın.
- Neden localhost ile 403 hatası alıyorum?
- API, Host başlığının API adresindeki 127.0.0.1 ve bağlantı noktasıyla birebir eşleşmesini şart koşar; bu yüzden localhost reddedilir. Adreste ana bilgisayar adı olarak 127.0.0.1 kullanın.
- “Otomasyon API'si” penceresi API'nin çalıştığını gösteriyor ama belirteç yok. Ne yapmalıyım?
- MCP etkinleştirildiğinde Prism, API ile MCP'nin paylaştığı yerel hizmeti otomatik olarak başlatır; bu durumda pencerede yalnızca adres gösterilir. Belirteç yalnızca “Yerel API'yi başlat” düğmesine tıklanıp API başarıyla başlatıldığında bir kez gösterilir: Yeni bir belirteç almak için önce “API'yi durdur”, ardından “Yerel API'yi başlat” düğmesine tıklayın. Hizmet durdurulduğu sırada MCP bağlantısı da kesilir.
- Prism yeniden başlatıldıktan sonra eski belirteç çalışır mı?
- Hayır. API her başlatıldığında yeni bir bağlantı noktası ve yeni bir belirteç oluşturulur; API durdurulduğunda veya Prism'den çıkıldığında eski belirteç geçersiz olur.
- API ile profilleri düzenleyebilir veya silebilir miyim?
- Hayır. API profilleri oluşturabilir, sorgulayabilir, başlatabilir ve kapatabilir; profil ayarlarını düzenlemek ve profilleri silmek için Prism uygulamasını kullanın.
- Puppeteer, Playwright veya Selenium bağlanabilir mi?
- Hayır. API hata ayıklama bağlantı noktası veya WebDriver adresi sağlamaz. Sayfa düzeyindeki işlemleri MCP üzerinden bir yapay zeka istemcisine yaptırabilirsiniz.
- Tek seferde çok sayıda profil başlatabilir miyim?
- Evet, başlatma uç noktasını her profil için sırayla çağırabilirsiniz. Prism istekleri tek tek işler ve bir profil başlatıldıktan sonra bir sonrakine geçer; aynı anda kaç profilin çalışabileceği bilgisayarınızın belleğine ve CPU'suna bağlıdır.
- Windows'ta da çalışır mı?
- Evet. Prism Pro, macOS ve Windows'ta aynı yerel API'yi sunar. Windows PowerShell'de curl.exe veya Invoke-RestMethod kullanın.