V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Chism
V2EX  ›  macOS

Terminal 如何强制全部走 proxy?

  •  
  •   Chism · 2022-02-22 19:46:21 +08:00 · 8025 次点击
    这是一个创建于 765 天前的主题,其中的信息可能已经有所发展或是发生改变。

    我配置了

    export all_proxy=http://127.0.0.1:1087
    

    但是在运行一些脚本时发现依然不走代理,脚本里含有 curl github 之类的直接超时

    有什么配置方式可以强制 Terminal 全部走 proxy ?

    35 条回复    2022-02-24 15:54:46 +08:00
    menghuan
        1
    menghuan  
       2022-02-22 19:53:14 +08:00
    clashX 增强模式好像可以
    bao3
        2
    bao3  
       2022-02-22 19:55:54 +08:00 via iPhone   ❤️ 3
    首先,你设定的代理只能对 tcp 有效,所以有些解析有问题就无法走代理。你可以试试 socks5
    另外 1# 是正解
    arischow
        3
    arischow  
       2022-02-22 19:56:17 +08:00   ❤️ 4
    ```
    export https_proxy=http://127.0.0.1:8888;export http_proxy=http://127.0.0.1:8888;export all_proxy=socks5://127.0.0.1:8889
    ```
    arischow
        4
    arischow  
       2022-02-22 19:56:36 +08:00
    或者用网关模式,让虚拟网卡接管所有流量再分流,如 1#
    Immortal
        5
    Immortal  
       2022-02-22 20:00:29 +08:00   ❤️ 1
    用 Clash 客户端举例:
    1. Clash 设置全局并且全局
    2. Clash 设置全局,然后在终端执行
    export https_proxy=http://127.0.0.1:7890 http_proxy=http://127.0.0.1:7890 all_proxy=socks5://127.0.0.1:7890
    之后的命令都会走代理流量
    Immortal
        6
    Immortal  
       2022-02-22 20:01:25 +08:00
    @Immortal #5
    1. Clash 设置全局并且全局 > 1. Clash 设置全局并且设置为系统代理
    heywin
        7
    heywin  
       2022-02-22 20:22:42 +08:00   ❤️ 4
    proxychains-ng
    Jiajin
        8
    Jiajin  
       2022-02-22 20:30:24 +08:00
    增强模式就行了,不用开系统代理。
    AllenHua
        9
    AllenHua  
       2022-02-22 21:34:27 +08:00
    ```
    export http_proxy=http://USERNAME:[email protected]:7890 && export https_proxy=$http_proxy && export all_proxy=socks5://127.0.0.1:7890 && echo 'Set proxy successfully'
    ```

    http(s)代理如果没有认证,那么命令如下

    ```
    export http_proxy=http://127.0.0.1:7890 && export https_proxy=$http_proxy && export all_proxy=socks5://127.0.0.1:7890 && echo 'Set proxy successfully'
    ```

    unset 取消设置代理

    ```
    unset http_proxy && unset https_proxy && unset all_proxy && echo 'Unset proxy successfully'
    ```

    socks5 代理没有认证,所以不用输入用户名和密码
    AllenHua
        10
    AllenHua  
       2022-02-22 21:38:22 +08:00   ❤️ 3
    你设置的 all_proxy 是 http 代理……

    socks5 包含 https ,https 又包含 http

    socks5 代理工作在 osi 七层模型中的会话层(第五层),https/http 代理工作在 osi 七层模型的应用层(第七层),所以说 socks 代理更加底层。
    zalss
        11
    zalss  
       2022-02-22 21:40:31 +08:00
    vim ~/.zshrc
    插入这个:
    export ME="/Users/zalss" #你的目录
    source $ME/.start.sh
    新建~/.start.sh
    chmod -x ~/.start.sh
    ~/.start.sh 内容为:

    --------------------------------


    export http="http://127.0.0.1:7890"
    export https=$http
    export socks5="socks5://127.0.0.1:7891"
    export reslove="
    🌈🌈🌈🌈
    开启代理
    🌈🌈🌈🌈
    "
    export reject="
    🌈🌈🌈🌈
    已关闭!
    🌈🌈🌈🌈
    "
    alias mymac="neofetch"
    alias setp="
    git config --global http.proxy $http;
    git config --global https.proxy $http;
    npm config set proxy $http;
    npm config set https-proxy $http;
    yarn config set proxy $http;
    yarn config set https-proxy $http;
    export ALL_PROXY=$socks5
    export http_proxy=$http;
    export https_proxy=$http;
    echo -e '\033[32m $reslove \033[0m'
    "
    alias unsetp="
    git config --global --unset http.proxy;
    git config --global --unset https.proxy;
    npm config delete proxy;
    npm config delete https-proxy;
    yarn config delete proxy;
    yarn config delete https-proxy;
    unset http_proxy;
    unset https_proxy
    unset ALL_PROXY
    echo -e '\033[31m $reject \033[0m'

    "
    alias ip="curl ipinfo.io"




    --------------------------------
    sickoo
        12
    sickoo  
       2022-02-22 23:07:24 +08:00
    @Jiajin 意思只要增强模式,不用点那个设置为系统代理就行了吗
    dingwen07
        13
    dingwen07  
       2022-02-23 02:36:51 +08:00
    Clash for Windows TUN 模式
    iseki
        14
    iseki  
       2022-02-23 02:57:26 +08:00   ❤️ 1
    不同软件对这几个环境变量的支持程度不一样,有的吃 all ,有的不吃;有的大小写不敏感,有的很敏感······所以保险的方法是同时设定 http_proxy, https_proxy, all_proxy ,如果你有觉得不够可靠,对应的大写也设定一份,我观察的:吃 all 的不是很多
    bao3
        15
    bao3  
       2022-02-23 04:28:54 +08:00
    @sickoo
    yhhsuf
        16
    yhhsuf  
       2022-02-23 06:41:55 +08:00
    proxifier
    alexanderb
        17
    alexanderb  
       2022-02-23 07:26:00 +08:00
    提供一个不太优雅的方案,proxychains 用 socks5 代理。
    Leonard
        18
    Leonard  
       2022-02-23 09:31:01 +08:00
    ClashX Pro 增强模式最方便
    Crump
        19
    Crump  
       2022-02-23 09:35:40 +08:00
    如果 M1 芯片,QX 最方便
    icetea12138
        20
    icetea12138  
       2022-02-23 09:38:18 +08:00
    @Crump qx 不是手机上的嘛?电脑上也可以?
    Crump
        21
    Crump  
       2022-02-23 09:44:52 +08:00
    @icetea12138 可以,注意是 M1 系列芯片
    xxb
        22
    xxb  
       2022-02-23 09:57:45 +08:00 via iPhone
    7 楼和 17 楼可能是最优解,推荐
    xiaozhishang91
        23
    xiaozhishang91  
       2022-02-23 11:23:52 +08:00
    @xxb 同意。proxychains 是绝对可行的方案
    beginor
        24
    beginor  
       2022-02-23 11:32:33 +08:00
    推荐用 Proxifier ,代理神器
    SenLief
        25
    SenLief  
       2022-02-23 11:36:21 +08:00 via iPhone
    全部用 tun 了
    EvilDevilJin
        26
    EvilDevilJin  
       2022-02-23 12:03:25 +08:00   ❤️ 1
    ClashX Pro

    export https_proxy=http://127.0.0.1:xxxx
    export http_proxy=http://127.0.0.1:xxxx
    export all_proxy=socks5://127.0.0.1:xxxx

    写进~/.zshrc
    Achieve7
        27
    Achieve7  
       2022-02-23 16:32:14 +08:00   ❤️ 1
    alias proxy='env https_proxy=http://127.0.0.1:7890 http_proxy=http://127.0.0.1:7890 all_proxy=socks5://127.0.0.1:7890'

    执行命令的时候前面加上这一行
    tomychen
        28
    tomychen  
       2022-02-23 16:58:16 +08:00
    export 后 curl 会走代理,git 则不会
    独立配置一下~/.gitconfig
    Huozy
        29
    Huozy  
       2022-02-23 17:47:42 +08:00
    把 export 直接写入 .zshrc 脚本里
    jfdnet
        30
    jfdnet  
       2022-02-23 18:23:23 +08:00
    monterey 系统 用任何一个代理软件,应该都可以让所有 app 走代理了吧,而不仅仅是浏览器了,包括终端。
    lrvy
        31
    lrvy  
       2022-02-23 19:26:59 +08:00
    `sh
    pp () {
    if [ $switch_proxy = 0 ]
    then
    export http_proxy="$proxy_host:$proxy_http_port"
    export https_proxy="$proxy_host:$proxy_http_port"
    export all_proxy="$proxy_host:$proxy_socks5_port"
    export switch_proxy=1
    echo -e "梯子模式"
    else
    unset http_proxy
    unset https_proxy
    unset all_proxy
    export switch_proxy=0
    echo -e "和谐模式"
    fi
    }
    `
    jerryjhou
        32
    jerryjhou  
       2022-02-24 08:40:12 +08:00 via iPad
    @icetea12138 最新版已做 M1 专门适配
    fuchun
        33
    fuchun  
       2022-02-24 09:56:55 +08:00
    如果 协议是 ssr 的话
    fuchun
        34
    fuchun  
       2022-02-24 09:57:44 +08:00
    devyjn
        35
    devyjn  
       2022-02-24 15:54:46 +08:00 via Android
    echo socks5 = "127.0.0.1:1086" > ~/.curlrc
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   3017 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 29ms · UTC 15:00 · PVG 23:00 · LAX 08:00 · JFK 11:00
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.