zoukankan      html  css  js  c++  java
  • 给 iTerm 终端设置代理

    本文介绍如何为自己的终端设置代理,从而实现在命令行中访问Google。

    1. 背景

    当你使用SS FQ时,大部分浏览器都可以成功访问Google,但是在命令行下执行curl https://www.google.com时,会超时失败。对于类似的这种情况,本文将解释出现这种现象的原因,并给出有效的解决方案。

    2. 原因

    1. 启动SS时,会创建两个代理,一个是ss-local,一个是privoxy;ss-local用于代理socks5请求,privoxy用于代理所有的HTTP请求
    2. 启动SS时,不管用PAC模式还是全局模式,都会修改网络系统代理设置
      1. 网络系统代理设置从哪里看?Mac:系统偏好设置-->网络-->高级-->代理
      2. 在代理页中可以看到
      3. mac的网络代理设置
      4. 从上图可以看到,网页代理服务器是一个部署在本地的代理服务器
      5. 这个本地代理服务器实际上是SS启动时创建的,我们可以从SS的HTTP代理设置中看到
      6. SS的HTTP代理设置
    3. 大部分浏览器的默认代理设置是系统代理
      1. Firefox的网络代理设置
      2. 因此浏览器访问https://www.google.com时,实际上是把请求发送给了SS创建的本地代理服务器127.0.0.1:1087
      3. SS的两个代理进程
      4. 上图的privoxy就是SS创建的本地HTTP代理服务器127.0.0.1:1087
      5. privoxy会把接收到的http/https请求转换为socks5请求,并转发给本地的ss-local服务,ss-local服务通过socks5协议发送加密过的请求数据到远端的SS server,SS server解密请求数据后,将真实的请求https://www.google.com发送到Google的服务器
      6. ss-local-config
      7. 上图是privoxy的配置文件,privoxy的监听地址是:127.0.0.1:1087,转发地址是:127.0.0.1:1080
    4. 终端软件iterm/iterm2等默认是没有设置请求代理,因此无法访问https://www.google.com

    3. 解决方案

    1. http_proxy和https_proxy环境变量用于指定客户端程序(如curl和wget)的代理设置
    2. 通过下面的环境变量就可以设置HTTP代理:
    export http_proxy=http://127.0.0.1:8087
    export https_proxy=$http_proxy
    
    1. 为了能够快速切换代理,可以在 ~/.zshrc 或者 ~/.bash_profile 中添加这样的alias:
    alias goproxy='export http_proxy=http://127.0.0.1:8087 https_proxy=http://127.0.0.1:8087'
    alias disproxy='unset http_proxy https_proxy'
    

    4. 参考资料

    1. 给 iTerm 终端设置代理
    2. 利用 Privoxy 让命令行下的 wget 和 curl 等命令实现自动代理
    3. How to set up proxy using http_proxy & https_proxy environment variable in Linux?
  • 相关阅读:
    自定义Filter服务
    filter 以及 orderBy的使用
    ng-repeat-start ng-repeat-end 的使用
    ng-repeat 与ng-switch的简单应用
    ng-bind-html 的使用
    Oracle instr用法
    Oracle left查询案例
    Oracle case用法
    mysql 导出导入sql
    Gson解析复杂JSON对象
  • 原文地址:https://www.cnblogs.com/wengle520/p/12347318.html
Copyright © 2011-2022 走看看