V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
这是一个专门讨论 idea 的地方。

每个人的时间,资源是有限的,有的时候你或许能够想到很多 idea,但是由于现实的限制,却并不是所有的 idea 都能够成为现实。

那这个时候,不妨可以把那些 idea 分享出来,启发别人。
xianwei10000
V2EX  ›  奇思妙想

纯内网环境使用 Claude Code 的完美解决方案:通过 HTTP 代理“欺骗”验证

  •  
  •   xianwei10000 · 7 天前 · 1300 次点击

    纯内网环境使用 Claude Code 的完美解决方案:通过 HTTP 代理“欺骗”验证

    1. 背景与问题描述

    最近很多小伙伴在公司内网开发时,想要使用强大的claude-code工具,但却遇到了一个棘手的问题:

    公司内网机器完全隔离,无法访问外网。 虽然我们知道可以通过设置 ANTHROPIC_BASE_URL 环境变量来指向内网的 DeepSeek 等服务,但 claude-code 仍然会报错 "request time" 或连接失败。

    经过分析和测试,发现根本原因是:**claude-code 在启动时会进行网络连通性检查,即使你配置了内网 API 地址,这个预检查失败也会导致程序无法正常使用。**

    2. 解决方案核心思路

    既然claude-code一定要检查网络,那我们就"欺骗"它一下:

    在本地启动一个 HTTP 代理,让claude-code的网络检查请求通过这个代理,但实际上代理会将请求重定向到我们的内网 API 服务。

    这样:

    • claude-code 认为自己有网络(因为检查通过了)
    • 实际的所有 API 请求都被代理转发到了内网的 DeepSeek 等服务
    • 完美实现纯内网环境使用

    3. 环境准备

    在开始之前,请确保你已经准备好:

    • claude-code 已安装
    • 内网可访问的 AI API 服务(如 DeepSeek API )
    • 一个简单的 HTTP 代理工具

    4. 实施步骤

    4.1 启动 HTTP 代理

    这里我们使用 pproxy 作为代理工具,你也可以使用其他任何 HTTP 代理。

    # 安装 pproxy (如果尚未安装)
    pip install pproxy
    
    # 启动一个本地 HTTP 代理,端口 8899
    pproxy -l http://127.0.0.1:8899
    

    这个代理会监听本地的 8899 端口,将所有经过它的请求转发到目标地址。

    4.2 配置并启动 Claude Code

    使用以下完整的启动命令:

    export ANTHROPIC_BASE_URL=http://localhost:3456 \
    && export ANTHROPIC_AUTH_TOKEN=1 \
    && export CLAUDE_CODE_MAX_OUTPUT_TOKENS=64000 \
    && export HTTPS_PROXY=http://127.0.0.1:8899 \
    && export HTTP_PROXY=http://127.0.0.1:8899 \
    && export NO_PROXY="localhost example.com .example.com" \
    && claude
    

    4.3 命令参数详解

    让我们逐个分析这些环境变量的作用:

    • ANTHROPIC_BASE_URL=http://localhost:3456
      指定 Claude Code 实际要连接的内网 API 地址(这里假设你的内网服务在 3456 端口)

    • ANTHROPIC_AUTH_TOKEN=1
      认证令牌,根据你的内网服务要求设置

    • CLAUDE_CODE_MAX_OUTPUT_TOKENS=64000
      设置最大输出 token 数,可根据需要调整

    • HTTPS_PROXY=http://127.0.0.1:8899
      设置 HTTPS 流量走我们的本地代理

    • HTTP_PROXY=http://127.0.0.1:8899
      设置 HTTP 流量走我们的本地代理

    • NO_PROXY="localhost example.com .example.com"
      设置不需要代理的地址,避免代理循环

    5. 完整工作流程

    5.1 方案架构图

    claude-code 
        ↓ (请求经过代理)
    HTTP 代理 (localhost:8899) 
        ↓ (请求被重定向)
    内网 API 服务 (localhost:3456 或你的内网地址)
        ↓
    DeepSeek 等 AI 服务
    

    5.2 实际操作流程

    1. 首先启动代理服务

      # 终端 1 - 启动代理
      pproxy -l http://127.0.0.1:8899
      
    2. 然后在新终端中启动 Claude Code

      # 终端 2 - 启动 Claude Code
      export ANTHROPIC_BASE_URL=http://你的内网 API 地址:端口 \
      && export ANTHROPIC_AUTH_TOKEN=你的令牌 \
      && export HTTPS_PROXY=http://127.0.0.1:8899 \
      && export HTTP_PROXY=http://127.0.0.1:8899 \
      && claude
      
    3. 验证是否正常工作

      • 在 Claude Code 中尝试一些代码操作
      • 观察代理终端的日志,确认有请求经过
      • 检查是否能够正常获得 AI 响应

    6. 进阶配置

    6.1 使用 squid 等专业代理

    如果你有更复杂的代理需求,可以使用 squid:

    # 安装 squid
    sudo apt-get install squid
    
    # 配置 squid (/etc/squid/squid.conf )
    http_port 3128
    visible_hostname squid-proxy
    
    # 启动 squid
    sudo systemctl start squid
    
    # 然后设置环境变量
    export HTTP_PROXY=http://localhost:3128
    export HTTPS_PROXY=http://localhost:3128
    

    6.2 编写启动脚本

    为了方便使用,可以创建一个启动脚本 start_claude.sh

    #!/bin/bash
    
    # 设置环境变量
    export ANTHROPIC_BASE_URL=http://localhost:3456
    export ANTHROPIC_AUTH_TOKEN=1
    export CLAUDE_CODE_MAX_OUTPUT_TOKENS=64000
    export HTTPS_PROXY=http://127.0.0.1:8899
    export HTTP_PROXY=http://127.0.0.1:8899
    export NO_PROXY="localhost,127.0.0.1"
    
    echo "启动 Claude Code (内网模式)..."
    claude
    

    给脚本执行权限:

    chmod +x start_claude.sh
    ./start_claude.sh
    

    7. 故障排除

    7.1 常见问题及解决

    Q1: 仍然提示网络错误

    • 检查代理是否正常启动:curl -x http://127.0.0.1:8899 http://www.example.com
    • 确认代理端口没有被占用

    Q2: 连接超时

    • 检查 ANTHROPIC_BASE_URL 是否正确指向可用的内网服务
    • 确认内网 API 服务正常运行

    Q3: 认证失败

    • 检查 ANTHROPIC_AUTH_TOKEN 是否设置正确
    • 确认内网服务的认证方式

    7.2 调试技巧

    启用详细日志输出:

    export DEBUG=*
    export NODE_DEBUG=net,http,https
    

    然后重新启动 Claude Code 查看详细日志。

    8. 总结

    通过这种"欺骗"网络检查的方法,我们成功在纯内网环境中使用了 Claude Code 。这种方法的关键在于:

    1. 理解问题根源:Claude Code 的网络连通性检查
    2. 巧妙利用代理:通过本地代理"证明"有网络
    3. 正确配置环境:确保所有流量都经过代理转发到正确目标

    这种方法不仅适用于 Claude Code ,对于其他有类似网络检查需求的工具也同样有效。

    希望这篇文档能帮助到在内网环境下奋斗的开发者们!如果有任何问题,欢迎在评论区讨论。


    标签: #内网开发 #ClaudeCode #HTTP 代理 #DeepSeek #开发工具技巧

    3 条回复    2025-11-27 18:57:11 +08:00
    jaff
        1
    jaff  
       7 天前
    感谢分享,deepseek + claude code 效果怎么样? 与 sonet 4.5 thinking 比?
    alwayslan
        2
    alwayslan  
       6 天前
    收藏备用
    siweipancc
        3
    siweipancc  
       6 天前 via iPhone
    备用,回国用这套
    关于   ·   帮助文档   ·   自助推广系统   ·   博客   ·   API   ·   FAQ   ·   Solana   ·   1591 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 16:26 · PVG 00:26 · LAX 08:26 · JFK 11:26
    ♥ Do have faith in what you're doing.