给 iTerm 终端设置代理
本文介绍如何为自己的终端设置代理,从而实现在命令行中访问Google。
1. 背景
当你使用SS FQ时,大部分浏览器都可以成功访问Google,但是在命令行下执行curl https://www.google.com时,会超时失败。对于类似的这种情况,本文将解释出现这种现象的原因,并给出有效的解决方案。
2. 原因
- 启动SS时,会创建两个代理,一个是ss-local,一个是privoxy;ss-local用于代理socks5请求,privoxy用于代理所有的HTTP请求
- 启动SS时,不管用PAC模式还是全局模式,都会修改网络系统代理设置
- 网络系统代理设置从哪里看?Mac:系统偏好设置-->网络-->高级-->代理
- 在代理页中可以看到

- 从上图可以看到,网页代理服务器是一个部署在本地的代理服务器
- 这个本地代理服务器实际上是SS启动时创建的,我们可以从SS的HTTP代理设置中看到

- 大部分浏览器的默认代理设置是系统代理

- 因此浏览器访问
https://www.google.com时,实际上是把请求发送给了SS创建的本地代理服务器127.0.0.1:1087 
- 上图的privoxy就是SS创建的本地HTTP代理服务器
127.0.0.1:1087 - privoxy会把接收到的http/https请求转换为socks5请求,并转发给本地的ss-local服务,ss-local服务通过socks5协议发送加密过的请求数据到远端的SS server,SS server解密请求数据后,将真实的请求
https://www.google.com发送到Google的服务器 
- 上图是privoxy的配置文件,privoxy的监听地址是:
127.0.0.1:1087,转发地址是:127.0.0.1:1080
- 终端软件iterm/iterm2等默认是没有设置请求代理,因此无法访问
https://www.google.com
3. 解决方案
- http_proxy和https_proxy环境变量用于指定客户端程序(如curl和wget)的代理设置
- 通过下面的环境变量就可以设置HTTP代理:
export http_proxy=http://127.0.0.1:8087
export https_proxy=$http_proxy
- 为了能够快速切换代理,可以在 ~/.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. 参考资料
- 给 iTerm 终端设置代理
- 利用 Privoxy 让命令行下的 wget 和 curl 等命令实现自动代理
- How to set up proxy using http_proxy & https_proxy environment variable in Linux?
给 iTerm 终端设置代理的更多相关文章
- mac 下对 iterm 终端 设置代理
vi .profile export http_prox="http://xxxx:port" export https_proxy="http://xxxx:port& ...
- 如何为MacOS X终端设置代理
http://codelife.me/blog/2012/09/02/how-to-set-proxy-for-terminal/ 本文介绍如何在MacOS X终端里使用代理访问网络,虽然只在Moun ...
- mac 命令行终端 设置代理
环境: macOS Mojave 10.14.3 iTrem 2 3.2.8 酸酸乳1.1.4.4-R8 查看自己命令行的状态 curl ip.gs 正式开始 一.首先检查自己的酸酸乳是否正常,并在高 ...
- centos 终端界面代理设置
一.centos自带界面设置代理 1. 界面设置 squid默认代理端口3128. 2. firefox设置 设置 -> 局域网设置 -> ip:port / username:passw ...
- linux 虚拟机centos64位_6.5+VM10 主机是固定IP局域网设置代理上网,虚机设置固定ip 图文详细步骤
一种: 虚机是Desktop 安装 1.虚拟机—设置—网络适配器子选项—选择“桥接模式” 2.在虚拟机中选择系统(System)—首选项(Preferences)—网络连接(Network Conne ...
- (转)在公司的局域网使用git或github 设置代理
目录 [hide] 1 生成SSH Key 2 git使用http访问 3 git使用ssh进行访问 在公司这样的局域网环境中,向要走网络必须走HTTP代理出去.不能直接访问外面的服务,所以这样安全了 ...
- mac SVN 设置代理
1. 设置代理一种方法:Finder 菜单里面 -> 前往 -> 前往文件夹 -> /Users/username/.subversion -> 编辑文件 servers 在文 ...
- Ubuntu设置代理上网
代理服务器(Proxy Server)是个人网络和Internet服务商之间的中间代理机构,它负责转发合法的网络信息,对转发进行控制和登记.代理服务器作为连接Internet(广域网)与Intrane ...
- DNS隧道之DNS2TCP实现——dns2tcpc必须带server IP才可以,此外ssh可以穿过墙的,设置代理上网
我自己的命令: server端: dns2tcpd -F -d 1 -f ./dns2tcpd.conf 输出: 09:08:59 : Debug options.c:97 Add resource ...
随机推荐
- 线性基 - 寻找异或第K大
XOR is a kind of bit operator, we define that as follow: for two binary base number A and B, let C=A ...
- JVM内存布局及GC知识
一.JVM运行时内存布局 按java 8虚拟机规范的原始表达:(jvm)Run-Time Data Areas, 暂时翻译为"jvm运行时内存布局". 从概念上大致分为6个(逻辑) ...
- 建立MVC的依赖项注入 Setting up MVC Dependency Injection 精通ASP-NET-MVC-5-弗瑞曼
The result of the three steps I showed you in the previous section is that the knowledge about the i ...
- 废旧手机利用之装一个Linux系统
开篇: 在废旧手机变废为宝的路上一直没有停下,做过电脑遥控器,家居监控器,给电脑扩展屏幕以及跟着大佬学过智能机器人,但是都是一时兴趣,除了家具监控器目前正在使用之外其他也没有使用了. 最近在学习Lin ...
- 创建dynamics CRM client-side (十一) - 管理和关联所有的JS文件
代码管理是一个无法避免的问题. 前面我也建议了大家每一个entity都应该拥有自身的js. 但是如果我们有一些global的function, 我们应该怎样去部署到每一个entity中呢? 我这里使用 ...
- SpringMVC 中的异常处理
目录 1.搭建编码分析 2.编写异常类 3.编写自定义异常处理器 4.在springmvc.xml中配置异常处理器 5.编写Error.jsp.index.jsp页面 6.编写collector代码模 ...
- 利用在线绘制3d几何图形工具分析投影变化
业余写了个在线绘制几何图形工具,工具链接如下: https://tinygltf.xyz/drawgeometry/ 通过脚本代码在可视化窗口添加对应的点,线段,成像平面推到投影后坐标的计算: 点A通 ...
- 降级gcc版本
前言 ubuntu16.04版本中默认的gcc版本是5.4,因为有些第三方应用依赖的问题,我不得不降级到5.3,下面是关于gcc的降级操作 部署操作 下载GCC源码(https://ftp.gnu.o ...
- mybatis 执行流程以及初用错误总结
mappper 配置文件 头文件: 1. <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" &q ...
- 深入理解JDK中的Reference原理和源码实现
前提 这篇文章主要基于JDK11的源码和最近翻看的<深入理解Java虚拟机-2nd>一书的部分内容,对JDK11中的Reference(引用)做一些总结.值得注意的是,通过笔者对比一下JD ...