Google Earth Pro 无法联网 — 问题分析与解决方案
文档生成日期:2026-10-04
相关文件目录:C:\Users\Administrator\gost-proxy\
目录
一、问题现象
Google Earth Pro 启动时报两个错误:
- 「无法连接到登录服务器」,错误代码
c000000c - 「无法连接到数据库」,提示网址
http://kh.google.com:80/ 可能无效
表现为地图一片空白,卫星影像加载不出来。
二、问题根源(逐层拆解)
第 1 层:Google 服务被墙
kh.google.com 是 Google Earth 的卫星影像数据库服务器,*.google.com 登录服务器同理,国内直连会被阻断。
但由于本机已安装代理(蚂蚁加速器)、浏览器也能访问 Google,所以问题不止于此。
第 2 层:代理开着,Google Earth 却用不上
经逐项实测排查:
| 验证项 | 结果 | 结论 |
|---|---|---|
| 蚂蚁 SOCKS5 代理(1080)能否连 Google | ✅ 能(kh.google.com 返回 404 = 已到达服务器) |
代理本身正常 |
| 蚂蚁监听的端口 | 仅 1080 (SOCKS5) | 没有 HTTP 代理端口 |
| 系统代理设置 | ProxyServer=127.0.0.1:1080,已启用 |
被当成 HTTP 代理登记 |
| 用 HTTP 代理协议连 1080 | ❌ 失败(返回 000) | 1080 只懂 SOCKS5,不懂 HTTP 代理协议 |
根因:蚂蚁加速器把 Windows 系统代理设成了 127.0.0.1:1080,但该端口实际是 SOCKS5 协议,而系统把它当作 HTTP 代理 使用,两种协议不匹配。
三、核心原理
原理 1:SOCKS5 代理 ≠ HTTP 代理
两者是不同的”握手语言”:
- HTTP 代理:程序对代理发送
CONNECT kh.google.com:80 HTTP/1.1,使用 HTTP 语法。 - SOCKS5 代理:程序与代理之间使用二进制握手协议(先协商版本/认证,再发送目标地址),与 HTTP 完全不同。
一个只开 SOCKS5 的端口(1080),若用 HTTP 代理语法与之通信,它无法理解 → 连接失败。
这解释了为何 -x http://127.0.0.1:1080 返回 000,而 --socks5 127.0.0.1:1080 成功。
原理 2:蚂蚁的”全局模式”靠系统代理实现,不是 TUN
代理软件让流量翻墙主要有两种机制:
| 机制 | 原理 | 哪些程序会被代理 |
|---|---|---|
| 系统代理(蚂蚁使用) | 往注册表写 ProxyServer,告诉程序”把流量发给此代理” |
仅主动读取系统代理、且愿意走代理的程序(如浏览器) |
| TUN 模式 / 虚拟网卡(Clash、v2rayN 具备) | 虚拟一张网卡,在操作系统网络层劫持所有流量 | 所有程序,无差别 |
蚂蚁加速器没有 TUN 模式,其”全局模式”本质仍是系统代理。
系统代理是”请求式”的 —— 程序必须自己愿意读、愿意走才生效。
原理 3:Google Earth 不走这套系统代理
Google Earth Pro 使用自己的网络栈。它要么不读系统代理,要么即使读取也只按 HTTP 代理协议去连(而系统代理指向的 1080 是 SOCKS5,协议不匹配)。两种情况结果相同:蚂蚁的全局模式管不到 Google Earth。
一句话根因:蚂蚁只会说 SOCKS5,而 Google Earth 只会听 HTTP 代理,中间缺少翻译,双方无法通信。
原理 4:系统代理是怎么实现”流量转发”的
这里有一个常见误解需要澄清:
“系统代理”本身并不转发流量。它只是一块”告示牌”,真正转发流量的是代理服务器程序(gost、蚂蚁)。
(1) 系统代理只是一条配置
它就是注册表里的一个字符串:1
2ProxyEnable = 1
ProxyServer = 127.0.0.1:1088
这条配置本身不是程序、不会运行、不搬运任何数据。它的唯一作用是告诉程序:”要上网别自己直连,去找 127.0.0.1:1088 这个代理。”
(2) 一次请求的完整旅程
以浏览器/Google Earth 访问 kh.google.com 为例:1
2
3
4
5
61. 程序要访问 kh.google.com
2. 程序调用 Windows 网络库(WinINet / WinHTTP)
3. 该库读取注册表,发现配了代理 127.0.0.1:1088
4. 于是库不去连 kh.google.com,而是连 127.0.0.1:1088(gost),
并告诉它:"我要访问 kh.google.com,帮我转一下"
5. gost 代替程序去连目标 → 双向搬运数据 → 返回给程序
关键在第 2~3 步:程序之所以”乖乖去找代理”,是因为它使用了 Windows 的网络库(WinINet.dll / WinHTTP.dll),而这些库被设计成会主动读取注册表里的代理配置。
这也解释了:不使用这些库、直接走原始 socket 的程序(某些游戏、命令行工具),根本不会去读注册表,也就不会走代理。
(3) 代理服务器是怎么”转发”的
真正的转发发生在代理服务器(gost / 蚂蚁)一端,分两种情况:
- 普通 HTTP(明文):程序把整条请求发给代理(
GET http://kh.google.com/ ...),代理解析出目标,代替程序去访问并回传结果,代理能看到内容。 - HTTPS(加密,CONNECT 隧道):程序先发
CONNECT www.google.com:443,代理建立一条到目标的 TCP 隧道,之后只做字节搬运(内容加密,代理看不到)。
这个”代替你去连目标、双向搬运数据”的动作,就是转发(中继)的本质。
(4) 类比:公司前台转接电话
- 系统代理设置 = 公司规定”所有外线先拨分机 1088(前台)” —— 这是一条规定,本身不传话。
- gost(前台) = 真正接起电话、帮你转接的人。
- 蚂蚁(总机) = 前台把电话转给有外线权限的总机,由它拨出境。
- 境外节点 = 最终帮你接通对方的线路。
你能打通电话,靠的是”前台、总机”这些人(程序)在转接;而”先拨 1088”只是让你知道该找谁 —— 这就是系统代理的角色。
四、解决思路
既然问题是”蚂蚁只提供 SOCKS5,而 GE 只认 HTTP 代理”,解决办法是在中间加一个翻译官:
搭建一个本地 HTTP 代理,接收 Google Earth 的 HTTP 代理请求,翻译成 SOCKS5 后转发给蚂蚁。
这个翻译官使用 gost(GO Simple Tunnel,轻量级代理转发工具)实现。
五、技术实现
1. 用 gost 搭建”HTTP → SOCKS5”桥
1 | gost -L http://127.0.0.1:1088 -F socks5://127.0.0.1:1080 |
-L http://127.0.0.1:1088:在本地 1088 端口开启一个 HTTP 代理(监听端,面向 Google Earth)-F socks5://127.0.0.1:1080:将收到的流量转发给蚂蚁的 SOCKS5 1080
gost 即翻译官:左手接收 HTTP 代理请求,右手以 SOCKS5 协议转交给蚂蚁。
2. 将系统代理指向这座桥
把注册表中的系统代理从 127.0.0.1:1080(协议不匹配)改为 127.0.0.1:1088(真正的 HTTP 代理)。
3. 完整链路
1 | Google Earth |
实测结果:通过 1088 访问 www.google.com 返回 200,kh.google.com 可达,Google Earth 正常加载。
六、方案的适用范围
本方案不是对所有程序都有效,只对”愿意读取并遵守系统代理设置”的程序有效。原因见 原理 2 与 原理 4:本方案本质仍是系统代理(请求式),而非 TUN(强制劫持)。
✅ 会走代理的程序
- 浏览器:Chrome、Edge、Firefox(大多跟随系统代理)
- Google Earth(已验证会读系统 HTTP 代理 —— 这正是本方案对它有效的原因)
- 大部分 Windows 应用、Office、许多软件的更新/登录模块
❌ 不会走代理的程序/流量
- 不读系统代理的程序:某些游戏、专用客户端、直接走原始 socket 的软件
- 命令行工具:如
curl、git默认不读系统代理(需单独设http_proxy环境变量) - UDP 流量:HTTP 代理只转发 TCP(HTTP/HTTPS),走 UDP 的应用(部分游戏、QUIC、视频通话)不被代理
与蚂蚁原”全局模式”的覆盖范围对比
蚂蚁原本也是系统代理方案(设了 1080),覆盖范围与现在相同,都停留在”系统代理”层面。本方案只是把那个协议对不上、无法使用的 1080,换成了真正可用的 HTTP 代理 1088。因此”读系统代理的程序”现在真能翻墙了,但覆盖面并未扩大到”所有程序”。
若需要”所有程序都走代理”
需改用 TUN 模式(虚拟网卡,无差别劫持)。蚂蚁没有 TUN,只能换客户端:
用 Clash Verge / v2rayN 导入机场订阅并开启 TUN,则所有程序(含不读系统代理的、UDP 的)自动全部走代理。前提是拥有机场订阅链接(蚂蚁为成品,通常无法导出订阅)。
七、一键脚本说明
按”手动一键、不开机自启”的要求,制作两个桌面脚本,每个 .bat 调用一个 .ps1。
开启(start-proxy.ps1)
- 检测 gost 是否已运行,未运行则隐藏窗口启动(幂等,重复点击不会重复启动)
- 将系统代理设为
127.0.0.1:1088并启用,随后调用wininet.dll的InternetSetOption广播刷新,使系统立即感知变更
关闭(stop-proxy.ps1)
- 关闭系统代理
- 结束 gost 进程,恢复直连
编码注意事项(踩坑记录)
.ps1 脚本必须保存为 UTF-8 with BOM(文件头含 EF BB BF)。
若保存为无 BOM 的 UTF-8,Windows PowerShell 5.1 会按 GBK 读取,导致中文乱码并报 字符串缺少终止符 错误。这是中文 Windows 上编写 ps1 脚本的常见陷阱。
八、日常使用步骤
- 打开蚂蚁加速器,连接节点(选新加坡/香港/日本/美国等能连 Google 的节点)
- 双击桌面 「开启代理-用GoogleEarth.bat」(弹出黑框显示
[OK]即成功,按任意键关闭) - 打开 Google Earth Pro,正常使用
- 用完后(可选)双击 「关闭代理-恢复上网.bat」 恢复普通直连
九、注意事项与故障排查
- 脚本依赖蚂蚁加速器在线:开启代理后,若蚂蚁未开或掉线,gost 无法转发 → 全网断网。此时双击「关闭代理-恢复上网.bat」即可恢复直连。
- 使用顺序:先开蚂蚁 → 再运行开启脚本 → 再打开 Google Earth。
- 节点选择:选能连 Google 的节点;游戏专线可能不通 Google 网页。
- 相关文件均在
C:\Users\Administrator\gost-proxy\,请勿删除。
故障排查顺序(连不上时)
- 蚂蚁加速器是否已连接?
gost.exe进程是否在运行?(任务管理器查看)- 系统代理是否为
127.0.0.1:1088且已启用? - 本机浏览器能否打开 google.com?
十、附录:文件清单与命令
文件清单
| 路径 | 作用 |
|---|---|
C:\Users\Administrator\gost-proxy\gost.exe |
代理转发核心程序 (v3.3.0) |
C:\Users\Administrator\gost-proxy\start-proxy.ps1 |
开启逻辑(UTF-8 BOM) |
C:\Users\Administrator\gost-proxy\stop-proxy.ps1 |
关闭逻辑(UTF-8 BOM) |
桌面\开启代理-用GoogleEarth.bat |
一键开启入口 |
桌面\关闭代理-恢复上网.bat |
一键关闭入口 |
关键命令
启动桥(手动):1
gost -L http://127.0.0.1:1088 -F socks5://127.0.0.1:1080
开启系统代理:1
2
3ProxyServer = 127.0.0.1:1088
ProxyEnable = 1
注册表路径:HKCU\Software\Microsoft\Windows\CurrentVersion\Internet Settings
关闭系统代理:1
ProxyEnable = 0
彻底替代方案(可选)
如需一劳永逸,可改用支持 TUN 模式 的客户端(Clash Verge / v2rayN),导入机场订阅并开启 TUN,则所有程序(含 Google Earth)自动被代理,无需 gost 桥。前提是拥有机场订阅链接(蚂蚁加速器为成品,不一定可导出订阅)。