全球动态代理 · 静态住宅代理 · 极高质量 · 包月不限量 · 学员低价 · 联系如意进行免费测试 · 欢迎公司及学员采购 · 另有任何海外数据采集需求,随时联系 · 商务合作微信:Charleval
Automation / 启动方式总览
启动方式

RuyiPage 启动方式总览

RuyiPage 有四种启动方式,适合不同场景。选对入口是第一步,后面的元素、网络、高风控文档才容易对上实际需求。

核心 API

launch

返回: FirefoxPage
launch(headless=False, port=None, browser_path=None, user_dir=None, window_size=None, private=False)

新手首选。一行代码启动 Firefox 并返回 page 对象,内部自动创建 FirefoxOptions。

参数说明
参数说明
headlessTrue 无界面 / False 有界面(调试推荐)。
port调试端口,默认自动分配。
browser_pathFirefox 路径,不传则自动查找。
user_dir用户数据目录,不传则临时目录。
privateTrue 开启隐私模式。
常见坑
  • 最简单但配置能力有限,需要 fpfile/代理等高级配置时用 FirefoxOptions。
相关示例

FirefoxPage

返回: FirefoxPage
FirefoxPage(options=None)

完整配置入口。先创建 FirefoxOptions 设置所有参数,再传入 FirefoxPage 启动。

参数说明
参数说明
optionsFirefoxOptions 实例,不传则使用默认配置。
常见坑
  • 单例模式——同一个 address 只会返回同一个实例。
相关示例

attach

返回: FirefoxPage
attach(address='127.0.0.1:9222')

连接已启动的 Firefox 调试端口,不新开浏览器。适合端口固定的场景。

参数说明
参数说明
address调试地址,格式 host:port。
常见坑
  • 浏览器必须已用 --remote-debugging-port 参数启动。
相关示例

auto_attach_exist_browser_by_process

返回: FirefoxPage
auto_attach_exist_browser_by_process(timeout=0.2, max_workers=16, latest_tab=True)

自动扫描本机 Firefox 进程,找到调试端口并接管。端口不固定时的最佳选择。

参数说明
参数说明
timeout每个端口的连接超时(秒)。
max_workers并行扫描线程数。
latest_tabTrue 自动切换到最新标签页。
常见坑
  • 依赖进程特征匹配,指纹浏览器需确保启动参数包含 --remote-debugging-port。
相关示例

FirefoxOptions 常用配置

opts.set_browser_path

返回: None
opts.set_browser_path(path)

指定 Firefox 可执行文件路径。使用指纹浏览器时必须设置。

参数说明
参数说明
pathFirefox 可执行文件的绝对路径。
相关示例

opts.set_user_dir

返回: None
opts.set_user_dir(path)

指定用户数据目录(profile),复用登录态和 Cookie。

参数说明
参数说明
path目录路径,会自动创建。
常见坑
  • 不设置则使用临时目录,关闭后数据丢失。
相关示例

opts.set_fpfile

返回: None
opts.set_fpfile(path)

加载指纹配置文件,含代理认证、浏览器指纹等底层配置。

参数说明
参数说明
pathfpfile 文件路径。
常见坑
  • fpfile 内容由指纹浏览器生成,格式为 key:value 逐行。
相关示例

opts.set_proxy

返回: None
opts.set_proxy(proxy)

设置 HTTP 代理地址。

参数说明
参数说明
proxy代理地址,格式 http://host:port。
常见坑
  • 代理认证信息建议放在 fpfile 中,不写在代码里。
相关示例

opts.private_mode

返回: None
opts.private_mode(True)

开启隐私浏览模式。

参数说明
参数说明
enableTrue 开启。
常见坑
  • 与临时 profile 不同,隐私模式仍可能使用 user_dir 中的数据。
相关示例

四种方式对比

方式适合场景需要手动启动浏览器配置灵活度
launch()第一次学习、快速测试否,自动启动低(常用参数直接传)
FirefoxOptions + FirefoxPage指纹浏览器、代理、fpfile否,自动启动高(所有配置都可控)
attach(address)端口固定的调试场景是无(只连接)
auto_attach_exist_browser_by_process()端口不固定、指纹浏览器已打开是无(自动扫描)

方式一:launch() 快速启动

python 最简启动
from ruyipage import launch

# 一行启动,最少参数
page = launch(headless=False)
page.get("https://example.com")
print(page.title)
page.quit()
python 带参数启动
page = launch(
    headless=False,
    browser_path=r"C:\Firefox\firefox.exe",  # 指定路径
    user_dir=r"D:\my_profile",                # 复用登录态
    private=True,                             # 隐私模式
)
page.get("https://example.com")
page.quit()

方式二:FirefoxOptions + FirefoxPage 完整配置

python 指纹浏览器 + 代理 + 地区伪装
from ruyipage import FirefoxOptions, FirefoxPage

opts = FirefoxOptions()
opts.set_browser_path(r"C:\Firefox\firefox.exe")
opts.set_fpfile(r"C:\Firefox\profile1.txt")
opts.set_proxy("http://proxy-jp.example.com:8080")
opts.headless(False)

page = FirefoxPage(opts)

# 启动后叠加仿真
page.emulation.set_geolocation(35.6762, 139.6503)
page.emulation.set_timezone("Asia/Tokyo")
page.emulation.set_locale(["ja-JP", "ja"])
page.network.set_extra_headers({"Accept-Language": "ja-JP,ja;q=0.9"})

page.get("https://www.browserscan.net/zh")
page.wait(5)
page.quit()

方式三:attach() 接入已知端口

python 连接已启动的浏览器
# 先手动启动 Firefox:
# firefox.exe --remote-debugging-port=9222

from ruyipage import attach

page = attach("127.0.0.1:9222")
print(f"标题: {page.title}")
print(f"URL: {page.url}")

# 接管后正常操作
page.get("https://example.com")

方式四:auto_attach 自动探测接管

python 自动扫描进程并接管
from ruyipage import auto_attach_exist_browser_by_process

# 不需要知道端口号,自动扫描所有 Firefox 进程
page = auto_attach_exist_browser_by_process(
    timeout=0.2,       # 每个端口的超时
    max_workers=16,    # 并行扫描线程数
    latest_tab=True,   # 切到最新标签页
)

print(f"已接管: {page.browser.address}")
print(f"当前页: {page.title}")
print(f"标签数: {page.tabs_count}")

# 列出所有标签页
for i, tab_id in enumerate(page.tab_ids, 1):
    tab = page.get_tab(i)
    print(f"  [{i}] {tab.title}")

怎么选

  • 第一次学习 → launch(),最少代码跑通。
  • 需要指纹浏览器/代理/fpfile → FirefoxOptions + FirefoxPage。
  • 浏览器已打开且端口固定 → attach(address)。
  • 浏览器已打开但端口不固定 → auto_attach_exist_browser_by_process()。
  • 只是想开隐私模式 → launch(private=True) 或 opts.private_mode(True)。

相关示例源码

4 个示例 ▶ 点击展开

一步上手:最少代码完成访问与读取

examples/01_quickstart.py

最短可运行的 hello-world 级别示例,适合验证环境和建立第一层心智模型。

GitHub 仓库 查看仓库源码 launchpage.getpage.waitpage.titlepage.eleele.textpage.quit
  • 用 launch() 启动 Firefox
  • 访问网页并等待页面稳定
  • 读取标题和 H1 文本
  • 演示最短退出流程

源码文件:app/content/ruyipage_examples/01_quickstart.py · 仓库:01_quickstart.py

python 注释版
# =============================
# RuyiPage 示例注释版
# 标题: 一步上手:最少代码完成访问与读取
# 说明: 最短可运行的 hello-world 级别示例,适合验证环境和建立第一层心智模型。
# 你会学到:
#   1. 用 launch() 启动 Firefox
#   2. 访问网页并等待页面稳定
#   3. 读取标题和 H1 文本
#   4. 演示最短退出流程
# 相关 API: launch, page.get, page.wait, page.title, page.ele, ele.text, page.quit
# =============================

# -*- coding: utf-8 -*-
"""
示例01: 一步上手

面向新手:最少代码完成一次页面访问与元素交互。
"""

import io
import sys


if sys.platform == "win32":
    sys.stdout = io.TextIOWrapper(sys.stdout.buffer, encoding="utf-8")
    sys.stderr = io.TextIOWrapper(sys.stderr.buffer, encoding="utf-8")


from ruyipage import launch


def quickstart_demo():
    print("=" * 60)
    print("示例01: 一步上手")
    print("=" * 60)

    page = launch(headless=False)

    try:
        page.get("https://example.com")
        page.wait(1)
        print(f"标题: {page.title}")

        h1 = page.ele("tag:h1")
        print(f"H1文本: {h1.text}")

        print("\n✓ 快速上手完成")
    finally:
        page.wait(1)
        page.quit()


if __name__ == "__main__":
    quickstart_demo()

隐私模式快速开始

quickstart_private_mode.py

展示 Firefox 私密浏览模式的两种启动方式,以及它与临时 profile 的区别。

GitHub 仓库 查看仓库源码 FirefoxOptionsopts.private_modeFirefoxPagelaunch(private=True)page.getpage.quit
  • 通过 FirefoxOptions 开启私密浏览
  • 通过 launch(private=True) 快速启动
  • 理解私密模式与临时用户目录的区别
  • 验证私密模式下的页面访问流程

指纹浏览器快速开始

quickstart_fingerprint_browser.py

演示如何把 Firefox 指纹浏览器、指纹文件、地理位置、语言和请求头一起接入 RuyiPage。

GitHub 仓库 查看仓库源码 FirefoxOptionsopts.set_browser_pathopts.set_fpfilepage.emulation.set_geolocationpage.emulation.set_timezonepage.emulation.set_localepage.network.set_extra_headerspage.emulation.set_screen_size
  • 加载 Firefox 指纹浏览器可执行文件
  • 通过 fpfile 复用指纹配置
  • 叠加地理位置、时区和语言环境
  • 为请求增加语言请求头
  • 访问指纹检测站点验证效果

自动探测并接管已打开浏览器

examples/39_attach_exist_browser.py

适合 Firefox、ADS、FlowerBrowser 等已打开实例的自动探测接管场景。

GitHub 仓库 查看仓库源码 auto_attach_exist_browser_by_processpage.browser.addresspage.titlepage.url
  • 按进程特征自动探测真实调试端口
  • 接管已打开的 Firefox 或指纹浏览器
  • 自动切到最新标签页
  • 复用已有人机操作会话