用polipo将shadowsocks转换为http代理

来源:互联网 发布:淘宝商城 天猫裙子 编辑:程序博客网 时间:2024/05/01 21:01

shadowsocks使用的是socket代理,由于很多应用下面无法配置socket代理或者比较麻烦,此处提供一个教程将shadowsocks转换为http代理,用的小工具为polipo——一个小型代理服务软件,可以将socket代理转换为http代理。

Prelight

  1. 一个已经配置好的shadowsock代理,此处我们假定你的代理端口为1080.
  2. 安装polipo,ubuntu下直接安装即可。sudo apt-get install polipo

配置polipo

  1. 停止polipo服务 sudo service polipo stop
  2. 编辑polipo配置文件/etc/polipo/config,添加如下内容:

    socksParentProxy = localhost:1080proxyPort = 8787
  3. 启动polipo服务 sudo service polipo start

应用中配置http代理

  • app里面配置http_proxy=http://127.0.0.1:8787

  • bash里面可以编辑$HOME/.bashrc,添加export http_proxy=http://127.0.0.1:8787导出环境变量。当前bash要执行source $HOME/.bashrc来使配置文件生效。

  • git配置git config --global http.proxy 127.0.0.1:8787


更新(2016/11/08)

  1. 笔者本人的linux发行版是ubuntu16.04,最近突然发现polipo启动不了了,运行service polipo start的时候报如下错误:
Failed to restart polipo.service: Unit polipo.service not found.

出现问题的主要原因是ubuntu16.04中使用的是systemd来管理daemon进程(即使我们使用service xx start来启动服务,也会被跳转到systemd中,变成systemctl start xxx),systemd需要使用/lib/systemd/system/目录下的*.service文件来启动服务,就好像ubuntu14.04以前的/etc/init.d/下面的service文件一样。有人会纠结为什么polipo刚开始安装的时候也没有polipo.service文件,也能正常启动,或者更有为什么我本地有很多软件都只有/etc/init.d/下面的service文件,却能够正常启动呢。这是因为系统在启动的时候会调用一个systemd-sysv-generator来生成与/etc/init.d/目录下对应的service文件,但不确定是由于什么原因,可能是文件格式不兼容,polipo的service文件无法生成,导致启动失败,所以我们需要自己创建一个service文件来完成这个工作。用root用户编辑/lib/systemd/system/polipo.service文件,输入一下内容:

[Unit]Description=Polipo Proxy Server[Service]ExecStart=/usr/bin/polipoExecReload=/bin/kill -USR1 $MAINPID[Install]WantedBy=multi-user.target

保存退出。

systemctl daemon-reloadsystemctl restart polipo #或者service polipo restart

Enjoy your time!

Ref: systemd-sysv-generator

1 0