给 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 ...
随机推荐
- kuangbin专题 专题九 连通图 Strongly connected HDU - 4635
题目链接:https://vjudge.net/problem/HDU-4635 题目:有向图,给定若干个连通图,求最多还能添加几条边,添完边后,图仍然要满足 (1)是简单图,即没有重边或者自环 (2 ...
- Java 添加、修改、读取、复制、删除Excel批注
本文介绍通过Java程序来操作Excel批注的方法.操作内容包括批注添加(添加批注文本.背景色.字体.自适应等).修改.读取(文本.图片).复制.删除等. 工具:Free Spire.XLS for ...
- Activiti 启动事件(Start Event)
Activiti 启动事件(Start Event) 作者:Jesai 生活里,没有容易二字,忧伤是一种本能,而微笑是一种能力 版权所有,未经允许,禁止引用.如需引用,请注明出处. 前言: 启动事件是 ...
- github 删除库
1.查看库 2.选择想要删除的库,点击setting 3.删除库
- C++ lambda 分析
lambda 表达式分析 构造闭包:能够捕获作用域中变量的匿名函数的对象,Lambda 表达式是纯右值表达式,其类型是独有的无名非联合非聚合类类型,被称为闭包类型(closure type),所以在声 ...
- 个人第四次作业Alpha2版本测试
个人第四次作业Alpha2版本测试 这个作业属于哪个课程 软件工程 这个作业要求在哪里 作业要求 团队名称 GP工作室 这个作业的目标 对其他小组的项目进行测试 测试人员 陈杰 学号 20173102 ...
- 用ES7解决异步回调地狱问题
用了 Promise 其实并没有真正解决回调地狱问题,并且还新增了很多 .then(data => { .... }) 这些很没有意义的 “模板代码”.所以先人们又搞出了generator 和 ...
- CAS的ABA问题详解
CAS的ABA问题详解 ABA问题 在多线程场景下CAS会出现ABA问题,关于ABA问题这里简单科普下,例如有2个线程同时对同一个值(初始值为A)进行CAS操作,这三个线程如下 1.线程1,期望值为A ...
- ArrayList.subList方法使用总结
ArrayList.subList方法使用总结 示例 List<String> list=new ArrayList<>(); list.add("d"); ...
- socket 原理
socket 原理 什么是socket 我们知道进程通信的方法有管道.命名管道.信号.消息队列.共享内存.信号量,这些方法都要求通信的两个进程位于同一个主机.但是如果通信双方不在同一个主机又该如何进行 ...