İçeriğe geç

BelgelerOtomasyon

Betiklerle otomasyon

Aynı bilgisayardaki bir betik bir profili açıp tarayıcısını devralabilir. Aldığı profil, elle açtığınız profilin aynısıdır — aynı parmak izi, aynı bağlantı, aynı çerezler.

Uygulamanın arayüzü yalnızca İngilizce ve Rusçadır. Düğme ve ayar adları bu sayfada İngilizce arayüzde göründüğü gibi yazılmıştır.

Yerel API nedir

Yerel API, uygulamanın içindeki küçük bir hizmettir. Yalnızca bu bilgisayarda ve yalnızca anahtarınızı taşıyan isteklere yanıt verir. Onunla bir betik profilleri listeleyebilir, başlatıp durdurabilir ve bir otomasyon kitaplığının başlatılan tarayıcıya bağlandığı adresi alabilir.

  • Her plan, ücretsiz olan da dahil.
  • Yalnızca bu bilgisayar: 127.0.0.1 üzerinde dinler ve ağa açılamaz.
  • Siz açana kadar kapalıdır.
  • Profiller uygulamada oluşturulur. API, sahip olduğunuz profilleri çalıştırır; profil oluşturmaz ve düzenlemez.

Açın

  1. Settings › API & Automation bölümünü açın ve Local API seçeneğini etkinleştirin. Yanındaki satır Running on this computer only. olarak değişir.
  2. Port değerini olduğu gibi bırakın — değiştirmediyseniz 48361 — ya da Random free port düğmesine basın.
  3. API key değerini hemen Copy ile kopyalayın: anahtarın kendisi hiçbir zaman gösterilmez ve sayfadan ayrıldıktan sonra yeniden kopyalanamaz — yalnızca değiştirilebilir. Uzunluğu 64 karakterdir.
Settings › API & Automation: Local API düğmesi, port, adres ve anahtar
Address
Hizmetin yanıt verdiği yer; yanında Copy düğmesi bulunur — varsayılan olarak http://127.0.0.1:48361.
Regenerate…
Yeni bir anahtar oluşturur. Eskisi anında çalışmayı bırakır; onunla verilmiş tarayıcı adresleri de öyle.
API documentation
Başvuruyu açar.

Not. Anahtar bir dosyada değil, sistemin kimlik bilgisi deposunda tutulur. Bir betik, portu koda gömmek yerine adresi uygulamanın yazdığı dosyadan — Liminal’ın veri klasöründeki Local API/status.json — okumalıdır; başvuru dosyanın nerede olduğunu açıklar.

İlk istek

Her istek anahtarı bir başlıkta taşır. Hizmete çalışıp çalışmadığını sorun:

curl
curl -H 'Authorization: Bearer <key>' http://127.0.0.1:48361/v1/status
JSON
{"status":"running","version":"<version>","signedIn":true}

signedIn, uygulamaya giriş yapmış biri olup olmadığını söyler. Profillere dokunan işlemler bunu gerektirir: yoksa not_signed_in yanıtını verirler.

Bir profil bulun ve başlatın

Profilleri listeleyin — yanıt sayfalar hâlinde gelir ve ada, çalışma alanına, klasöre ve duruma göre süzülebilir:

curl
curl -H 'Authorization: Bearer <key>' http://127.0.0.1:48361/v1/profiles

İstediğiniz profilin id değerini alın ve profili başlatın:

curl
curl -X POST -H 'Authorization: Bearer <key>' http://127.0.0.1:48361/v1/profiles/<profile-id>/start
JSON
{
  "id": "<profile-id>",
  "status": "running",
  "cdpDiscoveryUrl": "http://127.0.0.1:48361/devtools/<token>/json/version",
  "cdpBrowserUrl": "ws://127.0.0.1:9222/devtools/browser/<token>",
  "seleniumDebuggerUrl": "127.0.0.1:9222",
  "chromedriverPath": "/Applications/Liminal.app/.../chromedriver",
  "debugPort": 9222,
  "debugAddress": "127.0.0.1:9222",
  "externalIp": "203.0.113.10",
  "countryCode": "DE"
}
cdpBrowserUrl
Puppeteer ve Playwright’ın bağlandığı adres.
seleniumDebuggerUrl, chromedriverPath
Selenium’un ihtiyaç duyduğu şeyler: hata ayıklayıcı adresi ve tarayıcıyla eşleşen, uygulamayla birlikte gelen sürücü.
externalIp, countryCode
Profil başladığında bağlantısının nasıl göründüğü.

Uygulama profili, Open düğmesine basmışsınız gibi başlatır. Zaten açık olan bir profil yeniden başlatılmaz — başvuru, çalışan bir profile nasıl bağlanılacağını anlatır.

Kitaplığınızı bağlayın

Her örnek eksiksizdir: adres dosyasını okur, bir profili adına göre bulur, başlatır ve bir sayfa açar.

import { readFileSync } from 'node:fs'
import puppeteer from 'puppeteer-core'

// Local API/status.json, inside Liminal's user-data directory. The settings
// screen shows the absolute path; that path and the key are your script’s to
// keep — the app puts neither into the environment for you.
const { address } = JSON.parse(readFileSync(process.env.LIMINAL_ADDRESS_FILE, 'utf8'))

async function call(path, init) {
  const response = await fetch(address + path, {
    ...init,
    headers: { Authorization: `Bearer ${process.env.LIMINAL_API_KEY}` },
  })
  const body = await response.json()
  if (!response.ok) throw new Error(body.error.code)
  return body
}

const { items } = await call('/v1/profiles?name=' + encodeURIComponent('Shop EU'))
const started = await call(`/v1/profiles/${items[0].id}/start`, { method: 'POST' })

const browser = await puppeteer.connect({ browserWSEndpoint: started.cdpBrowserUrl })
const page = await browser.newPage()
await page.goto('https://example.com')
console.log(await page.title())
await browser.disconnect()

İpucu. Profilin zaten sahip olduğu tarayıcıya bağlanın. Kitaplığın kendi tarayıcısını başlatmasına izin vermeyin — o tarayıcıda profilin ne parmak izi ne de çerezleri olur.

Profili durdurun

curl
curl -X POST -H 'Authorization: Bearer <key>' http://127.0.0.1:48361/v1/profiles/<profile-id>/stop

Durdurmak, profili Close düğmesinin yaptığı gibi kapatır. Kapanmayan bir profil için zorla durdurma da vardır.

Bilmekte fayda var

SoruYanıt
Bir betik benim gördüğümden farklı bir tarayıcı mı görür?Hayır. Parmak izi ve bağlantı, profili elle açtığınızdaki gibi uygulanır ve aynı korumalar geçerlidir.
Siteler tarayıcının otomatikleştirildiğini görür mü?API üzerinden başlatılan bir profilde otomasyonun alışılmış izleri gizlenir. Bu kapatılamaz.
Başsız (headless) mod var mı?Hayır. API bir profili uygulamanın yaptığı gibi başlatır.
İsteklerde bir sınır var mı?Plana bağlı bir kota yoktur.
Komut satırı aracı ya da kaydedilmiş senaryolar var mı?Hayır. Otomasyonun yolu Yerel API’dir.
Bir şey ters gittiğinde ne alırım?Bir durum kodu ve dallanmak için kısa bir code — invalid_key, not_signed_in, profile_already_running ve diğerleri. Başvuruda işlem bazında listelenirler.

Yayımlanan uygulamayla karşılaştırıldı: Ekim 2026. Uygulama bu sayfada yazandan farklı davranıyorsa sayfa yanlıştır — [email protected] adresine yazın. Her sürümde nelerin değiştiği Yenilikler bölümündedir.