1、安装 ss,过程略

2、ss 配置文件

{
  "server":"x.x.x.x",             #你的 ss 服务器 ip
  "server_port":0,                #你的 ss 服务器端口
  "local_address": "127.0.0.1",   #本地ip
  "local_port":0,                 #本地端口
  "password":"password",          #连接 ss 密码
  "timeout":300,                  #等待超时
  "method":"aes-256-cfb",         #加密方式
  "workers": 1                    #工作线程数
}

  

对于阿里云不开放端口的,本地ip请设置为 0.0.0.0

mac 下安装 ss-local:(这里需要注意的是,brew start 下面的服务并不是我们要的效果,我们需要通过命令启动 ss-local)

brew install (ss)-libev

ss-local  -s xxx.xxx(socks服务器) -p 32294(socks服务器端口) -l 1080(ss-local本地使用端口) -k xxx(密码) -m aes-256-cfb -b 0.0.0.0

上面的 (ss) 是敏感字,自行替换

3、测试:

curl --socks5 127.0.0.1:1080 http://httpbin.org/ip  

上面1080是本地绑定的端口,后面的域名可以用 google 什么的(但是这样好像并不能FQ)

4、privoxy(这个是关键)

到 privoxy 官网下载源码编译安装: https://www.privoxy.org/

安装方式,进入源码目录,执行以下命令:

autoheader && autoconf
./configure
make && make install

  

5、配置

vi /usr/local/etc/privoxy/config

在最后添加一行:

forward-socks5t / 127.0.0.1:1080 .

上面最后的点号不能少,上面的端口号是 ss local 绑定的本地端口

6、useradd privoxy

7、启动 privoxy

privoxy --user privoxy /usr/local/etc/privoxy/config

8、命令行测试

export http_proxy=http://127.0.0.1:8118
export https_proxy=http://127.0.0.1:8118

这里的端口和上面 privoxy 中监听的端口号保持一致。

curl www.google.com

也可以把 export 那两行写到 profile 里面。

9、最终目的:php 里面的 curl 使用代理

<?php
$url = "https://www.facebook.com";

$ch = curl_init();

if($ch === false)
{
    die('Failed to create curl object');
}

curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); // 0 直接输出,1返回值
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 3);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
curl_setopt($ch, CURLOPT_PROXY, '127.0.0.1:8118');

$data = curl_exec($ch);
$error = curl_error($ch);
curl_close($ch);

if ($error) {
    var_dump($error);
} else {
    var_dump($data);
}

  

当然了,前提是,你的 ss 服务器真的可以FQ。

05-25 19:22