Squid是一个大名鼎鼎老牌软件,用于做HTTP缓存代理。它非常完善的支持HTTP/1.1 proxy协议,所以我的方法就是:让squid以https的方式提供forward proxy service,然后在客户端使用chrome直接访问。
wget '
http://www.squid-cache.org/Versions/v3/3.3/squid-3.3.8.tar.bz2' tar -jxvf squid-3.3.8.tar.bz2
cd squid-3.3.8
./configure --prefix=/usr --sysconfdir=/etc --libdir=/usr/lib64 --enable-ssl
--enable-auth-basic=DB --enable-auth-ntlm=none --enable-auth-negotiate=none
--enable-auth-digest=none --disable-auto-locale
--disable-ipv6 --disable-translation --with-logdir=/var/logs
--with-pidfile=/var/run/squid.pid --with-swapdir=/var/spool/squid
--with-default-user=squid --libexecdir=/usr/lib64/squid
make
make install
然后修改Squid的配置文件。先是修改监听的端口号,把http_port变成https_port
https_port 4433 cert=/etc/mycert/server.crt key=/etc/mycert/server.key cafile=/etc/mycert/allca.pem
其中cert和key分别是网站的HTTPS证书和私钥。注意证书的common name一定要和服务器的域名相匹配。cafile是用于签署cert的CA链。
然后配置身份认证。squid默认是按照IP进行权限控制,但是这个对我不适用,因为我是要从公网访问它,client没有一个固定的IP。所以最简单的办法就是通过http basic身份认证。
auth_param basic program /usr/lib64/squid/basic_db_auth
auth_param basic children 5 startup=5 idle=1
auth_param basic realm Squid myRealm
auth_param basic credentialsttl 2 hours
acl pauth proxy_auth REQUIRED
http_access allow pauth
#http_access allow localnet
http_access allow localhost
# And finally deny all other access to this proxy
http_access deny all
如果浏览器不支持Https代理,那么可以通过stunnel转一下
https://www.stunnel.org/装完stunnel后给它写一个简单的配置文件:
client=yes
fips=no
[proxy]
accept = 127.0.0.1:50000
connect =
snnn.xen.prgmr.com:4433CAfile = /etc/allca.pem
如果是Linux或Mac OS X,把上述内容以文本文件方式保存为/etc/stunnel/stunnel.conf
然后启动 stunnel 程序。直接在命令行上执行 stunnel 回车。
然后测试一下:
curl -L -v —proxy-digest -Usnnn:xxxxx -x http://localhost:50000
http://twitter.com/其中-U后面是proxy的用户名密码,以冒号分割。
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
https://www.v2ex.com/t/78778
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.