安装了 proxychains-ng 来强制特定程序走代理,发现在 macOS 上有时可以正常工作有时不行

经查询是 macOS SIP 的问题

因为 proxychains4 的工作原理是替换子程序的动态链接库来强制走代理,而 macOS SIP 为了安全考虑会阻止所有内置 executable 被替换动态链接库,以至 proxychains4 对所有内置 executable 无法正常工作,比如 /usr/bin/ 下的所有

解决方法,使用 Homebrew 安装的版本就好,通过 Homebrew 安装的程序就没有 SIP 保护 (实在只能用内置就只好关闭 SIP 了

如果 /usr/bin 和 /opt/homebrew/bin 下都有某个程序,可通过调整 PATH 里 /opt/homebrew/bin 的位置来调整优先级

特例,通过 Homebrew 安装的 curl 在 /opt/homebrew/opt/curl/bin

1export PATH=/opt/homebrew/bin:/usr/bin:$PATH