关于 Windows 下 ChatGPT App 不尊重 .env 代理服务器的解决办法

Zander 2026-07-22 17:47 1

如果你不喜欢使用tun/proxifier等全局代理方式,你可能已经尝试过了修改$HOME/.codex/.env加入


all_proxy=socks5h://127.0.0.1:1081
https_proxy=http://127.0.0.1:1081
http_proxy=http://127.0.0.1:1081
no_proxy=localhost,127.0.0.1,::1,.your.sub2api.com

来达到免全局的效果。然而我发现 macOS 下 ChatGPT App 打开很快,速度类似启用 TUN,但是 Windows 下开的很慢。


今天发现是因为 Windows 下 Chromium 没有读取环境变量。但是我们可以通过参数--proxy-server=socks5://127.0.0.1:1081 来让 Chromium 也用上代理。实测官方帐号登陆下 Remote Control 正常工作。


方法一


找到 WindowsApps 里的 .exe,在桌面创建快捷方式如下。但是AppX包每次更新都会改路径,现在ChatGPT一天更新好几次,这个方法其实不太实用。


方法二


新建一个.ps1,运行即可。做个快捷方式改下图标,就完成了。


$pkg = Get-AppxPackage |
Where-Object Name -Match "ChatGPT|OpenAI" |
Sort-Object Version -Descending |
Select-Object -First 1

$exe = Get-ChildItem $pkg.InstallLocation `
-Filter ChatGPT.exe -Recurse |
Select-Object -First 1

Start-Process $exe.FullName `
-ArgumentList "--proxy-server=socks5://127.0.0.1:1081"

方法三


经朋友提醒 Codex++ 用户有个很方便的注入参数的地方。


方法四


让AI帮你生成一个包裹脚本的快捷方式放到开始菜单,从开始菜单启动。创建后可能被杀毒软件误杀。


$shortcutPath = "$env:APPDATA\Microsoft\Windows\Start Menu\Programs\ChatGPT Proxy.lnk"

$launchScript = @'
$pkg = Get-AppxPackage |
Where-Object Name -Match "ChatGPT|OpenAI" |
Sort-Object Version -Descending |
Select-Object -First 1

$exe = Get-ChildItem $pkg.InstallLocation -Filter ChatGPT.exe -Recurse |
Select-Object -First 1

Start-Process $exe.FullName -ArgumentList "--proxy-server=socks5://127.0.0.1:1081"
'@

$bytes = [System.Text.Encoding]::Unicode.GetBytes($launchScript)
$encoded = [Convert]::ToBase64String($bytes)

$ws = New-Object -ComObject WScript.Shell
$shortcut = $ws.CreateShortcut($shortcutPath)

$shortcut.TargetPath = "$env:SystemRoot\System32\WindowsPowerShell\v1.0\powershell.exe"
$shortcut.Arguments = "-NoProfile -WindowStyle Hidden -EncodedCommand $encoded"
$shortcut.Description = "ChatGPT via SOCKS5 Proxy"

# 使用当前 ChatGPT.exe 的图标
$pkg = Get-AppxPackage |
Where-Object Name -Match "ChatGPT|OpenAI" |
Sort-Object Version -Descending |
Select-Object -First 1

$exe = Get-ChildItem $pkg.InstallLocation -Filter ChatGPT.exe -Recurse |
Select-Object -First 1

if ($exe) {
$shortcut.IconLocation = "$($exe.FullName),0"
}

$shortcut.Save()

Write-Host "Shortcut created:"
Write-Host $shortcutPath
Write-Host "Exists:" (Test-Path $shortcutPath)
最新回复 (6)
  • Zachary_H 07-25 18:26
    1

    我现在存在的问题是,我直接点开 ChatGPT APP,它其实好像功能上是有问题的,我必须要加一行参数才能在命令行里正常打开。这有什么办法吗?这是为什么?-proxy-server

  • LenGary 07-25 18:37
    2

    我直接在win的环境变量里把http和https全部指向clash去的话,是不是等于变相开了tun?

  • Zander 楼主 07-27 09:26
    3

    有没有具体一点的信息,截图,报错,之类的。

  • Zander 楼主 07-27 09:29
    4

    相当于半个全局吧,毕竟 Win 下不是所有软件都读 http_proxy 环境变量的,也就最近 electron/tauri 流行多了起来,以前 c/c++ 的还是 WinHTTP 为主。

  • redpandaxd 09-08 22:07
    5

    最近一次的更新后,似乎不能这么用的了,

    说是WindowsApps下的文件有严格的 ACL 保护

  • doSth 09-09 21:34
    6


    codex++没效果啊

* 帖子来源Linux.do
返回