
Research
/Security News
737 Chrome VPN Extensions Linked to Brand Impersonation and Browser Traffic Redirection
The campaign amassed more than 75,000 installs by targeting Russian-speaking users seeking access to blocked services.
@mearl/cloud-client
Advanced tools
云端客户端 SDK,用于在云端环境中调用本地浏览器能力。
所有具名 action 方法及其 TypeScript 类型均从 @mearl/client 自动生成;新增本地
client 方法后运行 pnpm generate:cloud-client-api 即可同步,构建和类型检查会校验生成结果。
npm install @mearl/cloud-client
# 或
pnpm add @mearl/cloud-client
import { browserLaunch, browserList, invoke, selectBrowser } from '@mearl/cloud-client';
// 设置环境变量
process.env.MEARL_SERVER_URL = 'ws://your-server.com/ws?token=xxx';
// 调用浏览器能力
const requests = await invoke('get_requests', { count: 5 });
console.log(requests);
// 获取截图
const screenshot = await invoke('page_screenshot', {});
// 托管浏览器也提供具名方法
const managed = await browserLaunch({ name: 'account-a', accountId: 12345 });
// 浏览器列表和默认目标选择也是异步 API
const browsers = await browserList();
const connected = browsers.browsers.find(browser => browser.status === 'connected');
if (connected) await selectBrowser({ browser: connected.browserId });
import { CloudClient } from '@mearl/cloud-client';
const client = new CloudClient({
serverUrl: 'wss://your-server.com/ws?token=xxx',
connectTimeoutSec: 30,
requestTimeoutSec: 60,
});
// 一次性使用
try {
const logs = await client.invoke('get_logs', { limit: 10 });
console.log(logs);
} finally {
client.disconnect();
}
// 长连接复用
await client.invoke('tab_open', { url: 'https://example.com' });
await client.invoke('page_click', { selector: 'button' });
await client.invoke('page_screenshot', {});
await client.browserLaunch({ name: 'account-b', query: 'test_account' });
await client.browserList();
await client.selectBrowser({ browser: 'Edge' });
client.disconnect();
mearl-cloud <action> [options]
示例:
# 获取请求
mearl get_requests --payload '{"count": 5}'
# 获取截图并保存
mearl page_screenshot --output screenshot.png
# 使用自定义服务器
mearl get_logs --server "ws://localhost:8080/ws?token=xxx" --payload '{"limit": 10}'
环境变量:
MEARL_SERVER_URL - WebSocket Server 地址(包含 token)与本地 @mearl/client 完全一致,包括:
get_requests - 获取网络请求get_logs - 获取控制台日志get_events - 获取埋点事件get_api_schema - 获取 API Schemaset_mock - 设置 Mockget_mocks - 获取 Mock 列表set_rule - 添加请求规则get_rules - 查看请求规则send_request - 发送 HTTP 请求(自动携带浏览器 Cookie)tab_open / tab_close / tab_list - 标签页管理page_click / page_type / page_scroll / page_press - 页面交互page_eval / page_navigate / page_wait - 页面控制page_upload - 文件上传page_screenshot - 获取截图page_selected_element - 获取选中元素page_snapshot - 获取页面快照详细参数说明请参考 SKILL.md
云端 Agent
↓
@mearl/cloud-client (本进程)
↓ (WebSocket)
@mearl/cloud-server
↓ (WebSocket)
@mearl/cloud-connector (本地)
↓ (Unix Socket)
@mearl/native-host
↓
Chrome Extension / CDP
try {
const result = await client.invoke('get_requests', { count: 5 });
} catch (error) {
if (error.message.includes('Connection timeout')) {
// 连接超时
} else if (error.message.includes('Connection closed')) {
// 连接断开
} else if (error.message.includes('Request timeout')) {
// 请求超时
} else {
// 其他错误
}
}
@mearl/cloud-connectorCloudClient 实例,避免频繁连接disconnect() 释放资源FAQs
Cloud client SDK for Mearl — control local and remote browsers
The npm package @mearl/cloud-client receives a total of 203 weekly downloads. As such, @mearl/cloud-client popularity was classified as not popular.
We found that @mearl/cloud-client demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 2 open source maintainers collaborating on the project.
Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Research
/Security News
The campaign amassed more than 75,000 installs by targeting Russian-speaking users seeking access to blocked services.

Company News
Open source maintainers are under more pressure than ever. We're raising our open source program from the Team plan to the Business plan, free.

Security News
The supply chain control that delays freshly published gems now covers lockfile generation and gem vendoring in Ruby projects.