参考地址:https://github.com/chengazhen/cursor-auto-free

在本篇文章开始之前,确保你已经安装好了 Cursor[https://www.cursor.com/]

本篇文章主要介绍cursor-auto-free这个项目的使用。

源代码构建或者下载执行文件

我们可以通过 git clone 命令来下载源代码,或者直接在 Release 页面下载已经构建好的执行文件。

然后我们根据项目配置要求,配置变量

需要使用 cloudflare 域名邮箱,请自行搜索如何使用 cloudflare 域名邮箱,请自行搜索如何使用。
(非常重要) 需要使用 temp-mail.plus 邮箱,请自行搜索如何使用 temp-mail.plus 邮箱。
将 cloudflare 的域名邮箱转发到 temp-mail.plus 邮箱。
下载 .env.example 文件到程序所在根目录,并重命名为 .env 文件。
修改 .env 文件中的配置。

下文将告诉你如何配置这些变量。

配置变量

使用Cloudflare的前提是要有一个域名。

有了域名以后,我们就把它托管到Cloudflare上。我们先登录一下Cloudflare,没有账号就注册一个。右上角点击添加站点,输入你的域名,然后点击继续。这里有一些付费的,我们都不要,直接找下面这个免费的,点击继续。

一路下一步。这步是重点,更改名称服务器。找到这两个名称服务器。

我们需要去刚才买域名的网站更改一下DNS地址r。就把这里改一下,把原来的全部删掉,然后填上刚才网站给我分配的这两个DNS,点击保存。

我们再回到Cloudflare,点击立即检查,等待一段时间后,显示成功或者当cloudflare 发送成功邮件到你的邮箱,就表示成功了。

在验证成功后,我们就可以使用 Cloudflare 的域名邮箱了。

在任务栏,点击电子邮件,启用电子邮件,根据提示下一步即可。

成功开通后,点击路由规则,这里有一个catch-all地址,我们点击右侧的编辑,然后点击添加规则,选择转发到,然后填上我们的 temp-mail.plus 邮箱地址,点击保存。

这时我们在 temp-mail.plus 邮箱中就可以收到 Cloudflare 的验证邮件,点击验证即可。

当显示以下时表示验证成功,且可以正常使用。

这时我们把我们域名邮箱和 temp-mail.plus 邮箱前缀填入到 .env 文件中,运行 cursor-pro-keep-alive.py/ 可执行文件 即可。

运行中可能遇到的问题

这是因为 Google 浏览器不正常安装导致的,如果确定已经安装了 Google 浏览器,更改如下代码即可。

# browser_utils.py
from DrissionPage import ChromiumOptions, Chromium
import sys
import os
import logging


class BrowserManager:
  def __init__(self):
    self.browser = None
    self.browser_executable_path = None

  def set_browser_path(self, path):
    """Set the path to the browser executable."""
    self.browser_executable_path = path

  def init_browser(self):
    """Initialize the browser."""
    co = self._get_browser_options()
    self.browser = Chromium(co)
    return self.browser

  def _get_browser_options(self):
    """获取浏览器配置"""
    co = ChromiumOptions()
    try:
      extension_path = self._get_extension_path()
      co.add_extension(extension_path)
    except FileNotFoundError as e:
      logging.warning(f"Warning: {e}")

    co.set_user_agent(
      "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/130.0.6723.92 "
      "Safari/537.36"
    )
    co.set_pref("credentials_enable_service", False)
    co.set_argument("--hide-crash-restore-bubble")
    co.auto_port()
    co.headless(True)  # Use headless mode in production

    # Special handling for Mac systems
    if sys.platform == "darwin":
      co.set_argument("--no-sandbox")
      co.set_argument("--disable-gpu")

    # Set the browser executable path if provided
    if self.browser_executable_path:
      co.set_browser_path(self.browser_executable_path)

    return co

  def _get_extension_path(self):
    """Get the extension path."""
    root_dir = os.getcwd()
    extension_path = os.path.join(root_dir, "turnstilePatch")

    if hasattr(sys, "_MEIPASS"):
      extension_path = os.path.join(sys._MEIPASS, "turnstilePatch")

    if not os.path.exists(extension_path):
      raise FileNotFoundError(f"Extension not found: {extension_path}")

    return extension_path

  def quit(self):
    """Close the browser."""
    if self.browser:
      try:
        self.browser.quit()
      except:
        pass
# cursor_pro_keep_alive.py
if __name__ == "__main__":
    print_logo()
    browser_manager = None
    try:
        logging.info("\n=== 初始化程序 ===")
        ExitCursor()
        logging.info("正在初始化浏览器...")
        browser_manager = BrowserManager()
        # 添加以下这行,手动设置浏览器路径
        browser_manager.set_browser_path("C:\\Program Files\\Google\\Chrome\\Application\\chrome.exe")
        browser = browser_manager.init_browser()