架构图

代理流程

首先需要在本地起一个 Shadowsocks Local 的服务,用来将本地的 Socks5 流量转发到能访问 Google Server 的节点上,然后在通过 Privoxy 将本地的 8118 端口的 HTTP 和 HTTPS 请求代理到本地的 Shadowsocks Local 1080 端口上(如果项目支持 Socks5 代理,那么可以跳过这一步)。

安装 Shadowsocks-libev

$ cd /etc/yum.repos.d/
$ wget https://copr.fedoraproject.org/coprs/librehat/shadowsocks/repo/epel-7/librehat-shadowsocks-epel-7.repo
$ yum update
$ yum install shadowsocks-libev

配置 Shadowsocks

$ vim /etc/shadowsocks-libev/config.json
{
  "server":"服务器地址",
  "server_port":38372,
  "local_port":1080,
  "local_address":"127.0.0.1",
  "password":"xxxxxxxxxxx",
  "timeout":60,
  "method":"aes-256-cfb"
}
  • server: SS 服务器地址或域名
  • server_port: SS 服务器端口
  • local_address: 本地 Socks5 服务监听地址
  • local_port: 本地 Socks5 服务监听端口
  • password: 连接远端 SS 服务器的密码
  • method: 加密方式

启动服务

$ sudo systemctl enable shadowsocks-libev #开机自启动
$ sudo systemctl start shadowsocks-libev

测试连接是否正常

$ curl -x socks5h://localhost:1080 ip.sb

ip.sb 是用于获取当前公网 IP 地址的,如果正确返回了代理节点的 IP 则说明服务正常运行。

安装 Privoxy

Privoxy 主要功能是将本地的 HTTP 流量转发到 Socks5 服务的端口上,比如 PHP 项目要访问 Google API 那么可以使用 HTTP 代理,如果无需 HTTP 或 HTTPS 代理的可以忽略后面的内容。

$ sudo yum install privoxy

修改配置文件

# 取消注释的 forward-socks5t 行,修改为如下内容(后面要有 "."):
forward-socks5t   /   127.0.0.1:1080 .

# 取消如下行的注释,设置本地 IP 不转发
forward         192.168.*.*/     .
forward            10.*.*.*/     .
forward           127.*.*.*/     .
forward           localhost/     .

启动服务

$ sudo systemctl enable privoxy #开机自启动
$ sudo systemctl start privoxy #启动服务
$ sudo systemctl status privoxy #查看服务状态

如果无法启动的话可能是 privoxy.service 这个文件有问题,修改 /lib/systemd/system/privoxy.service 这个单元文件,修改内容如下:

[Unit]
Description=Privoxy Web Proxy With Advanced Filtering Capabilities
Wants=network-online.target
After=network-online.target

[Service]
Type=simple
PIDFile=/run/privoxy.pid
ExecStart=/usr/sbin/privoxy --no-daemon --pidfile /run/privoxy.pid --user privoxy /etc/privoxy/config

[Install]
WantedBy=multi-user.target

Type 默认是 forking,这里要改为 simple,并且在 ExecStart 启动命令中加入 --no-daemon 参数,这样 Systemd 就能够获取到 privoxy 进程的控制权。

测试

$ export http_proxy=http://127.0.0.1:8118
$ export https_proxy=http://127.0.0.1:8118
$ curl ip.sb #此时就无需再配置代理了,因为上述命令已经为当前会话配置了全局代理

如果要永久设置代理,可以编辑下面几个文件中的一个来实现:

  • /etc/profile
  • ~/.bashrc
  • ~/.zshrc
export http_proxy=http://127.0.0.1:8118
export https_proxy=http://127.0.0.1:8118

完成后执行如下命令使环境变量生效:

$ source FILE #FILE 你编辑环境变量文件

这样就可以愉快的开发基于 Google 登录的项目了。

I hope this is helpful, Happy hacking…