给 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 ...
随机推荐
- restapi-sql
身份验证,确定该成员是交过费的机构的成员,包含(用户名)和(密码) 各个表中的属性,有关timetemp等特殊类型,LocalDate等日期等具体格式. 引入了传输过程的不同的数据格式导致的两个错误, ...
- Spark集群-Standalone 模式
Spark 集群相关 table td{ width: 15% } 来源于官方, 可以理解为是官方译文, 外加一点自己的理解. 版本是2.4.4 本篇文章涉及到: 集群概述 master, worke ...
- 交换一个数字的任意两个位置,指定K次的最值
Anton has a positive integer n, however, it quite looks like a mess, so he wants to make it beautifu ...
- Python知识体系框架 思维导图
技术文档已经独立整理! 请移步个人技术文档:https://anxiangchegu.github.io/technical-doc 如需更多Java.Python.大数据体系知识,请稳移步个人技术文 ...
- Django后台管理系统的使用
目录 django后台管理系统的使用 检查配置文件 检查根urls.py文件 启动项目,浏览器输入ip端口/admin 如: 127.0.0.1/8000/admin 回车 注册后台管理系统超级管理 ...
- kubernetes基础概念知多少
kubernetes(简称k8s)是一种用于在一组主机上运行和协同容器化应用程序的管理平台,皆在提供高可用.高扩展性和可预测性的方式来管理容器应用的生命周期.通过k8s,用户可以定义程序运行方式.部署 ...
- 【Vue】强化表单的9个Vue输入库
一个设计不当的表单可能会使用户远离你的网站.幸运的是,对Vue开发者,有大量可用的Vue输入库让你轻松整理表单. 拥有直观而且对用户友好的表单有诸多好处,比如: 更高的转化率 更好的用户体验 更专业的 ...
- mybatis in查询
原文地址:https://blog.csdn.net/u012427355/article/details/79580561 foreach的主要用在构建in条件中,它可以在SQL语句中进行迭代一个集 ...
- .NET Core Install for Ubuntu 14.04
Add the dotnet apt-get feed In order to install .NET Core on Ubuntu or Linux Mint, you need to fir ...
- 每天翻译一点点: WPF Application Framework (WAF)
ps:http://waf.codeplex.com/wikipage?title=Model-View-ViewModel%20Pattern&referringTitle=Document ...