Orbe Tài liệu English Bắt đầu

Tự động hoá và SDK

Điều khiển một hồ sơ Orbe bằng mã của bạn, hoặc bằng trợ lý AI, qua một kênh điều khiển nội bộ nằm trong lõi Chromium. Cú nhấp, phím gõ và thao tác cuộn đi qua đúng đường sự kiện của người dùng thật, còn trang được đọc ở phía trình duyệt thay vì chạy script trong trang.

SDK Python Mọi ngôn ngữ MCP cho trợ lý AI

Vì không có lớp tự động hoá nào gắn thêm bên ngoài, trang web sẽ thấy:

  • không có navigator.webdriver,
  • không có phiên CDP (Chrome DevTools Protocol),
  • không có cổng gỡ lỗi mở,
  • không có script chèn vào và không có isolated world.
Mọi thao tác được thực hiện bên trong lõi trình duyệt, theo cách chuột và bàn phím tác động vào nó. Mở hồ sơ bằng SDK cho cùng kết quả vân tay như mở bằng tay, vì lớp điều khiển không làm hỏng công việc của lớp vân tay.

Điểm khác biệt

Cách thông thường để điều khiển trình duyệt là qua CDP, phát lại thao tác tức thời và máy móc. Orbe đi theo hướng khác vì làm chủ cả lõi trình duyệt bên dưới: thao tác nhập đi qua đường sự kiện thật, và trang được đọc ở phía trình duyệt.

Không dấu vết tự động hoá

Các tín hiệu để trang phân biệt máy với người, gồm navigator.webdriver, cờ --enable-automation và phiên CDP, đơn giản là không tồn tại vì Orbe không bao giờ bật chúng. Vân tay sạch vẫn sạch khi bạn chạy script.

Hành vi như người, riêng cho từng hồ sơ

Chuyển động và nhịp gõ được mô phỏng theo hạt giống riêng của mỗi hồ sơ: đường chuột cong, nhịp dừng suy nghĩ, nhịp gõ, quán tính cuộn. Cùng một hồ sơ cư xử như cùng một người mỗi ngày; các hồ sơ khác nhau cư xử như những người khác nhau.

Kỷ luật, bật sẵn mặc định

Mọi lệnh đều đi qua bước kiểm tra proxy trước khi mở, nhịp nghỉ an toàn cho tài khoản, và bộ phát hiện checkpoint sẽ dừng lại thay vì cố làm tiếp. Ngoài ra có một cảnh báo một lần khi hồ sơ làm việc ngoài khung giờ quen thuộc.

Một bộ máy hành vi duy nhất

Python, giao thức dòng cho các ngôn ngữ khác và máy chủ MCP dùng chung một bộ máy mô phỏng hành vi, nên hành vi không lệch giữa các ứng dụng khách; không có gì được viết lại.

Bắt đầu nhanh

SDK là một gói Python nhỏ đi kèm bộ cài. Bạn cần Python 3.9 trở lên trên máy Windows chạy Orbe. Cài gói một lần từ thư mục Orbe của bạn (PowerShell):

python -m pip install --force-reinstall (Get-ChildItem "$env:LOCALAPPDATA\Programs\Orbe\app\current\sdk\orbe-*.whl").FullName

Gói chỉ dùng thư viện chuẩn và tự tìm Orbe. Nếu bạn cài Orbe vào thư mục khác, hãy dùng thư mục đó thay cho %LOCALAPPDATA%\Programs\Orbe trong lệnh, và đặt ORBE_EXE là đường dẫn đầy đủ tới Orbe.exe trong app\current. Sau mỗi lần Orbe cập nhật, hãy chạy lại đúng lệnh này để lấy gói mới.

Sau đó nhập gói với tên orbe:

import orbe

# Mở hồ sơ, kết nối kênh và kiểm tra proxy —
# tất cả khi vào khối. Đóng sạch khi thoát khối.
with orbe.Trinh("my-profile") as t:
    t.goto("https://example.com/login")
    t.wait_for("Sign in")            # chờ tới khi chữ xuất hiện
    t.click("Sign in")               # nhấp phần tử mang chữ đó
    t.type("my-username", enter=True)  # gõ với nhịp như người, rồi Enter
    t.scroll(600)                    # một cử chỉ cuộn xuống như người
    print(t.read()[:200])            # đọc chữ đang hiển thị trên trang
    t.screenshot("after-login.png")  # chụp qua compositor
Phiên được mở bằng context manager (with … as t:). Khi vào khối, trình duyệt được mở và các bước kiểm tra an toàn chạy; khi rời khối, trình duyệt và kênh được đóng, kể cả khi mã của bạn gặp lỗi.

Muốn chạy từ trợ lý AI như Claude thay vì tự viết mã? Xem phần MCP.

Phiên Trinh Python

orbe.Trinh là phiên SDK công khai. Nó an toàn mặc định: kiểm tra proxy và dừng ở checkpoint luôn bật, không có công tắc để tắt, và đó là chủ ý, vì thứ đầu tiên một lượt chạy thiếu kỷ luật làm bạn mất là tài khoản. Chỉ có nhịp nghỉ an toàn cho tài khoản là có thể tắt, theo từng phiên.

orbe.Trinh(profile_id, *, headless=False, timeout=30.0,
           platform=None, pacing="on", on_rest=None, rotate=None, open_on_rotate_fail=False)

Tham số bắt buộc duy nhất là mã hồ sơ; các tham số còn lại là tuỳ chọn chỉ truyền theo tên:

profile_id str
Mã hồ sơ Orbe cần mở. Bắt buộc.
headless bool
Chạy trình duyệt ẩn. Mặc định False.
timeout float
Thời gian chờ tối đa của mỗi lệnh, tính bằng giây. Mặc định 30.0.
platform str
Gợi ý nền tảng (trang bạn đang làm việc) — chọn cụm từ checkpoint của nền tảng đó và khung giờ quen thuộc dùng cho cảnh báo ngoài giờ. Thường được suy ra từ URL.
pacing "on" | "off"
Nhịp nghỉ an toàn cho tài khoản trong phiên này. Mặc định "on"; "off" bỏ các quãng nghỉ như người (xem cảnh báo ở mục nhịp nghỉ).
on_rest callable
Tuỳ chọn; được gọi với số giây mỗi khi nhịp nghỉ bắt đầu một quãng nghỉ.
rotate bool | None
Với hồ sơ dùng cổng proxy thuê: True lấy IP mới trước khi trình duyệt khởi động, False bỏ qua lần mở này, None (mặc định) theo thiết lập Rotate IP on open của hồ sơ. Bị bỏ qua nếu dùng proxy riêng của bạn hoặc không dùng proxy.
open_on_rotate_fail bool
Nếu lấy IP mới thất bại, mở bằng IP hiện tại thay vì báo lỗi. Mặc định False.
Danh tính hành vi của hồ sơ — "con người" gắn với hạt giống của nó — lấy từ chính hồ sơ, nên không có tham số hạt giống. Các hàm bên dưới là giao diện chính thức, ổn định của gói orbe. Một tuỳ chọn mà phiên bản bạn cài không hỗ trợ sẽ báo orbe.NotSupported; mọi lỗi của SDK đều là orbe.OrbeError.

Vòng đời

open(start_url=None) → Trinh

Mở trình duyệt cho hồ sơ và kết nối kênh điều khiển. Được gọi tự động bởi with orbe.Trinh(...) as t:. Kiểm tra proxy khi mở — nếu proxy chết, sai quốc gia hoặc thiết lập chưa đủ, lệnh báo lỗi trước khi cửa sổ trình duyệt hiện ra.

close() → None

Đóng trình duyệt và kênh. Được gọi tự động khi rời khối with. Gọi nhiều lần vẫn an toàn.

Điều hướng và chờ

goto(url) → str (tab id)

Chuyển tab hiện tại tới url. Trả về mã tab; các lệnh sau nhắm vào tab này.

wait(seconds) → None

Một quãng dừng đơn thuần — khoảng "đọc" hoặc "suy nghĩ". Dùng giữa các bước như người dùng thật.

wait_for(text, timeout=15.0, poll=0.4) → bool

Chờ tới khi một phần tử mang text xuất hiện (khớp chuỗi con, không phân biệt hoa thường). Trả về True nếu thấy trong timeout, ngược lại False. Kiểm tra qua kênh — không có script nào chạy trong trang. Đừng thao tác trên trang trước khi chờ một thứ đặc trưng của nó.

Đọc trang

read() → str

Trả về toàn bộ chữ đang hiển thị trên trang, đọc ở phía trình duyệt (renderer C++). Dùng để biết trên trang có gì và xác nhận một thao tác đã thành công.

elements() → list[dict]

Liệt kê các phần tử có thể thao tác (nút, liên kết, ô nhập) dưới dạng {type, text, link, x, y, w, h} — loại phần tử, chữ, liên kết và hộp toạ độ trong khung nhìn. Dùng để tìm toạ độ chính xác khi nhấp theo chữ chưa đủ.

Thao tác như người

click(text) → bool

Nhấp phần tử mang text (khớp chuỗi con, không phân biệt hoa thường; chọn hộp khớp nhỏ nhất, để bạn trúng đúng nút chứ không phải khung chứa nó). Chuột di chuyển tới đó với nhịp như người. Trả về False nếu chưa có phần tử như vậy — khi đó hãy wait_for hoặc read lại thay vì đoán toạ độ.

click_xy(x, y) → None

Nhấp vào một toạ độ trong khung nhìn, dùng khi bạn đã biết điểm đó (ví dụ từ elements() hoặc ảnh chụp).

type(text, enter=False) → None

Gõ text với nhịp như người vào phần tử đang được focus — hãy nhấp vào ô trước. enter=True nhấn Enter sau ký tự cuối.

scroll(dy, x=400, y=400) → None

Cuộn một cử chỉ như người từ điểm (x, y). dy chỉ chọn hướng (âm = lên); quãng cuộn là một cử chỉ của người, không phải số pixel chính xác. Sau khi cuộn, hãy read hoặc screenshot để xem trang dừng ở đâu.

scroll_until(text, max_cu_chi=15, nghi=0.6) → bool

Cuộn xuống bằng các cử chỉ như người, lặp lại cho tới khi trang hiện text hoặc chạm đáy (chữ trên trang không còn đổi). Trả về True nếu tìm thấy. Đây là cách đúng để "cuộn tới X" — đừng đoán số pixel.

Chụp màn hình

screenshot(path=None) → bytes (PNG)

Chụp khung nhìn đang hiển thị qua compositor. Ảnh là PNG không mất dữ liệu của trang đúng như nó được dựng — không có nhiễu canvas (canvas được nhiễu theo từng hồ sơ, nhưng ảnh chụp là bản dựng thật), nên đáng tin để kiểm tra và gỡ lỗi. Trả về byte PNG; nếu có path thì ghi thêm ra tệp.

An toàn mặc định

SDK công khai bọc mọi lệnh trong một lớp kỷ luật. Bạn không cần chọn bật, và việc kiểm tra proxy cùng việc dừng ở checkpoint bên dưới không thể tắt; nhịp nghỉ bật mặc định và có thể tắt theo từng phiên.

  • Cảnh báo ngoài giờ. Tự động hoá không bao giờ bị dừng vì giờ trong ngày. Khi hồ sơ làm việc ngoài khung giờ quen thuộc — mặc định 7:00–23:00 theo múi giờ của proxy (không có proxy thì theo múi giờ IP của bạn, hoặc quốc gia của hồ sơ nếu không tra được); khi có gợi ý nền tảng thì TikTok 8:00–24:00, YouTube và Google 6:00–24:00, Twitter 7:00–24:00, Facebook, Instagram và Shopee 7:00–23:00 — Orbe cảnh báo một lần mỗi phiên rồi chạy tiếp, ví dụ: "Outside usual active hours 7:00–23:00 (Asia/Ho_Chi_Minh); it is now 23:00. Automation continues — accounts active at unusual hours are more likely to be reviewed." SDK in dòng này ra stderr dưới dạng [orbe] warning: …, máy chủ MCP gửi nó như một thông báo cảnh báo, và Workflow Editor hiện nó thành dòng ! trong kết quả chạy. Cảnh báo chỉ xuất hiện khi nhịp nghỉ đang bật.
  • Giới hạn proxy bên khác. Hồ sơ ngoài hạn mức 20 hồ sơ mở không có proxy; tìm cờ proxy_disabled trong danh sách hồ sơ, kết quả mở hồ sơ và các dòng kết quả lô / lịch của Local API và MCP.
  • Kiểm tra proxy trước khi mở. Nếu hồ sơ có proxy mà không kết nối được, sai quốc gia hoặc thiết lập chưa đủ, Orbe không mở — chạy trên sai IP tốn kém hơn một lượt chưa bao giờ bắt đầu. Hồ sơ không có proxy mở thẳng bằng IP của bạn.
  • Phát hiện checkpoint / captcha. Sau mỗi bước làm thay đổi trạng thái, Orbe đọc trang (chờ cho trang ổn định) và nếu thấy checkpoint hoặc thử thách — trong chữ hoặc trong URL — nó dừng lại, chụp ảnh và báo. Orbe không bao giờ cố giải hay vượt qua checkpoint.

Nhịp nghỉ an toàn cho tài khoản

Tự động hoá của Orbe nghỉ như người: cứ khoảng 1 trong 8 thao tác (nhấp, gõ, cuộn, điều hướng) sẽ có một quãng nghỉ 3–20 giây. Một lệnh có thể chạy lâu hơn thời gian di chuột; đó là chủ ý, không phải treo.

Khi đang nghỉ, máy chủ MCP gửi thông điệp tiến độ resting N s (account-safety pacing); SDK in dòng đó ra stderr, hoặc gọi hàm on_rest(seconds) của bạn trong Python.

Nhịp nghỉ bật mặc định. Bạn có thể tắt cho một phiên hoặc một flow:

  • Python — orbe.Trinh(profile_id, pacing="off");
  • ngôn ngữ khác — orbe-sdk.cmd <profile-id> --pacing off;
  • MCP — open với "pacing": "off";
  • Workflow Editor — nút Pacing: On cạnh nút Run, lưu theo từng flow; tắt đi sẽ hỏi bạn xác nhận.
Khi tắt nhịp nghỉ: các thao tác chạy liền nhau, không có quãng dừng như người. Các nền tảng đánh dấu hoạt động ở tốc độ máy, nên việc này làm tăng rủi ro cho tài khoản của bạn.
Kỷ luật là lớp bọc quanh cùng một phiên, nên nó áp dụng cho SDK, cho flow và cho máy chủ MCP như nhau — trong sản phẩm không có đường "trần" nào bỏ qua nó.

Xử lý khi bị chặn

Khi lớp kỷ luật dừng một lệnh, SDK ném lỗi kỷ luật và công cụ MCP trả về BLOCKED (…) — kèm thông báo tiếng Anh và, với checkpoint, cụm từ khớp, URL và ảnh chụp. Hãy bắt lỗi và xử lý; đừng thử lại một cách mù quáng. Mỗi hàng dưới đây là một điều kiện chặn riêng:

LớpChuyện gì xảy raNên làm gì
orbe.CheckpointPhát hiện checkpoint hoặc thử thách trên trang hoặc trong URL. Kèm cụm từ khớp, URL và ảnh chụp.Dừng hồ sơ này. Kiểm tra bằng tay. Đừng tự động hoá xuyên qua nó.
orbe.ProxyErrorProxy của hồ sơ không kết nối được, sai quốc gia, hoặc thiết lập chưa đủ.Sửa proxy trước khi mở.
orbe.PageUnreadableKhông đọc được trang sau khi thử lại — coi là không an toàn, không phải "sạch".Để nó dừng; kiểm tra kết nối và trang.
orbe.BehaviorDataMissingThiếu thư viện hành vi như người, nên chuyển động sẽ là nhân tạo (và có thể bị phát hiện).Cài lại hoặc sửa Orbe để dữ liệu hành vi có đủ.
orbe.LicenseDisabledGiấy phép của tài khoản không hợp lệ cho thao tác này.Đăng nhập lại và kiểm tra khoá của bạn trong dashboard.
orbe.LedgerErrorTệp bộ đếm sử dụng bị hỏng — SDK dừng hẳn thay vì đoán.Tìm nguyên nhân trước khi ép chạy thêm.
import orbe

try:
    with orbe.Trinh("my-profile") as t:
        t.goto("https://example.com")
        t.click("Post")
except orbe.Blocked as e:
    # Bị chặn. str(e) là thông báo tiếng Anh mô tả điều kiện;
    # lỗi checkpoint còn kèm cụm từ khớp, URL và ảnh chụp.
    notify_me(str(e))          # cần có người xem hồ sơ này
    # KHÔNG thử lại cùng thao tác trong vòng lặp
Mọi lỗi chặn của lớp kỷ luật đều kế thừa orbe.Blocked, nên except orbe.Blocked bắt được tất cả; hãy bắt một lớp cụ thể trong bảng trên khi bạn muốn xử lý riêng một điều kiện. str(e) là thông báo tiếng Anh, và lỗi checkpoint còn kèm cụm từ khớp, URL và ảnh chụp.

orbe.RateLimited và orbe.OutsideHours vẫn còn để mã cũ bắt chúng tiếp tục chạy, nhưng Orbe không còn ném chúng nữa: không có giới hạn số thao tác, và không có gì bị chặn vì giờ trong ngày.

Khi không lấy được IP mới

Khi rotate bật (hoặc hồ sơ đã tích Rotate IP on open), việc đổi IP thất bại sẽ ném orbe.RotateFailed và trình duyệt không mở. Đây không phải lỗi chặn của lớp kỷ luật — nó kế thừa orbe.OrbeError, không phải orbe.Blocked. Nó mang .reason và .retry_after:

reasonÝ nghĩaNên làm gì
cooldownCổng vừa đổi IP chưa đầy 3 phút. .retry_after là số giây cần chờ.Chờ retry_after giây, hoặc mở với rotate=False.
timeoutKhông có IP mới sau 60 giây — proxy có thể vẫn đang đổi.Thử lại sau ít phút.
apiNhà cung cấp proxy không đổi IP.Thử lại; nếu vẫn lỗi, kiểm tra cổng với nhà cung cấp.
no_tokenChưa đặt token proxy, nên không đổi được IP của cổng.Thêm token trong Settings.

.retry_after là số giây nguyên khi reason là cooldown, còn lại là None. Truyền open_on_rotate_fail=True để mở bằng IP hiện tại.

Ngôn ngữ khác Mọi ngôn ngữ

Mọi ngôn ngữ đều có thể điều khiển cùng phiên đó qua một giao thức dòng nhỏ. Bộ cài thêm cầu nối orbe-sdk.cmd vào thư mục Orbe của bạn; hãy chạy nó như tiến trình con với mã hồ sơ và trao đổi mỗi dòng một đối tượng JSON qua stdin/stdout (nếu chạy chỉ với mã hồ sơ và không có đầu vào, nó không làm gì). Thử nhanh từ Command Prompt: (echo {"cmd":"open"}& echo {"cmd":"close"}) | "%LOCALAPPDATA%\Programs\Orbe\orbe-sdk.cmd" <profile-id>. Nếu bạn cài Orbe ở nơi khác, hãy dùng thư mục đó.

"%LOCALAPPDATA%\Programs\Orbe\orbe-sdk.cmd" <profile-id> [--rotate on|off] [--open-on-rotate-fail]

→ {"cmd":"open","url":"https://example.com"}   ← {"ok":true,"result":null}
→ {"cmd":"goto","url":"https://example.com"}    ← {"ok":true,"result":"<tab_id>"}
→ {"cmd":"wait_for","text":"Sign in"}           ← {"ok":true,"result":true}
→ {"cmd":"click","text":"Sign in"}              ← {"ok":true,"result":true}
→ {"cmd":"screenshot"}                           ← {"ok":true,"result":{"png_b64":"…"}}
→ {"cmd":"close"}                                ← {"ok":true,"result":null}

Các lệnh giống hệt SDK: open · goto · wait · wait_for · click · click_xy · type · scroll · scroll_until · read · elements · screenshot · close. Một lệnh thất bại trả về {"ok":false,"error":"…"} và không bao giờ làm sập cầu nối. --rotate on|off và --open-on-rotate-fail đặt trên dòng lệnh sau mã hồ sơ (không nằm trong lệnh open); việc đổi IP thất bại trả về {"ok":false,"code":"RotateFailed","error":"…","reason":"…","retry_after":…}. stdout chỉ chứa giao thức JSON; thông tin chẩn đoán đi ra stderr. Hãy đọc kết quả từng dòng và ghép với thứ tự bạn đã gửi.

Local API cho công cụ của bạn

Orbe còn chạy một Local API để script và công cụ của bạn gọi — chỉ trên máy này (127.0.0.1), không bao giờ mở ra mạng. API bật mặc định, ở một cổng ngẫu nhiên chọn khi cài Orbe. Quản lý trong Settings → Local API (mục Local API ở thanh bên mở trang này):

  • Enable Local API for external tools — tắt đi nếu bạn không dùng công cụ bên ngoài;
  • Port và Apply — đổi cổng;
  • Copy URL — địa chỉ, http://127.0.0.1:<port>/orbe/v1;
  • Copy key — mọi yêu cầu phải gửi khoá này trong header X-Orbe-Key; thiếu hoặc sai khoá sẽ nhận 401. Hãy coi khoá như mật khẩu — ai có nó đều điều khiển được các hồ sơ của bạn.

Local API điều khiển hồ sơ qua cùng kênh nội bộ với SDK — không CDP, không cổng gỡ lỗi; yêu cầu CDP sẽ bị từ chối kèm lỗi.

MCP — dùng Orbe từ trợ lý AI MCP

Orbe có sẵn một máy chủ MCP cung cấp các thao tác tương tự dưới dạng công cụ, để trợ lý như Claude Code, Cursor hay Codex có thể làm việc trong một hồ sơ bằng ngôn ngữ tự nhiên. Nó cũng không để lại dấu vết như SDK: không CDP, không script trong trang, không cổng gỡ lỗi.

Cài đặt

Trên máy có Orbe (Windows), trong Command Prompt. Máy chủ MCP được tích hợp sẵn trong Orbe.exe, nên không cần cài thêm gì:

claude mcp add orbe -- "%LOCALAPPDATA%\Programs\Orbe\app\current\Orbe.exe" --mcp

Nếu bạn cài Orbe vào thư mục khác, hãy dùng Orbe.exe trong app\current của thư mục đó — đường dẫn này luôn trỏ tới phiên bản hiện tại sau mỗi lần cập nhật. Bạn điều khiển máy chủ qua các công cụ orbe, không phải bằng tên.

Công cụ

Công cụChức năng
openMở một hồ sơ (profile, tuỳ chọn headless, url) — gọi lệnh này trước tiên. Tuỳ chọn rotate (boolean; để trống thì theo Rotate IP on open của hồ sơ) và open_on_rotate_fail (boolean, mặc định false). Đổi IP thất bại trả về isError với rotate_failed (<reason>): … cùng reason / retry_after có cấu trúc.
gotoChuyển tab hiện tại tới url.
waitChờ tới khi trang hiện text (trả về found), hoặc chờ seconds giây.
readĐọc toàn bộ chữ đang hiển thị trên trang.
elementsLiệt kê các phần tử có thể thao tác cùng chữ và hộp toạ độ.
clickNhấp phần tử mang text, hoặc toạ độ x,y.
typeGõ text vào phần tử đang được focus; enter: true để gửi.
scrollCuộn một cử chỉ như người theo hướng của dy.
scroll_untilCuộn xuống tới khi text xuất hiện hoặc chạm đáy.
screenshotChụp trang, trả về PNG.
closeĐóng hồ sơ.
list_blocksLiệt kê các khối flow Orbe hỗ trợ và các trường của chúng — hãy đọc trước khi soạn flow. Chỉ là dữ liệu; không cần hồ sơ.
submit_flowGửi một flow (dựng từ các bước của list_blocks) vào Orbe dưới dạng bản nháp — được kiểm tra và lưu, không bao giờ chạy; người dùng xem lại và chạy trong Workflow Editor. Chỉ là dữ liệu.

Hai công cụ cuối cho phép trợ lý dựng một flow cho người dùng thay vì điều khiển trực tiếp trình duyệt: nó đọc list_blocks, viết flow, rồi submit_flow đưa vào Workflow Editor dưới dạng bản nháp để xem lại — không bao giờ tự chạy. Xem Dựng bằng AI.

Có thể mở nhiều hồ sơ cùng lúc; công cụ nào để trống profile sẽ nhắm vào hồ sơ mở gần nhất.

Trợ lý nên làm việc thế nào

  1. open → goto → wait một đoạn chữ đặc trưng trước khi thao tác.
  2. read để biết trang có gì; screenshot khi bố cục hoặc hình ảnh quan trọng.
  3. Nhấp theo chữ trên phần tử — cách đáng tin nhất. Với biểu tượng không có chữ, hãy đọc toạ độ từ ảnh chụp rồi nhấp x,y.
  4. Để gõ vào một ô: click vào ô trước, rồi type.
  5. Để tới thứ nằm bên dưới màn hình, dùng scroll_until, đừng đoán bằng nhiều lệnh scroll.
  6. Sau mỗi thao tác quan trọng, read hoặc wait để xác nhận trang đã đổi — đừng mặc định là thành công.
  7. close khi xong.
Nếu lớp kỷ luật dừng một công cụ, nó trả về BLOCKED (<code>): <reason> với isError và chi tiết có cấu trúc (gồm cụm từ checkpoint, URL và ảnh chụp). Trợ lý phải xử lý — dừng, báo cáo hoặc chờ — chứ không được cứ thế nhấp tiếp.

Quy tắc cho trợ lý

  • Đừng trộn công cụ tự động hoá khác vào hồ sơ Orbe — Playwright, Puppeteer, Selenium hay bất cứ thứ gì gắn vào qua CDP. Chỉ cần gắn một lần là để lại đúng loại dấu vết mà Orbe sinh ra để tránh.
  • Di chuyển như người. Nhịp thời gian đã được mô phỏng sẵn; phần việc của bạn là đừng bắn hàng chục thao tác liên tiếp mà không đọc trang.
  • Đừng nhập mật khẩu hay bí mật mà người dùng chưa đưa cho bạn trong phiên này.

Công thức mẫu

Bản chạy được đầy đủ của các ví dụ này nằm trên trang này, trong examples/ — login_then_post.py, fill_form.py, scrape_list.py và fleet_multi_profile.py (nhiều hồ sơ cùng lúc) — mỗi tệp chỉ dùng orbe và thư viện chuẩn, thông tin đăng nhập đọc từ biến môi trường. Các đoạn dưới đây cho thấy dạng chung.

Đăng nhập, rồi xác nhận

import orbe

with orbe.Trinh("my-profile") as t:
    t.goto("https://example.com/login")
    t.wait_for("Password")
    t.click("Email")
    t.type("me@example.com")
    t.click("Password")
    t.type("...", enter=True)
    if t.wait_for("Your feed", timeout=20):
        print("logged in")
    else:
        t.screenshot("login-stuck.png")   # để bạn xem bằng tay

Tới thứ nằm bên dưới màn hình

with orbe.Trinh("my-profile") as t:
    t.goto("https://example.com/long-page")
    if t.scroll_until("Load more"):
        t.click("Load more")

Nhấp một phần tử chính xác bằng elements()

with orbe.Trinh("my-profile") as t:
    t.goto("https://example.com")
    for el in t.elements():
        if el["type"] == "button" and "Follow" in (el["text"] or ""):
            t.click_xy(el["x"] + el["w"] // 2, el["y"] + el["h"] // 2)
            break

Orbe không làm gì

Không giải captcha Không đảm bảo chống khoá Không CDP / cổng gỡ lỗi

Tự động hoá chỉ gỡ dấu vết tự động hoá; nó không thay đổi cách một nền tảng đánh giá tài khoản. Orbe cho mỗi tài khoản một máy trông như thật và nhất quán, IP riêng và thao tác nhập như người — nhưng cách bạn chăm sóc tài khoản vẫn là phần việc của bạn. Công cụ nào hứa chắc chắn không bị khoá thì không trung thực với bạn.

Xem thêm Bắt đầu và Proxy.