Proxychains 是我在 Linux 上经常使用的一个工具,它可以让你在终端中使用 SOCKS 代理。然而,在我使用的 M 系列芯片的 Mac Mini 上时,它的工作似乎并不太好。此篇文章将介绍我遇到的问题,以及我为此做的探索。
问题描述
我使用的是一台 M 系列芯片的 Mac Mini,装的是 MacOS 14.5。当我使用 proxychains 时,我发现它并不能正确地工作。具体表现为,当我使用
探索过程
该问题首先出现在使用 brew 安装的 proxychains-ng 上。
随后我在 Proxychains-NG 的 GitHub 仓库上找到了一个 issue,看起来是与我的情况一致的。
根据里面的导引,我尝试使用
但实际操作后,错误同上。
在多次尝试 issue 中提到的解决方法后,仍然无法正常工作。
解决方法
先决条件 - 删除/卸载/删除之前的 proxychains 文件。
这一步虽然不是绝对必要的,但为了避免潜在的问题,我还是执行了。主要目的是清理之前可能存在的 proxychains/proxychains-ng 相关文件,尤其是通过 brew 安装或手动执行 make install 安装的文件。
虽然可能存在更优雅的方法,但我采用了一个简单直接的方式:使用 find 命令搜索并删除所有包含 "proxychains" 子串的文件。具体操作如下:
编译 proxychains-ng
-
克隆并进入 proxychains-ng 仓库:
-
配置编译选项并执行:
-
编译源码:
-
返回上级目录并重命名文件夹(为后续步骤做准备):
注意:此步骤仅编译源码,不进行安装。确保不要执行
启用 arm64e 架构支持
为了在 M 系列芯片的 Mac 上正确编译和运行 proxychains-ng,我们需要启用 arm64e 架构支持。以下是详细的操作步骤:
-
关闭您的 Mac 设备。
-
进入恢复模式:
- 长按电源按钮开机。
- 持续按住,直到看到"正在加载启动选项"或类似提示。
-
在恢复模式界面中:
- 选择"选项"或"实用工具"。
- 点击您的用户账户并输入密码。
-
打开终端:
- 使用快捷键 ⌘CMD+SHIFT+T。
-
禁用系统完整性保护(SIP):
- 在终端中执行以下命令:
- 系统会要求您确认操作,输入 'y' 并回车。
- 可能需要输入管理员密码。
- 注意:此操作可能需要等待约一分钟完成。
- 在终端中执行以下命令:
-
重启进入正常模式:
- 在终端中执行:
- 在终端中执行:
-
启用 arm64e 支持:
- 重启后登录系统。
- 打开终端,执行以下命令:
-
再次重启以应用更改:
- 在终端中执行:
- 在终端中执行:
完成这些步骤后,Mac 将支持 arm64e 架构,为后续编译 proxychains-ng 做好准备。
再次编译 proxychains-ng
-
再次克隆 proxychains-ng 仓库并进入目录:
-
配置编译选项:
-
编译源码(注意不要执行安装):
注意:以上步骤仅编译源码,不进行安装。请确保不要执行
替换二进制文件
在步骤 1 中,我们编译了一个临时版本的 proxychains-ng 并将其重命名为 proxychains-ng-temp。现在,我们需要用这个临时版本中的二进制文件替换刚刚编译的 proxychains4 文件。
-
删除新编译的 proxychains4 文件:
-
将临时版本的 proxychains4 二进制文件移动到当前目录:
-
验证文件替换:
这样,我们就成功用兼容 M 系列芯片的版本替换了新编译的二进制文件。
重要注意事项与最终配置
至此,我们已经成功编译并配置了适用于 M 系列芯片 Mac 的 proxychains-ng。现在,让我们完成最后的步骤,确保系统安全性并开始使用 proxychains。
清理与安全设置
-
删除临时文件: 可以安全地删除之前创建的
文件夹,它已完成其任务。 -
重新启用系统完整性保护(SIP): 我们之前为了某些配置步骤暂时禁用了 SIP。现在是时候重新启用它以确保系统安全。以下是详细步骤:
a) 关闭您的 Mac。 b) 进入恢复模式:长按电源按钮开机,直到看到"正在加载启动选项"。 c) 选择"选项"或"实用工具"。 d) 选择您的用户账户并输入密码。 e) 打开终端(使用 ⌘CMD+SHIFT+T)。 f) 执行以下命令启用 SIP:
按提示输入 'y' 并回车,可能还需要输入管理员密码。 g) 等待约一分钟,然后重启进入正常模式:
使用 proxychains
每次使用 proxychains 时,需要指定配置文件。配置文件位于 proxychains-ng 源码目录的 src 文件夹中。使用方法如下:
碎碎念
在你经历了上述的尝试之后,你会发现如果将系统完整性等安全性设置重新打开后,proxychains 将无法正常工作。至少在我这里是这样的。我猜测可能是因为 proxychains 的某些特性与系统完整性保护(SIP)存在冲突。
最后的结果是我不得不放弃使用 proxychains,转而使用 Proxifier 来作为我的代理工具。如果你也深受 proxychains 无法在 M 系列芯片的 Mac 上正常工作的问题的困扰,不妨试试 Proxifier。
Proxifier 在我使用的过程中,表现出了非常好的性能与稳定性。至于 proxychains,我仍然在 Linux 上使用它。