归档

亲测资源
AD:【腾讯云服务器大降价】2核4G222元/3年1核2G38元/年

一键构建自己的海外VPS代理服务器shadowsocks

前言

目前有项目有调用google drive api的需求,我们这里需要一个代理服务器来完成稳定调用的条件。而且目前很多机场不是特别稳定,尤其是在晚上访问人数较多的时候,如果有自己的代理服务器的话,相对来说也就不用受这方面的干扰了

代理服务器

购买一台海外服务器,从海外运营商国内运营商购买都可以,建议买大公司的,小公司网络不稳定,如果只有代理需求不如去机场买套餐

服务器初始化

参考本站服务器初始化相关内容,海外服务器不需要设置代理仓库,这里我们只需要docker

构建代理服务器

这里使用shadowsocks,以及docker构建的方式,其他构建方式参考官方GitHub以及官网文档

version: '3.7'
services:
shadowsocks:
restart: always
container_name: shadowsocks
image: shadowsocks/shadowsocks-libev:v3.3.5
ports:
- 9527:8388/tcp
- 9527:8388/udp
environment:
- METHOD=aes-256-gcm
- PASSWORD=passwd
- SERVER_ADDR=0.0.0.0
- TIMEOUT=60
- DNS_ADDRS=8.8.8.8,8.8.4.4
- TZ=UTC

相关参数的含义见Shadowsocks-libev Docker Image,记得开放对外的端口,这里是9527

构建

#老版本的是docker-compose up -d 注意自己的compose版本
docker compose up -d

windows连接

这里只展示windows连接的方法,其他服务/操作系统的连接方式同样参考官方文档

首先,下载最新版本的Shadowsocks客户端的压缩包,解压后直接运行,右击任务栏图标

一键构建自己的海外VPS代理服务器shadowsocks-www.88531.cn资享网

我们需要编辑服务器地址信息

一键构建自己的海外VPS代理服务器shadowsocks-www.88531.cn资享网

此时右击任务栏shadowsocks -> 系统代理 -> 全局代理 就可以使用代理服务器访问了所有网站了

配置自定义PAC代理

右击任务栏shadowsocks -> PAC模式 -> 编辑本地PAC文件,打开pac.txt,可以看到

var __USERRULES__ = [];
var __RULES__ = [
//...
];

其中__RULES__为已有规则,这里为了演示方便直接删掉,然后在系统代理中选择PAC代理,可以发现,现在所有访问的网站均不会走代理,此时添加规则

var __USERRULES__ = [];
var __RULES__ = [
"||baidu.com"
];

则,访问百度可以发现以及走了代理进行访问,更多规则参考Adblock Plus filters explained

使用通配符也可以,比较容易理解

var __USERRULES__ = [];
var __RULES__ = [
"*.baidu.com/*"
];

客户端容器

官网只给出了服务端的容器构建,没有给出客户端的容器构建,我们看下源码的dockerfile,目前的发布docker版本是v3.5.5

FROM alpine
LABEL maintainer="kev <noreply@datageek.info>, Sah <contact@leesah.name>"

ENV SERVER_ADDR 0.0.0.0
ENV SERVER_PORT 8388
ENV PASSWORD=
ENV METHOD      aes-256-gcm
ENV TIMEOUT     300
ENV DNS_ADDRS    8.8.8.8,8.8.4.4
ENV TZ UTC
ENV ARGS=

COPY . /tmp/repo
RUN set -ex \
 # Build environment setup
 && apk add --no-cache --virtual .build-deps \
      autoconf \
      automake \
      build-base \
      c-ares-dev \
      libcap \
      libev-dev \
      libtool \
      libsodium-dev \
      linux-headers \
      mbedtls-dev \
      pcre-dev \
 # Build & install
 && cd /tmp/repo \
 && ./autogen.sh \
 && ./configure --prefix=/usr --disable-documentation \
 && make install \
 && ls /usr/bin/ss-* | xargs -n1 setcap cap_net_bind_service+ep \
 && apk del .build-deps \
 # Runtime dependencies setup
 && apk add --no-cache \
      ca-certificates \
      rng-tools \
      tzdata \
      $(scanelf --needed --nobanner /usr/bin/ss-* \
      | awk '{ gsub(/,/, "\nso:", $2); print "so:" $2 }' \
      | sort -u) \
 && rm -rf /tmp/repo

USER nobody

COPY ./docker/alpine/entrypoint.sh /entrypoint.sh

CMD /entrypoint.sh

以及entrypoint.sh

#!/bin/sh

if [[ -f "$PASSWORD_FILE" ]]; then
    PASSWORD=$(cat "$PASSWORD_FILE")
fi

if [[ -f "/var/run/secrets/$PASSWORD_SECRET" ]]; then
    PASSWORD=$(cat "/var/run/secrets/$PASSWORD_SECRET")
fi

exec ss-server \
      -s $SERVER_ADDR \
      -p $SERVER_PORT \
      -k ${PASSWORD:-$(hostname)} \
      -m $METHOD \
      -t $TIMEOUT \
      -d $DNS_ADDRS \
      -u \
      $ARGS

可以看到他这里甚至没有给出客户端构建的必要参数,而且ss-server也是写死的,我们可以通过docker-compose中的command重写最后的cmd命令来完成客户端容器的构建,这里给出示例

version: '3.7'
services:
  shadowsocks-client:
    restart: always
    container_name: shadowsocks-client
    image: shadowsocks/shadowsocks-libev:v3.3.5
    ports:
      - 9527:1080
    command:
      - "/bin/sh"
      - "-c"
      - "exec ss-local -s your_sw_server_ip -p your_sw_server_port -b 0.0.0.0 -l 1080 -k your_sw_server_passwd -m your_server_method -t 60"

其实也可以重写他的docker构建自己的shadowsocks客户端,但是没啥难度也没啥必要,这里就不这么处理了

此时使用代理,即可完成socket代理http请求

curl --socks5-hostname localhost:9527 https://www.baidu.com
温馨提示: 本文最后更新于2025-01-03 17:48:09,某些文章具有时效性,若有错误或已失效,请在下方 留言或联系 www.88531.cn资享网
© 版权声明
THE END
喜欢就支持一下吧
点赞23 分享