Shadowsocks 是一个开源的 socks swapping 库,用于交换 socks(代码片段),支持多种交换频率和策略,以下是详细的步骤指南,帮助你学习和使用 Shadowsocks:
安装 Shadowsocks
-
访问 Shadowsocks 官方网站。
-
下载并安装源代码,选择适合你的编译工具(如
make或cmake)。 -
将源代码复制到你的项目根目录下。
-
在项目中创建一个
setup.py文件,包含以下内容:from setuptools import setup, find_packages setup(name='Shadowsocks', version='.8', description=' socks swapping library', packages=find_packages(), install_requires=[ 'python-dotenv', 'python-multipart' ]) -
将
setup.py上传到setup.py目录,然后在项目根目录创建shadowsocks.py文件,使其成为你的 Python 库。
创建交换器
-
在项目根目录下创建
swap.py文件,导入 Shadowsocks 库:from shadowsocks import Swapper
-
通过调用
Swapper对象创建交换器:import shadowsocks as sw swap = sw.Swap('then', 'after', type=, freq='daily')type: 0 表示普通交换,1 表示带有标记的交换。freq: 频率,如 'daily'、'weekly'、'every_hour' 等。
-
获取交换器对象:
swap_obj = swap().swap()
获取交换器信息
-
检查交换器的路径:
print(swap_obj.path)
-
获取交换器的参数:
print(swap_obj.params)
获取源 socks
-
获取源 socks:
source_socks = swap_obj.get_source_socks() print(source_socks)
-
获取目标 socks:
target_socks = swap_obj.get_target_socks() print(target_socks)
交换 socks
-
调用交换器:
# 交换源 socks 和目标 socks result = swap_obj.swap(source_socks, target_socks) print(result)
-
如果交换失败,可能需要检查源 socks 或目标 socks:
if result.error: print(f"交换失败,原因:{result.error}")
反交换 socks
调用 swap_obj.swap(target_socks, source_socks) 反交换源和目标 socks。
进行多交换
-
生成多个交换器:
swapers = [sw.Swap('then', 'after', type=, freq='daily') for _ in range(3)] -
在项目中将每个交换器添加到项目根目录下:
for swaper in swapers: swaper.path = 'swap1', swaper.path = 'swap2', swaper.path = 'swap3' swaper.path = 'then', swaper.path = 'after' swaper.type = 0 swaper.freq = 'daily' swaper.params['swap_id'] = str(swaper.path) swaper.params['swap_type'] = 'then' swaper.params['swap_id'] = str(swaper.path) swaper.params['swap_type'] = 'after' swaper.params['swap_id'] = str(swaper.path) swaper.params['swap_type'] = 'then'
测试交换器
-
在项目根目录下运行以下命令:
python3 -c "import shadowsocks as sw; swap = sw.Swap('then', 'after', type=, freq='daily'); swap.swap(['123', '456'], ['789', '12'])" -
查看交换结果:
python3 -c "import shadowsocks as sw; swap = sw.Swap('then', 'after', type=, freq='daily'); swap.swap(['123', '456'], ['789', '12'])" print(swap.result)
管理交换器
Shadowsocks 支持多个交换器,可以通过以下步骤管理:
-
在项目根目录创建一个
swappers.py文件,管理交换器的路径和类型:from shadowsocks import Swapper from typing import List, Tuple import os class SwapperManager: def __init__(self): self交换器列表 = [] self路径列表 = [] self类型列表 = [] self交换频率列表 = [] # 创建交换器 def create交换器(self, type=, freq='daily'): swap = Swapper(type, freq) return SwapperManager() # 获取交换器 def get交换器(self, type=, freq='daily'): swap = Swapper(type, freq) return swap # 更新路径列表 def update路径(self, swap, path): self路径列表.append(path) print(f"更新路径:{path}") # 更新类型列表 def update类型(self, swap, type): self类型列表.append(type) print(f"更新类型:{type}") # 统计交换频率 def update频率(self, swap, freq): self交换频率列表.append(freq) print(f"更新交换频率:{freq}") # 检查交换器是否已存在 def is已存在(self, swap): return swap in self交换器列表 # 获取交换器列表 def get交换器列表(self): return self交换器列表 # 初始化交换器管理 manager = SwapperManager() manager.create交换器(, 'daily') manager.create交换器(1, 'weekly') manager.create交换器(, 'daily') # 更新路径 manager.update路径(manager交换器(, 'daily'), 'swap1') manager.update路径(manager交换器(1, 'weekly'), 'swap2') # 查看交换器列表 print(manager交换器列表))
调整交换频率
Shadowsocks 支持多种交换频率,如:
- 'daily':每天交换一次
- 'weekly':每周交换一次
- 'every_hour':每小时交换一次
- 'minute':每分钟交换一次
- 'second':每秒交换一次
查看交换结果
调用交换器时,交换器会返回交换结果:
result.error:交换失败的提示result.result:交换后的源 socks 和目标 socks- 其他:交换结果的其他信息
配置配置文件
Shadowsocks 提供了 swap.conf 文件,用于配置交换器的参数,你可以通过以下方式配置:
freq='daily'
将 type 和 freq 设置为你需要的值。
测试代码
在项目根目录下创建 test.py 文件,包含以下内容:
import shadowsocks as sw
from shadowsocks import Path, PathList, PathType
# 创建交换器
swap = sw.Swap('then', 'after', type=, freq='daily')
# 获取源 socks
source_socks = PathList(['123', '456', '789'])
target_socks = PathList(['456', '789', '12'])
# 进行交换
result = swap.swap(source_socks, target_socks)
# 查看交换结果
print(result.result)
导入文档
Shadowsocks 提供详细的文档,你可以参考其官方文档 [Shadowsocks documentation](https://github.com/Shadowsocks/shadowsocks/blob/master/docs/index.md) 来获取更多信息。
使用示例代码
Shadowsocks 提供了多种示例代码,你可以参考其示例文件 examples/index.py 来学习如何使用交换器。
命令行工具
Shadowsocks 提供了命令行工具,python3 -m shadowsocks,你可以使用这些工具来管理交换器和进行交换操作。
运行工具
你可以使用以下命令运行以下工具:
python3 -m shadowsocks
在运行后,Shadowsock









