github copilot 国内运营商网络下 websocket 握手失败,主因是 dns 污染或透明代理干扰;需通过 nslookup 验证解析异常,再用 hosts 映射、可信 dns 启动或关闭光猫代理等三法修复。
☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 多模态理解力帮你轻松跨越从0到1的创作门槛☜☜☜

GitHub Copilot 在使用中国电信、中国移动或中国联通等国内主流运营商网络时,频繁触发 WebSocket handshake error(握手失败),表现为建议延迟极高、聊天窗口卡死或直接弹出“Failed to connect to Copilot”提示,需立即执行针对性链路优化。
确认是否为运营商 DNS 污染导致
第一步:在终端中执行 nslookup copilot-proxy.githubusercontent.com。
若返回的 IP 地址不属于 GitHub 官方 IP 段(如出现 100.64.x.x、127.0.0.1、或明显非亚洲 CDN 的境外地址),说明本地 DNS 被劫持或缓存污染。
第二步:改用可信 DNS 立即验证,执行 nslookup copilot-proxy.githubusercontent.com 223.5.5.5(阿里 DNS)或 nslookup copilot-proxy.githubusercontent.com 119.29.29.29(腾讯 DNS)。
若后者能解析出 【140.82.112.0/20 或 140.82.113.0/24 范围内的 IPv4 地址】,则可确认是原运营商 DNS 问题。
绕过 DNS 污染的三种实操方案
方法一:VS Code 内强制指定 hosts 映射(推荐优先尝试)
打开 VS Code 设置 → 搜索 “proxy” → 找到 “HTTP: Proxy Strict SSL”,【务必取消勾选】;接着在设置 JSON 中添加:
"http.proxy": "http://127.0.0.1:7890",(若你本地运行 Clash/Shadowrocket)或直接填空代理字段跳过;再手动编辑系统 hosts 文件(Windows 在 C:\Windows\System32\drivers\etc\hosts,macOS/Linux 在 /etc/hosts),追加一行:140.82.112.13 copilot-proxy.githubusercontent.com(IP 取自上一步 nslookup 结果)。
专为资深工程师设计,用于高效日常使用 GitHub Copilot CLI。适用于在规划、提示、审查或链式调用 gh copilot 命令时,探索代码库、起草变更、调试问题或加速工作流,且不偏离架构意图。
方法二:命令行启动 VS Code 并注入可信 DNS 解析上下文
在终端中执行:DNS_SERVER=223.5.5.5 code --disable-gpu --no-sandbox。此方式不修改系统配置,仅本次会话生效,适合临时调试。
方法三:禁用运营商级 HTTP 透明代理(仅限企业宽带或校园网)
某些电信光猫或锐捷认证网关会在 80/443 端口插入中间代理,导致 WebSocket Upgrade 请求被重写。此时需访问光猫后台(通常为 192.168.1.1)→ 关闭“Web 加速”、“HTTP 缓存”、“智能 DNS”等选项;若无法登录光猫,可改用手机热点直连测试——这一步能快速定位是否为局域网设备干扰。
验证 WebSocket 连接是否真正恢复
打开 VS Code 终端,运行:
curl -v -N -H "Connection: Upgrade" -H "Upgrade: websocket" -H "Sec-WebSocket-Version: 13" -H "Sec-WebSocket-Key: dGhlIHNhbXBsZSBub25jZQ==" https://copilot-proxy.githubusercontent.com/_ws/ping
观察响应头中是否含 HTTP/2 101 和 Upgrade: websocket。若返回 HTTP/1.1 400 或超时,说明底层 TLS 握手仍被拦截,需回退至方法三检查物理网络层。
若返回 HTTP/2 101 且后续出现二进制帧流(表现为终端持续滚动乱码字符),表示 WebSocket 通道已通,Copilot 将在 10 秒内自动重连并恢复建议功能。










