# @aw1875/ghost-cursor 中文文档

规范地址：https://npmcn.com/package/%40aw1875/ghost-cursor/

版本：1\.1\.10
npm 元数据更新时间：2022-04-04T16:49:12.565Z
中文译文更新时间：2026-11-09T22:52:47.081Z
软件包许可：ISC

本文由上游 README 翻译，可能存在偏差，请结合原文核对 API、命令与配置。版权与许可归原作者所有。

原始 npm 页面：https://www.npmjs.com/package/%40aw1875/ghost-cursor
原文对照：https://npmcn.com/package/%40aw1875/ghost-cursor/?lang=original
项目主页：https://github.com/aw1875/ghost-cursor#readme
源码仓库：https://github.com/aw1875/ghost-cursor

## 关键信息（来自 npm 元数据）

- 包体积（解压后）：42.4 kB，9 个文件
- 模块格式：CommonJS
- TypeScript 类型：包内自带
- 运行依赖：1 个
- 首次发布：2022-02-16T03:55:21.213Z
- 最新版本发布：2022-02-16T04:03:29.562Z
- 近 30 天下载量：1704（2026-10-07 至 2026-11-05，npm 官方下载统计）
- 已发布版本数：3（近 12 个月 0 个）

## 中文简介

将鼠标像人一样移动在木偶机上,或在任何2D平面上产生现实的运动

## 安装

```sh
npm install @aw1875/ghost-cursor
```

也可以使用：`pnpm add @aw1875/ghost-cursor`、`yarn add @aw1875/ghost-cursor`、`bun add @aw1875/ghost-cursor`

## README

# 幽灵光标

![](https://media2.giphy.com/media/26ufp2LYURTvL5PRS/giphy.gif)

生成像人一样现实的鼠标在坐标之间移动数据, 或者在带有傀儡的元素之间导航 就像你绝对不是机器人.

> 是吗? 机器人可以吗 _**这个?**_

**基于 [幽灵诅咒](https://github.com/Xetera/ghost-cursor) 软件包**

## 安装

```sh
yarn add @aw1875/ghost-cursor
```

或带 npm

```sh
npm install @aw1875/ghost-cursor
```

## 使用量

生成2个坐标与相关时间戳之间的运动数据.

```js
import { path } from "@aw1875/ghost-cursor";

const from = { x: 100, y: 100 };
const to = { x: 600, y: 700 };

const route = path(from, to);

/**
 * [
 *   { x: 100, y: 100, timestamp: 1640158937890 },
 *   { x: 126.70079722115054, y: 106.31184259284494, timestamp: 1640158939620 },
 *   { x: 151.74738386288035, y: 112.34993715686089, timestamp: 1640158939565 },
 *   { x: 175.33112687647585, y: 118.45478710608484, timestamp: 1640158939763 },
 *   { x: 197.6433932132232, y: 124.96689585455373, timestamp: 1640158939408 },
 *   ... and so on
 * ]
 */
```

使用傀儡:

```js
import { createCursor } from "@aw1875/ghost-cursor";
import puppeteer from "puppeteer";

const run = async (url) => {
  const selector = "#sign-up button";
  const browser = await puppeteer.launch({ headless: false });
  const page = browser.newPage();
  const cursor = createCursor(page);
  await page.goto(url);
  await page.waitForSelector(selector);
  await cursor.click(selector);
  // shorthand for
  // await cursor.move(selector)
  // await cursor.click()
};
```

### 傀儡人特有的行为

-   `cursor.move()` 将自动过度射击或略为错过,并重新适应距离太远的元素 从光标的起点.
-   移动对象时,将选择元素内的随机坐标,而不是 徘徊在元素的正中央.
-   鼠标的速度将考虑您点击的元素的距离和大小.

  

![ghost-cursor in action](https://cdn.discordapp.com/attachments/418699380833648644/664110683054538772/acc_gen.gif)

> 窗体上的幽灵光标

## 怎么会这样

贝塞尔曲线几乎是这里所有的工作. 它们让我们创造出无限的曲线 在任何两点之间 他们看起来很像人类 (至少比Perlin或simplex噪声等替代品更为重要)

![](https://mamamoo.xetera.dev/%F0%9F%98%BD%F0%9F%A4%B5%F0%9F%91%B2%F0%9F%A7%A6%F0%9F%91%B5.png)

魔法来源于能够为曲线通过设定多点. 这是通过采摘完成的 2在曲线上和下的一个有限区域随机坐标.

![](https://mamamoo.xetera.dev/%F0%9F%A7%A3%F0%9F%91%8E%F0%9F%98%A0%F0%9F%A7%9F%E2%9C%8D.png)

但是,我们不想在使用这种方法时 出现奇特的立方曲线,因为没有人真的会移动鼠标 这样,所以在产生随机分数时,只取出一行的一面.

![](http://simonwallner.at/ext/fitts/shannon.png) 当计算鼠标移动的速度时,我们使用 [菲茨法则](https://en.wikipedia.org/wiki/Fitts%27s_law) 以决定我们应该返回的点数相对于被点击元素的宽度和距离 在鼠标和对象之间.

## 常见问题

### @aw1875/ghost-cursor 是什么？

将鼠标像人一样移动在木偶机上,或在任何2D平面上产生现实的运动

### 如何安装 @aw1875/ghost-cursor？

在项目目录运行 npm install @aw1875/ghost-cursor，或使用 pnpm add / yarn add / bun add。

### @aw1875/ghost-cursor 支持 TypeScript 吗？

支持。包内自带 TypeScript 类型声明（package\.json 声明了 types 入口），安装后即可获得类型提示，无需再安装 @types 包。

### @aw1875/ghost-cursor 支持 ESM 还是 CommonJS？

以 CommonJS 形式发布，可以直接 require\(\)；在 ES Module 项目中也可以用 import 引入（Node\.js 会把 module\.exports 作为默认导出）。

### @aw1875/ghost-cursor 可以商用吗？

@aw1875/ghost-cursor 使用 ISC 许可。宽松许可：允许商业使用、修改和再分发，通常只需在分发时保留原版权与许可声明。以上为概括，不构成法律意见，请以许可原文为准。

### @aw1875/ghost-cursor 的下载量有多少？

根据 npm 官方下载统计，@aw1875/ghost-cursor 在 2026/10/07 – 2026/11/05 这 30 天内被下载 1,704 次，日均约 57 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入，适合横向比较热度，不能直接等同于使用人数。

### @aw1875/ghost-cursor 还在维护吗？

最新版本 1\.1\.10 发布于 2022/02/16（4 年前）；至今共发布 3 个版本，其中过去 12 个月发布了 0 个；首次发布于 2022/02/16。发布频率只是参考信号：功能稳定的工具可能很少需要更新，建议结合源码仓库的 issue 和提交记录判断。

