转自:https://my.oschina.net/u/818848/blog/677225?p=1

做开发的同学,应该都会经常接触终端,有些时候我们在终端会做一些网络操作,比如下载gradle包等,由于一些你懂我也懂的原因,某些网络操作不是那么理想,这时候我们就需要设置代理来自由地访问网络。

Shadowsocks是我们常用的代理工具,它使用socks5协议,而终端很多工具目前只支持http和https等协议,对socks5协议支持不够好,所以我们为终端设置shadowsocks的思路就是将socks协议转换成http协议,然后为终端设置即可。仔细想想也算是适配器模式的一种现实应用吧。

想要进行转换,需要借助工具,这里我们采用比较知名的polipo来实现。polipo是一个轻量级的缓存web代理程序。闲话休叙,让我们开始动手吧。

准备工作

安装

Fedora安装

  1. 1
  1. sudo yum install polipo

Mac下使用Homebrew安装

  1. 1
  1. brew install polipo

Ubuntu安装

  1. 1
  1. sudo apt-get install polipo

修改配置(Linux)

如下打开配置文件

  1. 1
  1. sudo vim /etc/polipo/config

设置ParentProxy为Shadowsocks,通常情况下本机shadowsocks的地址如下

  1. 1
  2. 2
  3. 3
  4. 4
  1. # Uncomment this if you want to use a parent SOCKS proxy:
  2. socksParentProxy = "localhost:1080"
  3. socksProxyType = socks5

设置日志输出文件

  1. 1
  2. 2
  1. logFile=/var/log/polipo
  2. logLevel=4

修改配置(Mac)

设置每次登陆启动polipo

  1. 1
  1. ln -sfv /usr/local/opt/polipo/*.plist ~/Library/LaunchAgents

修改文件/usr/local/opt/polipo/homebrew.mxcl.polipo.plist设置parentProxy

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
  9. 9
  10. 10
  11. 11
  12. 12
  13. 13
  14. 14
  15. 15
  16. 16
  17. 17
  18. 18
  19. 19
  20. 20
  21. 21
  22. 22
  23. 23
  24. 24
  25. 25
  26. 26
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
  3. <plist version="1.0">
  4. <dict>
  5. <key>Label</key>
  6. <string>homebrew.mxcl.polipo</string>
  7. <key>RunAtLoad</key>
  8. <true/>
  9. <key>KeepAlive</key>
  10. <true/>
  11. <key>ProgramArguments</key>
  12. <array>
  13. <string>/usr/local/opt/polipo/bin/polipo</string>
  14. <string>socksParentProxy=localhost:1080</string>
  15. </array>
  16. <!-- Set `ulimit -n 20480`. The default OS X limit is 256, that's
  17. not enough for Polipo (displays 'too many files open' errors).
  18. It seems like you have no reason to lower this limit
  19. (and unlikely will want to raise it). -->
  20. <key>SoftResourceLimits</key>
  21. <dict>
  22. <key>NumberOfFiles</key>
  23. <integer>20480</integer>
  24. </dict>
  25. </dict>
  26. </plist>

修改的地方是增加了<string>socksParentProxy=localhost:1080</string>

启动(Linux)

先关闭正在运行的polipo,然后再次启动

  1. 1
  2. 2
  1. sudo service polipo stop
  2. sudo service polipo start

启动(Mac)

  1. 1
  2. 2
  1. launchctl unload ~/Library/LaunchAgents/homebrew.mxcl.polipo.plist
  2. launchctl load ~/Library/LaunchAgents/homebrew.mxcl.polipo.plis

注意:请确保Shadowsocks正常工作。

验证及使用

安装完成就需要进行验证是否work。这里展示一个最简单的验证方法,打开终端,如下执行

  1. 1
  2. 2
  3. 3
  4. 4
  1. 07:56:24-androidyue/var/log$ curl ip.gs
  2. 当前 IP125.39.112.15 来自:中国天津天津 联通
  3. 08:09:23-androidyue/var/log$ http_proxy=http://localhost:8123 curl ip.gs
  4. 当前 IP210.140.193.128 来自:日本日本

如上所示,为某个命令设置代理,前面加上http_proxy=http://localhost:8123 后接命令即可。

注:8123是polipo的默认端口,如有需要,可以修改成其他有效端口。

设置别名

bash中有一个很好的东西,就是别名alias. Linux用户修改~/.bashrc,Mac用户修改~/.bash_profile文件,增加如下设置

  1. 1
  1. alias hp="http_proxy=http://localhost:8123"

然后Linux用户执行source ~/.bashrc,Mac用户执行source ~/.bash_profile

测试使用

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  1. 20:39:39-androidyue~$ curl ip.gs
  2. 当前 IP125.39.112.14 来自:中国天津天津 联通
  3. 20:39:44-androidyue~$ hp curl ip.gs
  4. 当前 IP210.140.193.128 来自:日本日本
  5. 20:39:48-androidyue~$

当前会话全局设置

如果嫌每次为每一个命令设置代理比较麻烦,可以为当前会话设置全局的代理。即使用export http_proxy=http://localhost:8123即可。 如果想撤销当前会话的http_proxy代理,使用 unset http_proxy 即可。 示例效果如下

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
  1. 21:29:49-androidyue~$ curl ip.gs
  2. 当前 IP125.39.112.14 来自:中国天津天津 联通
  3. 21:29:52-androidyue~$ export http_proxy=http://localhost:8123
  4. 21:30:07-androidyue~$ curl ip.gs
  5. 当前 IP210.140.193.128 来自:日本日本
  6. 21:30:12-androidyue~$ unset http_proxy
  7. 21:30:37-androidyue~$ curl ip.gs
  8. 当前 IP125.39.112.14 来自:中国天津天津 联通

如果想要更长久的设置代理,可以将export http_proxy=http://localhost:8123加入.bashrc或者.bash_profile文件

设置Git代理

复杂一些的设置Git代理

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
  1. git clone https://android.googlesource.com/tools/repo --config http.proxy=localhost:8123
  2. Cloning into 'repo'...
  3. remote: Counting objects: 135, done
  4. remote: Finding sources: 100% (135/135)
  5. remote: Total 3483 (delta 1956), reused 3483 (delta 1956)
  6. Receiving objects: 100% (3483/3483), 2.63 MiB | 492 KiB/s, done.
  7. Resolving deltas: 100% (1956/1956), done.

其实这样还是比较复杂,因为需要记忆的东西比较多,下面是一个更简单的实现

首先,在.bashrc或者.bash_profile文件加入这一句。

  1. 1
  1. gp=" --config http.proxy=localhost:8123"

然后执行source操作,更新当前bash配置。

更简单的使用git的方法

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
  1. git clone https://android.googlesource.com/tools/repo $gp
  2. Cloning into 'repo'...
  3. remote: Counting objects: 135, done
  4. remote: Finding sources: 100% (135/135)
  5. remote: Total 3483 (delta 1956), reused 3483 (delta 1956)
  6. Receiving objects: 100% (3483/3483), 2.63 MiB | 483 KiB/s, done.
  7. Resolving deltas: 100% (1956/1956), done.

开始自由快速的开发吧

为终端配置proxy的更多相关文章

  1. 简单快捷好用的vim配置和终端配置推荐

    vim 配置实用spf13-vim,安装方便简单快捷,极力推荐. 另外oh-my-zsh 终端配置很好,与之搭配使用效果更佳. 安装都很简单,一个脚本搞定, 都是在gitHub上开源的,自行搜索,这里 ...

  2. Shell终端配置

    Shell终端配置 How to: Change / Setup bash custom prompt (PS1) 参考链接:https://www.cyberciti.biz/tips/howto- ...

  3. 在 Windows 10 上用超级终端配置 Cisco 3560 Series

    在Cisco实验中,恢复路由器出厂配置是必须的内容,所以今天就由小编来为大家介绍Cisco软件怎么恢复路由器出厂配置. 1. 通过终端连接交换机1.1. 通过 Windows 的超级终端连接 Cisc ...

  4. MC3190终端配置冷启动自动恢复的方法

    一. 网络配置的恢复 将当前文件夹下的注册表文件MC3190 Start Config.reg(见附件)复制到终端的Application文件夹内(可以通过数据线或ftp方式传送文件); 导出终端的网 ...

  5. Mac下终端配置(item2 + oh-my-zsh + solarized配色方案)

    最近重装了系统,于是便重新配置了一下终端,使其更符合用户习惯. 效果如下: 拥有语法高亮,命令行tab补全,自动提示符,显示Git仓库状态等功能. 安装 首先我们下载的 iTem2 这个软件,比Mac ...

  6. chrome不能浏览任何网页,提示配置proxy,Ubuntu

    自从在Ubuntu安装virtualbox以后,我的chrome浏览器就不能上网了,提示我检查proxy信息, 后面设置了noproxy就ok啦. 不用使用命令,一次设置,终身有效. 首先,安装gks ...

  7. Mac终端配置,DIY你的Terminal (iTerm 2 + Oh My Zsh)

    使用mac osx一年以来,自带的Terminal终端一直都是白底黑字,食之无味,越来越缺乏新鲜感,怎么也得想个法子来刺激下眼球. 不然花那么多大洋买你回来是要哪般,难道真是为来学习工作??? 怎么可 ...

  8. mac终端配置Android ADB命令

    不得不说mac是一款开发利器,不仅可以开发ios,而且对于Android开发也是不错的选择,下面我就对mac配置adb命令,进行简要的说明.下面我将一下mac环境下的配置步骤:1.在自己的目录(hom ...

  9. 给 Windows 的终端配置代理

    初衷 由于项目开发使用go,所以经常要用到go get,但是吧,terminal下根本没办法下载啊,经常下载三个小时包,写代码一个小时 迫于无奈,只好找个方式可以在terminal下使用ss cmd下 ...

随机推荐

  1. linux下mysql5.7的MHA高可用架构搭建

    一.MHA简介 MHA(Master High Availability)目前在mysql高可用方面比较成熟.是一套优秀的作为 mysql高可用性环境下故障切换和主从提升的高可用软件.在MySQL故障 ...

  2. Service_Worker XSS

    0x00 简介 Service Worker 是 Chrome 团队提出和力推的一个 WEB API,用于给 web 应用提供高级的可持续的后台处理能力.该 WEB API 标准起草于 2013 年, ...

  3. PHP漏洞函数

    1. is_numeric函数 bool is_numeric ( mixed $var ) 此函数用于判断变量是否数字或者数字字符串,不仅能接受十进制,还能接受十六进制,这样就有了绕过的方法 < ...

  4. 【模板】AC自动机加强版

    题目大意:给定 N 个模式串和一个文本串,求每个模式串在文本串中出现的次数. 题解:文本串在自动机上匹配的过程中,记录下自动机上每一个状态被访问的次数.对于访问到的节点 i,则状态 i 的后缀中存在的 ...

  5. Kendo UI for jQuery使用教程:入门指南

    [Kendo UI for jQuery最新试用版下载] Kendo UI目前最新提供Kendo UI for jQuery.Kendo UI for Angular.Kendo UI Support ...

  6. gdb命令小结

    GDB命令小结 gdb <filename> : 调试指定程序文件 r : run 的简写,运行被调试程序, 如果此前没有下过断点,则执行完整个程序:如果有断点, 则程序暂停在第一个可用断 ...

  7. pyqt5--QTDesigner--安装与配置

    安装: 安装PyQt5-tools 文件--->设置---> ---> 安装之后在 安装目录\Lib\site-packages\pyqt5_tools  找到 designer.e ...

  8. apk反编译(仅供娱乐)

    第一个文件夹里面放apk,第二个解析classes.dex,第三个查看java代码,下面三个apktool用来解析apk文件, 记得在环境变量中配置apktool,路径为apktool所在路径 1.解 ...

  9. shiro框架学习-9-shiroSession

    1.什么是会话session : 用户和程序直接的链接,程序可以根据session识别到哪个用户,和javaweb中的session类似 2. 什么是会话管理器SessionManager : 会话管 ...

  10. BZOJ 3398: [Usaco2009 Feb]Bullcow 牡牛和牝牛 水题~

    水~ #include <cstdio> #define N 100004 #define mod 5000011 #define setIO(s) freopen(s".in& ...