概述

浏览器模式基于 Playwright 实现,支持通过 Cloudflare Workers (edgetunnel) 代理浏览器流量,可以获取 JavaScript 动态渲染的内容。

依赖安装

使用浏览器模式需要安装以下依赖:

bash
# 安装带浏览器支持的 cfspider
pip install cfspider[browser]

# 安装 Chromium 浏览器
cfspider install

cfspider.Browser

浏览器类,封装 Playwright,支持通过 VLESS 代理访问网页。

类定义

python
class Browser:
    def __init__(
        self,
        cf_proxies: str = None,
        vless_uuid: str = None,
        headless: bool = True,
        **kwargs
    )
    
    def html(url: str, wait_until: str = "networkidle") -> str
    def close()

初始化参数

参数 类型 默认值 说明
cf_proxies str None

代理地址,支持以下格式:

  • VLESS 链接"vless://uuid@host:443?path=/"(推荐,无需填写 UUID)
  • 本地代理"127.0.0.1:9674""http://127.0.0.1:9674"
  • edgetunnel 域名"v2.example.com"(需要配合 vless_uuid 使用)
vless_uuid str None VLESS UUID(仅在使用 edgetunnel 域名时需要)
headless bool True 是否使用无头模式。False 时会显示浏览器窗口
**kwargs dict - 传递给 Playwright 的其他参数(如 timeout, viewport 等)

方法

方法 说明
html(url, wait_until="networkidle")

获取网页的 HTML 内容。

参数:

  • url (str):目标 URL
  • wait_until (str):等待条件,可选值:
    • "networkidle":等待网络空闲(默认)
    • "load":等待页面加载完成
    • "domcontentloaded":等待 DOM 加载完成

返回:网页的 HTML 字符串

close() 关闭浏览器实例

使用示例

使用 VLESS 链接(推荐)

python
import cfspider

# 使用 VLESS 链接,无需填写 UUID
browser = cfspider.Browser(
    cf_proxies="vless://your-uuid@v2.example.com:443?path=/"
)
html = browser.html("https://httpbin.org/ip")
print(html)  # 返回 Cloudflare IP
browser.close()

使用本地 HTTP 代理

python
browser = cfspider.Browser(cf_proxies="127.0.0.1:9674")
html = browser.html("https://httpbin.org/ip")
print(html)
browser.close()

使用 edgetunnel 域名 + UUID(旧方式)

python
browser = cfspider.Browser(
    cf_proxies="v2.example.com",
    vless_uuid="your-vless-uuid"
)
html = browser.html("https://httpbin.org/ip")
browser.close()

无代理模式

python
browser = cfspider.Browser()
html = browser.html("https://example.com")
browser.close()

使用上下文管理器

python
with cfspider.Browser(cf_proxies="vless://...") as browser:
    html = browser.html("https://example.com")
    # 自动关闭

显示浏览器窗口

python
browser = cfspider.Browser(
    cf_proxies="vless://...",
    headless=False  # 显示浏览器窗口
)
html = browser.html("https://example.com")
browser.close()

cfspider.install_browser()

安装 Chromium 浏览器。

使用示例

python
import cfspider

# 安装浏览器
cfspider.install_browser()

# 或使用命令行
# cfspider install

cfspider.parse_vless_link()

解析 VLESS 链接,提取 UUID、主机、端口、路径等信息。

函数签名

python
cfspider.parse_vless_link(vless_link: str) -> dict

支持的格式

返回值

返回包含以下键的字典:

使用示例

python
import cfspider

link = "vless://uuid@v2.example.com:443?path=/"
info = cfspider.parse_vless_link(link)
print(info)
# {'uuid': 'uuid', 'host': 'v2.example.com', 'port': 443, 'path': '/'}

错误处理

python
import cfspider

try:
    browser = cfspider.Browser(cf_proxies="vless://...")
    html = browser.html("https://example.com")
except cfspider.BrowserNotInstalledError:
    print("浏览器未安装,请运行: cfspider install")
except cfspider.PlaywrightNotInstalledError:
    print("Playwright 未安装,请运行: pip install playwright")
finally:
    browser.close()