跳至主要內容

自動化

Puppeteer 與 Playwright,直接連到你的設定檔

每個開啟的設定檔都有自己的偵錯位址。把你的程式碼連到那個設定檔上:它的指紋、它的 Cookie、它的代理都在。所有方案都包含,免費方案也一樣。

  1. 1在程式裡開啟本機介面:設定中的「本機 API」,複製金鑰。
  2. 2要求開啟一個設定檔。回傳的位址只屬於這個設定檔。
  3. 3像連線一般瀏覽器那樣,把你的程式碼連到這個位址。
  4. 4照常工作。指紋、Cookie 與代理都已經就位。

JavaScript (puppeteer-core)

const puppeteer = require('puppeteer-core');

(async () => {
  // 1. Ask the app for this profile's debugging endpoint.
  const started = await fetch(
    'http://127.0.0.1:50325/api/v1/browser/start?profileId=YOUR_PROFILE_ID',
    { method: 'POST', headers: { 'x-api-token': 'YOUR_API_TOKEN' } },
  ).then((r) => r.json());

  // 2. Attach to it like to any other browser.
  const browser = await puppeteer.connect({
    browserWSEndpoint: started.data.ws,
    defaultViewport: null,
  });

  const [page] = await browser.pages();
  await page.goto('https://example.com');
})();

Python (Playwright)

import requests
from playwright.sync_api import sync_playwright

# 1. Ask the app for this profile's debugging endpoint.
started = requests.post(
    "http://127.0.0.1:50325/api/v1/browser/start",
    params={"profileId": "YOUR_PROFILE_ID"},
    headers={"x-api-token": "YOUR_API_TOKEN"},
).json()

# 2. Attach to it like to any other browser.
with sync_playwright() as p:
    browser = p.chromium.connect_over_cdp(started["data"]["ws"])
    page = browser.contexts[0].pages[0]
    page.goto("https://example.com")

連線之前要知道的一件事

Puppeteer and Playwright turn on Runtime.enable and Page.enable the moment they attach. Runtime.enable puts observers inside Chromium that page scripts can notice. Our own automation builder never turns it on. It turns on Page.enable only while a flow runs, on the tabs the flow uses, so it can answer a page's alert or confirm; a test page that looks for traces saw nothing from it on either engine. If the site you work with checks for this, build the sequence in the app instead.

或者完全不用寫程式碼

視窗裡有十六種步驟:開啟、點擊、輸入、等待、讀取、分支。沒有可被察覺的觀察器,也不用安裝任何東西。

看看程式能做什麼