Metadata-Version: 2.4
Name: fp-browser-manager
Version: 1.1.0
Summary: Universal fingerprint browser manager — supports fp-manager, AdsPower, BitBrowser via pluggable drivers.
Author-email: Your Name <you@example.com>
License: MIT
Project-URL: Homepage, https://github.com/freeDevelopmentDog/fp_manager
Project-URL: Repository, https://github.com/freeDevelopmentDog/fp_manager
Project-URL: Issues, https://github.com/freeDevelopmentDog/fp_manager/issues
Keywords: fingerprint,browser,automation,fp-manager,adspower,bitbrowser,selenium,playwright
Classifier: Development Status :: 3 - Alpha
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: MIT License
Classifier: Operating System :: Microsoft :: Windows
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Topic :: Software Development :: Libraries :: Python Modules
Requires-Python: >=3.10
Description-Content-Type: text/markdown
License-File: LICENSE
Provides-Extra: ads
Requires-Dist: requests; extra == "ads"
Provides-Extra: bit
Requires-Dist: requests; extra == "bit"
Provides-Extra: fp
Requires-Dist: requests; extra == "fp"
Requires-Dist: psutil; extra == "fp"
Provides-Extra: all
Requires-Dist: requests; extra == "all"
Requires-Dist: psutil; extra == "all"
Dynamic: license-file

# fp-browser-manager

通用指纹浏览器管理器，支持 fp-manager / AdsPower / BitBrowser 三种浏览器，插拔式驱动设计，业务侧只需三行代码。

## 安装

```bash
pip install fp-browser-manager
```

按需安装驱动依赖：

```bash
pip install fp-browser-manager[fp]      # fp-manager 驱动（含 psutil）
pip install fp-browser-manager[ads]      # AdsPower / SunBrowser 驱动
pip install fp-browser-manager[bit]     # BitBrowser 驱动
pip install fp-browser-manager[all]     # 全部驱动
```

## 快速开始

```python
from fp_manager import BrowserManager, start_background_cleanup

mgr = BrowserManager.create(kind="fp")   # kind: "fp" | "ads" | "bit"
start_background_cleanup()               # 启动后台孤儿清理守护线程

# 创建并打开浏览器
brid = mgr.create()
port = mgr.get_port(brid)

# 业务代码...
print(f"Browser debug port: {port}")

# 关闭浏览器
mgr.close(brid)
```

## API 层（可选）

如只需 fp-manager HTTP API 而不需要管理器，直接用 `fp_manager.api`：

```python
from fp_manager.api import FpBrowser, FpManagerClient, ProxyConfig

# 低级 API 客户端
client = FpManagerClient("http://127.0.0.1:17890")
session = client.create_and_start(name="test", template="truepeoplesearch")
print(session.remote_debug_port)

# 高级浏览器封装
fp = FpBrowser()
browser = fp.create_and_open(proxy=("host", 10000, "user", "pass"))
fp.close_browser(browser.id)
```

## 支持的浏览器

| 浏览器 | kind 参数 | 默认端口 |
|--------|-----------|---------|
| fp-manager | `"fp"` | `http://127.0.0.1:17890` |
| AdsPower / SunBrowser | `"ads"` | `http://127.0.0.1:50325` |
| BitBrowser | `"bit"` | `http://127.0.0.1:54345` |

## 核心接口

```python
# BrowserManager 实例方法
mgr.create(proxy=None)       # 创建并打开浏览器，返回 profile_id
mgr.get_port(brid)           # 获取 debug_port（Selenium / Playwright 接入用）
mgr.close(brid)             # 关闭浏览器

# 后台清理（进程启动一次即可）
start_background_cleanup()   # 启动孤儿进程扫描 + 未绑定 profile 清理
stop_background_cleanup()    # 停止后台清理
```

## 驱动扩展

如需接入其他指纹浏览器，实现 `FpDriver` / `AdsDriver` / `BitDriver` Protocol 并注入即可：

```python
from fp_manager import FpBrowserManager
from fp_manager.drivers.base import FpDriver

class MyDriver(FpDriver):
    ...

mgr = FpBrowserManager(driver=MyDriver())
```
