使用Privoxy做智能代理切换
使用Privoxy做智能代理切换
You take the blue pill, the story ends, you wake up in your bed, and believe whatever you want to believe.
You take the red pill, you stay in Wonderland, and I show you just how deep the rabbit hole goes.
– 《黑客帝国》
如果你不知道什么是“墙”,那么应该祝福你继续活在美丽的Matrix里。但如果你选择服用红色药丸,那么在享受了墙外的信息流畅之后,你就再也无法忍受墙内的世界了。
GoAgent
GoAgent是一个基于Google App Engine的翻墙工具。关于GoAgent的安装教程,网络上已经有很多了,大家可以随便搜索一下就可以找到,当然,记得用google搜索。
SwitchySharp
拿GoAgent直接作代理服务器地址不太合适,因为如果全部走代理的话,国内的访问太慢了,所以我们需要给Chrome浏览器配置SwitchySharp插件,SwitchySharp插件加上自动更新的“墙”List(地址见下图),我们就可以在浏览器中享受无墙的世界了。

Privoxy
因为虽然SwitchySharp搞定了访问网页时的代理智能切换,但是我们在使用诸如Dropbox, twitter客户端等软件时,还是无法智能切换到代理。而使用Privoxy就能解决这个问题。
Privoxy是一个智能代理切换软件,它的使用必须基于GoAgent或其它已部署好的代理服务。下面介绍如何安装和配置privoxy。
安装
使用brew就可以一键安装:
brew install privoxy |
自动启动
设置好自动启动后,我们就不用管它了。方法如下:
切换到/Library/LaunchAgents目录,用sudo vim新建一个名为local.privoxy.plist的文件,文件内容如下所示:
<?xml version="1.0" encoding="UTF-8"?> |
编辑完成后,执行如下命令,就可以把privoxy设置成开机自动启动了:
sudo launchctl load /Library/LaunchAgents/local.privoxy.plist |
可以用如下2条命令验证privoxy已经启动了。一是用ps查看是否有privoxy进程,二是查看privoxy默认监听的8118端口是否已经打开。如下所示:
[tangqiao LaunchAgents]$ps aux | grep privoxy |
配置
我们需要配置Provixy才能使用它。配置步骤如下:
一. 用vim打开privoxy的配置文件:vim /usr/local/etc/privoxy/config
在最后增加如下内容:
actionsfile wall.action |
二. 在/usr/local/etc/privoxy/目录下新建一个名为 wall.action的文件,然后在上面添加如下内容:
{+forward-override{forward 0.0.0.0:8087}}
|
该内容第一行表示接下来的内容会智能走端口为8087的代理,后面每行一个地址。你可以随时将你想增加的内容添加进去。该配置文件的官方详细说明文档在这里。
三. 打开mac的代理设置,将“Web代理”和”安全Web代理”都设置成127.0.0.1,端口为8118。如下图所示:

Tips
如果你的GoAgent监听在8087端口,而Privoxy监听在8118端口,那么到这一步,你就可以让你的所有应用正常翻墙了。
需要注意的是SwitchySharp默认会忽略系统代理直接连接网络,你可能需要选择它的“使用系统代理设置”这一项,如下所示:
用浏览器访问 config.privoxy.org,即可用Web界面管理自己的provixy配置文件。不过,事先需要在config文件中启用Web管理功能,方法是编辑/usr/local/etc/privoxy/config 文件,将enable-edit-actions的值设置为1即可。
访问 http://config.privoxy.org/show-url-info 可以查询某一个特定的URL是否会走代理服务。我们可以随时在这儿查询,结合上面的第2步,将一些URL Pattern加入到代理列表文件 wall.action 中, 我们就可以方便地管理Privoxy。
证书是个麻烦事儿,由于GoAgent的证书是自己生成的而不是权威机构颁发的,所以需要把GoAgent的证书加到钥匙串访问的可信证书里面,如下图所示。另外GoAgent的默认带的证书因为是公开的,所以有潜在被中间人攻击的危险,所以更安全的做法是把默认的证书删掉再重启GoAgent,这样GoAgent就会重新另外生成一个证书了,再把这个新证书加到钥匙串访问中,会更安全一些。

参考文章
使用Privoxy做智能代理切换的更多相关文章
- Flash 用FLASH遮罩效果做图片切换效果
本教程是关于FLASH应用遮罩效果制作好看的图片切换效果.该教程选用FLASH遮罩中最简单的一种作为例子,当然你可以用自己的想象力来做出更多更好的图片动画.希望本教程能带你带来帮助. 让我们先看看效果 ...
- DATAGUARD在做SWITCHOVER切换时遇到问题总结
1.主库在进行物理主备库角色转换的时候遇到ORA-01093错误 SQL> select switchover_status from v$database; SWITCHOVER_STAT ...
- uniapp使用swiper组件做tab切换动态获取高度
swiper对高度进行了限制,所以说通常做出了tab切换的效果但是内容经常被截取掉???? 所以我在前端做了一个动态获取高度的功能 选项卡标题也就是tab切换的效果 选项卡内容区域的高度自适应 因为进 ...
- 【原】react做tab切换的几种方式
最近搞一个pc端的活动,搞了一个多月,甚烦,因为相比于pc端,更喜欢移动端多一点.因为移动端又能搞我的react了. 今天主要总结一下react当中tab切换的几种方式,因为tab切换基本上都会用到. ...
- Android Viewpager加Fragment做界面切换时数据消失的解决方式
今天遇到多个Fragment切换,回来后页面空白的情况,找到这个博客方法设置了一下,就可以了 vpAdapter = new VpAdapter(getSupportFragmentManager() ...
- VueJS 使用i18n做国际化切换中英文
1.安装 npm install vue-i18n --save 2.创建存放语言包和i18n入口文件 a.在src下创建i18n目录 b.在src/i18n/创建i18n.js (入口) c.在s ...
- vue做nav切换
话不多说,直接上代码. 关键:通过点击来改变thisindex ,又thisinde == index来控制class是否含active来控制样式 简单效果如下:
- MySQL基于域名做高可用切换(Consul初试)
一,Consul功能介绍 服务发现 - Consul的客户端可用提供一个服务,比如 api 或者mysql ,另外一些客户端可用使用Consul去发现一个指定服务的提供者.通过DNS或者HTTP应用程 ...
- 在做爬虫或者自动化测试时新打开一个新标签页,必须使用windows切换
在做爬虫或者自动化测试时,有时会打开一个新的标签页或者新的窗口,直接使用xpath定位元素会发现找不到元素,在firefox中定位了元素还是找不到, 经过多次发现,在眼睛视野内看到这个窗口是在最前面, ...
随机推荐
- hdu 2509 博弈 *
多堆的情况要处理好孤单堆 #include<cstdio> #include<iostream> #include<algorithm> #include<c ...
- [译]:Orchard入门——安装Orchard
原文链接:Installing Orchard 文章内容基于Orchard 1.8版本 安装Orchard的方式 主要有以下四种方式安装Orchard: 利用Microsoft Web Platfor ...
- win7-32 系统 + VS2010 配置 glew
网上下载的程序,运行时报错: C1083: 无法打开包括文件:“gl\glew.h”: No such file or directory. 百度一下,发现需要配置 glew 库. 方法如下: 下载 ...
- WPF中的依赖项属性
Form cnblogs 桂素伟 随着WPF的推广,不得不重新拾起WPF来,因为这块的产品越来越多. 只能跟着MSDN来学了,所以想是在这里记录下学习的过程和对知识的理解. 先从最基本的吧,依赖项属性 ...
- android用户界面详尽教程实例
android用户界面详尽教程实例 1.android用户界面之AlarmManager教程实例汇总http://www.apkbus.com/android-48405-1-1.html2.andr ...
- HDU 2243 考研路茫茫——单词情结(AC自动机+矩阵)
考研路茫茫——单词情结 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total ...
- AndroidStudio里面怎么取消与SVN的关联
在公司做项目 遇到SVN解除关联的问题 后经过解决: 1.解除文件的关联方法: 1.1. 创建一个reg文件 如下 1.2 在文件中填入如下内容并保存: Windows Registry Editor ...
- python 的特殊方法 __str__和__repr__
__str__和__repr__ 如果要把一个类的实例变成 str,就需要实现特殊方法__str__(): class Person(object): def __init__(self, name, ...
- DSP using MATLAB 示例Example2.11
上代码: b = [1]; a = [1, -1, 0.9]; n = [-20:120]; h = impz(b,a,n); set(gcf,'Color','white'); %subplot(2 ...
- TestNg线程池配置、执行次数配置、超时配置
使用注解的方式对TestNg线程池配置.执行次数配置.超时配置 注:使用注解来控制测试方法运行的次数和超时时间,timeOut在单线程或者多线程模式下都可用,threadPoolSize设置了线程池的 ...