八、version 8
bash
#!/bin/bash
# Oracle E2.1 Micro 保活脚本 v4.3 - 多目标 + 动态限速版
# 下载过程会持续 60~180 秒左右,网络利用率更平滑
MODE=${1:-start}
if [ "$MODE" = "stop" ]; then
echo "🛑 停止保活进程..."
pkill -f "keepalive" 2>/dev/null
echo "✅ 已停止"
exit 0
fi
echo "🚀 启动多目标网络保活进程 (v4.3 - 动态限速)"
echo "使用 ./oracle_oci_keepalive.sh stop 即可停止"
# ==================== 多目标列表 ====================
DOWNLOAD_URLS=(
"https://speed.cloudflare.com/__down?bytes=" # 支持精确大小
"https://fpt.cloudfront.net/" # AWS
"https://cachefly.cachefly.net/" # CacheFly
"https://speedtest.tele2.net/" # Tele2
"https://ipv4.download.thinkbroadband.com/" # ThinkBroadband
"https://mirrors.aliyun.com/" # 阿里云镜像
)
# iperf3 服务器
IPERF_SERVERS=("iperf.cloudflare.net" "iperf3.moji.fr" "ping.online.net" "speedtest.wdc01.softlayer.com")
while true; do
RANDOM_MB=$(shuf -i 15-85 -n 1)
echo "[$(date '+%H:%M:%S')] 计划下载 ≈ ${RANDOM_MB}MB"
# 随机 iperf3
RANDOM_SERVER=${IPERF_SERVERS[$RANDOM % ${#IPERF_SERVERS[@]}]}
iperf3 -c "$RANDOM_SERVER" -t 25 -P 1 >/dev/null 2>&1 || true
# 随机选择下载目标
IDX=$((RANDOM % ${#DOWNLOAD_URLS[@]}))
BASE_URL=${DOWNLOAD_URLS[$IDX]}
case $BASE_URL in
*cloudflare.com*)
FULL_URL="${BASE_URL}$((RANDOM_MB * 1024 * 1024))"
;;
*thinkbroadband*)
SIZE=$((RANDOM_MB > 60 ? 200 : 100))
FULL_URL="${BASE_URL}${SIZE}MB.zip"
;;
*tele2.net*)
if [ $RANDOM_MB -le 30 ]; then
FULL_URL="${BASE_URL}10MB.test"
elif [ $RANDOM_MB -le 60 ]; then
FULL_URL="${BASE_URL}100MB.test"
else
FULL_URL="${BASE_URL}1GB.test"
fi
;;
*cachefly*)
FULL_URL="${BASE_URL}100mb.test"
;;
*aliyun*)
FULL_URL="${BASE_URL}ubuntu-releases/22.04/ubuntu-22.04.4-desktop-amd64.iso"
;;
*)
FULL_URL="${BASE_URL}100MB.test"
;;
esac
echo " → 下载: $FULL_URL"
# ==================== 动态限速核心 ====================
# 让下载持续 60~180 秒左右
TARGET_SECONDS=$((RANDOM % 121 + 60)) # 60 ~ 180 秒随机
SPEED_KB=$(( RANDOM_MB * 1024 / TARGET_SECONDS )) # KB/s
# 限速范围控制(避免过慢或过快)
if [ $SPEED_KB -lt 350 ]; then SPEED_KB=350; fi
if [ $SPEED_KB -gt 2800 ]; then SPEED_KB=2800; fi
echo " → 限速 ≈ ${SPEED_KB} KB/s (预计持续 ${TARGET_SECONDS} 秒)"
# 执行下载
wget -q -O /dev/null --timeout=240 --tries=2 \
--limit-rate=${SPEED_KB}K "$FULL_URL" 2>/dev/null || true
# 随机休眠
SLEEP_TIME=$((RANDOM % 45 + 25))
echo " → 等待 ${SLEEP_TIME} 秒..."
sleep $SLEEP_TIME
done
七、version 7
- 第1点:已替换并大幅扩展 DOWNLOAD_URLS 和 case 语句
- 第2点:RANDOM_MB 改为 20-120;增加偶尔并行下载(约25%概率启动2个下载,短 期冲高流量);加强容错(--continue + 多重尝试);增加 iperf3 服务器
- 第3点:新增大量欧洲 + 亚洲优质目标(Hetzner 多地区、OVH、德国镜像、亚洲镜像等),总目标更丰富,地理分布更均衡
bash
#!/bin/bash
# Oracle E2.1 Micro 保活脚本 v4.4 - 多目标 + 动态限速 + 并行下载版
# 下载过程更自然,流量更平稳,适合保持 >=20% 网络利用率
MODE=${1:-start}
if [ "$MODE" = "stop" ]; then
echo "🛑 停止保活进程..."
pkill -f "keepalive" 2>/dev/null
echo "✅ 已停止"
exit 0
fi
echo "🚀 启动 Oracle 保活进程 (v4.4 - 增强版)"
echo "使用 ./oracle_oci_keepalive.sh stop 即可停止"
# ==================== 多目标列表(欧洲 + 亚洲偏重) ====================
DOWNLOAD_URLS=(
"https://speed.cloudflare.com/__down?bytes=" # Cloudflare
"https://fpt.cloudfront.net/" # AWS
"https://cachefly.cachefly.net/" # CacheFly
"https://speedtest.tele2.net/" # Tele2 (欧洲)
"https://ipv4.download.thinkbroadband.com/" # ThinkBroadband
"https://mirrors.aliyun.com/" # 阿里云(亚洲)
# ==================== 新增欧洲目标 ====================
"https://ash-speed.hetzner.com/" # Hetzner Ashburn
"https://fsn1-speed.hetzner.com/" # Hetzner Frankfurt
"https://nbg1-speed.hetzner.com/" # Hetzner Nuremberg
"https://hel1-speed.hetzner.com/" # Hetzner Helsinki
"https://sin-speed.hetzner.com/" # Hetzner Singapore(亚洲)
"https://proof.ovh.net/files/" # OVH(欧洲)
"http://212.183.159.230/" # Vodafone
"https://ftp.halifax.rwth-aachen.de/" # 德国 Aachen
"https://ftp.uni-kl.de/" # 德国 Kaiserslautern
# ==================== 新增亚洲/其他目标 ====================
"https://mirrors.tuna.tsinghua.edu.cn/" # 清华 TUNA(亚洲)
"https://mirrors.ustc.edu.cn/" # 中国科大(亚洲)
"https://repo.huaweicloud.com/" # 华为云(亚洲)
"https://mirror.i3d.net/" # i3D.net CDN
)
# iperf3 服务器(增加欧洲/亚洲)
IPERF_SERVERS=(
"iperf.cloudflare.net"
"iperf3.moji.fr"
"ping.online.net"
"speedtest.wdc01.softlayer.com"
"iperf3.serverius.net"
"speedtest.nl1.mirhosting.net" # 荷兰
"iperf3.asia" # 部分地区可用
)
while true; do
RANDOM_MB=$(shuf -i 20-120 -n 1)
echo "[$(date '+%H:%M:%S')] 计划下载 ≈ ${RANDOM_MB}MB"
# 随机 iperf3 测试
RANDOM_SERVER=${IPERF_SERVERS[$RANDOM % ${#IPERF_SERVERS[@]}]}
iperf3 -c "$RANDOM_SERVER" -t 20 -P 1 >/dev/null 2>&1 || true
# 随机选择下载目标
IDX=$((RANDOM % ${#DOWNLOAD_URLS[@]}))
BASE_URL=${DOWNLOAD_URLS[$IDX]}
# ==================== 动态构造下载链接 ====================
case $BASE_URL in
*cloudflare.com*)
FULL_URL="${BASE_URL}$((RANDOM_MB * 1024 * 1024))"
;;
*hetzner.com*)
if [ $RANDOM_MB -le 60 ]; then
FULL_URL="${BASE_URL}100MB.bin"
else
FULL_URL="${BASE_URL}1GB.bin"
fi
;;
*ovh.net*)
FULL_URL="${BASE_URL}1Gb.dat"
;;
*thinkbroadband*)
SIZE=$((RANDOM_MB > 70 ? 500 : 200))
FULL_URL="${BASE_URL}${SIZE}MB.zip"
;;
*tele2.net*)
if [ $RANDOM_MB -le 40 ]; then
FULL_URL="${BASE_URL}100MB.test"
else
FULL_URL="${BASE_URL}1GB.test"
fi
;;
*212.183.159.230*)
FULL_URL="${BASE_URL}1GB.zip"
;;
*aliyun* | *tsinghua* | *ustc* | *huaweicloud*)
FULL_URL="${BASE_URL}ubuntu-releases/22.04/ubuntu-22.04.4-desktop-amd64.iso"
;;
*)
FULL_URL="${BASE_URL}100MB.test" # 默认
;;
esac
echo " → 下载: $FULL_URL"
# ==================== 动态限速 ====================
TARGET_SECONDS=$((RANDOM % 121 + 60)) # 60~180 秒
SPEED_KB=$(( RANDOM_MB * 1024 / TARGET_SECONDS ))
if [ $SPEED_KB -lt 400 ]; then SPEED_KB=400; fi
if [ $SPEED_KB -gt 3200 ]; then SPEED_KB=3200; fi
echo " → 限速 ≈ ${SPEED_KB} KB/s (预计 ${TARGET_SECONDS} 秒)"
# ==================== 执行下载(加强容错 + 偶尔并行) ====================
PARALLEL=$((RANDOM % 4)) # 约 25% 概率并行
if [ $PARALLEL -eq 0 ]; then
echo " → 【并行模式】启动两个下载冲流量"
wget -q -O /dev/null --timeout=300 --tries=3 --continue \
--limit-rate=${SPEED_KB}K "$FULL_URL" 2>/dev/null || true &
sleep 3
wget -q -O /dev/null --timeout=300 --tries=3 --continue \
--limit-rate=$((SPEED_KB * 7 / 10))K "$FULL_URL" 2>/dev/null || true &
wait
else
wget -q -O /dev/null --timeout=300 --tries=3 --continue \
--limit-rate=${SPEED_KB}K "$FULL_URL" 2>/dev/null || true
fi
# 随机休眠
SLEEP_TIME=$((RANDOM % 50 + 20))
echo " → 等待 ${SLEEP_TIME} 秒..."
sleep $SLEEP_TIME
done
六、version 6
- 新增/优化功能:随机 User-Agent(浏览器 + 下载器混合,更自然)
- 混合使用 curl 和 wget(随机选择)
- 下载失败后立即换目标重试(最多重试 2 次)
- 加强日志输出,便于观察
- 保持原有动态限速、偶尔并行、随机休眠等特性
bash
#!/bin/bash
# Oracle E2.1 Micro 保活脚本 v4.5 - 随机UA + curl/wget混合 + 失败自动换目标
# 流量更自然,容错更强,适合长期保活
MODE=${1:-start}
if [ "$MODE" = "stop" ]; then
echo "🛑 停止保活进程..."
pkill -f "keepalive" 2>/dev/null
echo "✅ 已停止"
exit 0
fi
echo "🚀 启动 Oracle 保活进程 (v4.5 - 自然流量增强版)"
echo "使用 ./oracle_oci_keepalive.sh stop 即可停止"
# ==================== 随机 User-Agent ====================
USER_AGENTS=(
"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/134.0.0.0 Safari/537.36"
"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/133.0.0.0 Safari/537.36"
"Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/132.0.0.0 Safari/537.36"
"Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:135.0) Gecko/20100101 Firefox/135.0"
"Wget/1.21.4"
"curl/8.5.0"
)
get_random_ua() {
echo "${USER_AGENTS[$RANDOM % ${#USER_AGENTS[@]}]}"
}
# ==================== 多目标列表 ====================
DOWNLOAD_URLS=(
"https://speed.cloudflare.com/__down?bytes="
"https://fpt.cloudfront.net/"
"https://cachefly.cachefly.net/"
"https://speedtest.tele2.net/"
"https://ipv4.download.thinkbroadband.com/"
"https://mirrors.aliyun.com/"
"https://ash-speed.hetzner.com/"
"https://fsn1-speed.hetzner.com/"
"https://nbg1-speed.hetzner.com/"
"https://hel1-speed.hetzner.com/"
"https://sin-speed.hetzner.com/"
"https://proof.ovh.net/files/"
"http://212.183.159.230/"
"https://ftp.halifax.rwth-aachen.de/"
"https://mirrors.tuna.tsinghua.edu.cn/"
"https://mirrors.ustc.edu.cn/"
"https://repo.huaweicloud.com/"
"https://mirror.i3d.net/"
)
# iperf3 服务器
IPERF_SERVERS=(
"iperf.cloudflare.net" "iperf3.moji.fr" "ping.online.net"
"speedtest.wdc01.softlayer.com" "iperf3.serverius.net"
"speedtest.nl1.mirhosting.net"
)
# ==================== 下载函数(支持 curl/wget + UA + 重试) ====================
download_file() {
local url=$1
local speed_kb=$2
local ua=$(get_random_ua)
local tool=$((RANDOM % 2)) # 0=wget, 1=curl
echo " → 使用 ${tool:-wget} 下载 | UA: ${ua:0:50}..."
if [ $tool -eq 0 ]; then
# wget
wget -q -O /dev/null \
--timeout=240 \
--tries=2 \
--continue \
--limit-rate=${speed_kb}K \
--user-agent="${ua}" \
"$url" 2>/dev/null && return 0 || return 1
else
# curl
curl -s -L --max-time 240 \
--speed-limit $((speed_kb * 800)) \
--user-agent "${ua}" \
-o /dev/null \
"$url" 2>/dev/null && return 0 || return 1
fi
}
while true; do
RANDOM_MB=$(shuf -i 20-120 -n 1)
echo "[$(date '+%H:%M:%S')] 计划下载 ≈ ${RANDOM_MB}MB"
# 随机 iperf3
RANDOM_SERVER=${IPERF_SERVERS[$RANDOM % ${#IPERF_SERVERS[@]}]}
iperf3 -c "$RANDOM_SERVER" -t 18 -P 1 >/dev/null 2>&1 || true
MAX_ATTEMPTS=3
ATTEMPT=1
SUCCESS=0
while [ $ATTEMPT -le $MAX_ATTEMPTS ] && [ $SUCCESS -eq 0 ]; do
# 随机选择目标
IDX=$((RANDOM % ${#DOWNLOAD_URLS[@]}))
BASE_URL=${DOWNLOAD_URLS[$IDX]}
# 构造完整URL
case $BASE_URL in
*cloudflare.com*)
FULL_URL="${BASE_URL}$((RANDOM_MB * 1024 * 1024))" ;;
*hetzner.com*)
[ $RANDOM_MB -le 60 ] && FULL_URL="${BASE_URL}100MB.bin" || FULL_URL="${BASE_URL}1GB.bin" ;;
*ovh.net*)
FULL_URL="${BASE_URL}1Gb.dat" ;;
*thinkbroadband*)
SIZE=$((RANDOM_MB > 70 ? 500 : 200))
FULL_URL="${BASE_URL}${SIZE}MB.zip" ;;
*tele2.net*)
[ $RANDOM_MB -le 40 ] && FULL_URL="${BASE_URL}100MB.test" || FULL_URL="${BASE_URL}1GB.test" ;;
*212.183.159.230*)
FULL_URL="${BASE_URL}1GB.zip" ;;
*aliyun* | *tsinghua* | *ustc* | *huaweicloud*)
FULL_URL="${BASE_URL}ubuntu-releases/22.04/ubuntu-22.04.4-desktop-amd64.iso" ;;
*)
FULL_URL="${BASE_URL}100MB.test" ;;
esac
echo " → 第 $ATTEMPT 次尝试: $FULL_URL"
# 动态限速
TARGET_SECONDS=$((RANDOM % 121 + 60))
SPEED_KB=$(( RANDOM_MB * 1024 / TARGET_SECONDS ))
[ $SPEED_KB -lt 400 ] && SPEED_KB=400
[ $SPEED_KB -gt 3200 ] && SPEED_KB=3200
# 执行下载
if download_file "$FULL_URL" "$SPEED_KB"; then
echo " ✅ 下载成功"
SUCCESS=1
else
echo " ❌ 下载失败,准备重试..."
ATTEMPT=$((ATTEMPT + 1))
sleep 2
fi
done
if [ $SUCCESS -eq 0 ]; then
echo " ⚠️ 本轮所有尝试均失败,跳过本次循环"
fi
# 偶尔并行冲流量(成功后约30%概率)
if [ $SUCCESS -eq 1 ] && [ $((RANDOM % 3)) -eq 0 ]; then
echo " → 【并行冲刺】额外启动一个下载"
download_file "$FULL_URL" $((SPEED_KB * 6 / 10)) &
sleep 4
fi
# 随机休眠
SLEEP_TIME=$((RANDOM % 55 + 25))
echo " → 等待 ${SLEEP_TIME} 秒后继续..."
sleep $SLEEP_TIME
done
五、version 5
有错误:
bash
ubuntu@:~/$ ./oracle_oci_keepalive.sh
🚀 启动 Oracle 保活进程 (v4.5 - 自然流量增强版)
使用 ./oracle_oci_keepalive.sh stop 即可停止
[08:46:26] 计划下载 ≈ 23MB
→ 第 1 次尝试: https://mirrors.tuna.tsinghua.edu.cn/ubuntu-releases/22.04/ubuntu-22.04.4-desktop-amd64.iso
→ 使用 0 下载 | UA: curl/8.5.0...
❌ 下载失败,准备重试...
→ 第 2 次尝试: https://cachefly.cachefly.net/100MB.test
→ 使用 0 下载 | UA: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) Ap...
❌ 下载失败,准备重试...
→ 第 3 次尝试: https://fpt.cloudfront.net/100MB.test
→ 使用 1 下载 | UA: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) Ap...
❌ 下载失败,准备重试...
⚠️ 本轮所有尝试均失败,跳过本次循环
→ 等待 35 秒后继续...
[08:47:09] 计划下载 ≈ 101MB
→ 第 1 次尝试: https://cachefly.cachefly.net/100MB.test
→ 使用 0 下载 | UA: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWeb...
❌ 下载失败,准备重试...
→ 第 2 次尝试: https://ipv4.download.thinkbroadband.com/500MB.zip
→ 使用 1 下载 | UA: Wget/1.21.4...
❌ 下载失败,准备重试...
→ 第 3 次尝试: https://hel1-speed.hetzner.com/1GB.bin
→ 使用 0 下载 | UA: Wget/1.21.4...
下载全部失败的主要原因是:
- URL 构造错误 (最严重):很多站点后面直接拼
100MB.test并不存在正确文件。 - curl 限速参数错误 :
--speed-limit用错了,导致 curl 行为异常。 - 部分镜像站被 Oracle 区域限制(尤其是中国镜像)。
- 显示小 Bug(工具显示不准确)。
立即可用的修复版 v4.6(已大幅优化)
bash
#!/bin/bash
# Oracle E2.1 Micro 保活脚本 v4.6 - 修复URL + curl限速 + 更稳健版
MODE=${1:-start}
if [ "$MODE" = "stop" ]; then
echo "🛑 停止保活进程..."
pkill -f "keepalive" 2>/dev/null
echo "✅ 已停止"
exit 0
fi
echo "🚀 启动 Oracle 保活进程 (v4.6 - 修复稳定版)"
echo "使用 ./oracle_oci_keepalive.sh stop 即可停止"
# ==================== 随机 User-Agent ====================
USER_AGENTS=(
"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/134.0.0.0 Safari/537.36"
"Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:135.0) Gecko/20100101 Firefox/135.0"
"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/133.0.0.0 Safari/537.36"
"Wget/1.21.4"
"curl/8.5.0"
)
get_random_ua() {
echo "${USER_AGENTS[$RANDOM % ${#USER_AGENTS[@]}]}"
}
# ==================== 可靠的多目标列表 ====================
DOWNLOAD_URLS=(
"https://speed.cloudflare.com/__down?bytes=" # Cloudflare(最稳)
"https://cachefly.cachefly.net/" # CacheFly
"https://ipv4.download.thinkbroadband.com/" # ThinkBroadband
"https://ash-speed.hetzner.com/" # Hetzner 美国
"https://fsn1-speed.hetzner.com/" # Hetzner 德国
"https://hel1-speed.hetzner.com/" # Hetzner 芬兰
"https://proof.ovh.net/files/" # OVH
"http://212.183.159.230/" # Vodafone
"https://mirror.i3d.net/" # i3D
)
# iperf3 服务器
IPERF_SERVERS=("iperf.cloudflare.net" "iperf3.serverius.net" "ping.online.net")
# ==================== 下载函数(修复版) ====================
download_file() {
local url=$1
local speed_kb=$2
local ua=$(get_random_ua)
local is_curl=$((RANDOM % 2))
echo " → 使用 $([ $is_curl -eq 1 ] && echo curl || echo wget) | UA: ${ua:0:35}..."
if [ $is_curl -eq 1 ]; then
# curl 正确限速方式是 --limit-rate
curl -s -L --max-time 240 --limit-rate ${speed_kb}K \
--user-agent "${ua}" -o /dev/null "$url" && return 0 || return 1
else
wget -q -O /dev/null --timeout=240 --tries=2 --continue \
--limit-rate=${speed_kb}K --user-agent="${ua}" "$url" && return 0 || return 1
fi
}
while true; do
RANDOM_MB=$(shuf -i 25-110 -n 1)
echo "[$(date '+%H:%M:%S')] 计划下载 ≈ ${RANDOM_MB}MB"
# iperf3
RANDOM_SERVER=${IPERF_SERVERS[$RANDOM % ${#IPERF_SERVERS[@]}]}
iperf3 -c "$RANDOM_SERVER" -t 15 -P 1 >/dev/null 2>&1 || true
MAX_ATTEMPTS=3
ATTEMPT=1
SUCCESS=0
while [ $ATTEMPT -le $MAX_ATTEMPTS ] && [ $SUCCESS -eq 0 ]; do
IDX=$((RANDOM % ${#DOWNLOAD_URLS[@]}))
BASE_URL=${DOWNLOAD_URLS[$IDX]}
# ==================== 正确构造 URL ====================
case $BASE_URL in
*cloudflare.com*)
FULL_URL="${BASE_URL}$((RANDOM_MB * 1024 * 1024))" ;;
*cachefly*)
FULL_URL="${BASE_URL}100mb.test" ;;
*thinkbroadband*)
SIZE=$((RANDOM_MB > 60 ? 500 : 200))
FULL_URL="${BASE_URL}${SIZE}MB.zip" ;;
*hetzner.com*)
[ $RANDOM_MB -le 50 ] && FULL_URL="${BASE_URL}100MB.bin" || FULL_URL="${BASE_URL}1GB.bin" ;;
*ovh.net*)
FULL_URL="${BASE_URL}1Gb.dat" ;;
*212.183.159.230*)
FULL_URL="${BASE_URL}1GB.zip" ;;
*i3d.net*)
FULL_URL="${BASE_URL}1000mb.bin" ;;
*)
FULL_URL="${BASE_URL}100MB.test" ;;
esac
echo " → 第 $ATTEMPT 次尝试: $FULL_URL"
TARGET_SECONDS=$((RANDOM % 121 + 70))
SPEED_KB=$(( RANDOM_MB * 1024 / TARGET_SECONDS ))
[ $SPEED_KB -lt 450 ] && SPEED_KB=450
[ $SPEED_KB -gt 3500 ] && SPEED_KB=3500
if download_file "$FULL_URL" "$SPEED_KB"; then
echo " ✅ 下载成功"
SUCCESS=1
else
echo " ❌ 失败,尝试下一个目标..."
ATTEMPT=$((ATTEMPT + 1))
sleep 3
fi
done
# 偶尔并行冲量
if [ $SUCCESS -eq 1 ] && [ $((RANDOM % 3)) -eq 0 ]; then
echo " → 【并行冲刺】额外下载..."
download_file "$FULL_URL" $((SPEED_KB * 65 / 100)) &
sleep 5
fi
SLEEP_TIME=$((RANDOM % 50 + 30))
echo " → 等待 ${SLEEP_TIME} 秒..."
sleep $SLEEP_TIME
done
--
测试建议:先手动测试几个核心链接是否能下载:
bash
wget -O /dev/null --limit-rate=1M https://cachefly.cachefly.net/100mb.test
wget -O /dev/null --limit-rate=1M https://ash-speed.hetzner.com/100MB.bin
四、version 4
version 5的最后的测试核心链接:
bash
ubuntu@:~/$ wget -O /dev/null --limit-rate=1M https://cachefly.cachefly.net/100mb.test
--2026-05-09 08:51:47-- https://cachefly.cachefly.net/100mb.test
Resolving cachefly.cachefly.net (cachefly.cachefly.net)... 205.234.175.175
Connecting to cachefly.cachefly.net (cachefly.cachefly.net)|205.234.175.175|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: unspecified [text/html]
Saving to: '/dev/null'/dev/null [ <=> ] 25 --.-KB/s in 0s2026-05-09 08:51:47 (10.8 MB/s) - '/dev/null' saved [25]ubuntu@:~/$ wget -O /dev/null --limit-rate=1M https://ash-speed.hetzner.com/100MB.bin
--2026-05-09 08:51:59-- https://ash-speed.hetzner.com/100MB.bin
Resolving ash-speed.hetzner.com (ash-speed.hetzner.com)... 5.161.7.195, 2a01:4ff:ef::fa57:1
Connecting to ash-speed.hetzner.com (ash-speed.hetzner.com)|5.161.7.195|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 104857600 (100M) [application/octet-stream]
Saving to: '/dev/null'/dev/null 100%[===================================================================================>] 100.00M 1.01MB/s in 1m 40s2026-05-09 08:53:41 (1021 KB/s) - '/dev/null' saved [104857600/104857600]
定位问题:
cachefly.cachefly.net/100mb.test 在 HTTPS 下容易返回网页(25 字节),而不是二进制文件。
Hetzner 的链接是目前最稳定的。
v4.7 最终优化版(针对测试环境修复)
bash
#!/bin/bash
# Oracle E2.1 Micro 保活脚本 v4.7 - 稳定修复版(重点优化URL)
MODE=${1:-start}
if [ "$MODE" = "stop" ]; then
echo "🛑 停止保活进程..."
pkill -f "keepalive" 2>/dev/null
echo "✅ 已停止"
exit 0
fi
echo "🚀 启动 Oracle 保活进程 (v4.7 - 稳定优化版)"
echo "使用 ./oracle_oci_keepalive.sh stop 即可停止"
# ==================== 随机 User-Agent ====================
USER_AGENTS=(
"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/134.0.0.0 Safari/537.36"
"Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:135.0) Gecko/20100101 Firefox/135.0"
"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/133.0.0.0 Safari/537.36"
"Wget/1.21.4"
"curl/8.5.0"
)
get_random_ua() {
echo "${USER_AGENTS[$RANDOM % ${#USER_AGENTS[@]}]}"
}
# ==================== 稳定可靠的目标列表 ====================
DOWNLOAD_URLS=(
"https://speed.cloudflare.com/__down?bytes=" # 最推荐
"https://ash-speed.hetzner.com/" # 美国(已验证可用)
"https://fsn1-speed.hetzner.com/" # 德国
"https://hel1-speed.hetzner.com/" # 芬兰
"https://proof.ovh.net/files/" # OVH
"https://ipv4.download.thinkbroadband.com/" # ThinkBroadband
"http://cachefly.cachefly.net/" # 使用 HTTP 避免问题
"https://mirror.i3d.net/" # i3D
)
# iperf3 服务器
IPERF_SERVERS=("iperf.cloudflare.net" "iperf3.serverius.net" "ping.online.net")
# ==================== 下载函数 ====================
download_file() {
local url=$1
local speed_kb=$2
local ua=$(get_random_ua)
local use_curl=$((RANDOM % 2))
echo " → 使用 $([ $use_curl -eq 1 ] && echo curl || echo wget) 下载 | UA: ${ua:0:40}..."
if [ $use_curl -eq 1 ]; then
curl -s -L --max-time 240 --limit-rate ${speed_kb}K \
--user-agent "${ua}" -o /dev/null "$url" && return 0 || return 1
else
wget -q -O /dev/null --timeout=240 --tries=3 --continue \
--limit-rate=${speed_kb}K --user-agent="${ua}" "$url" && return 0 || return 1
fi
}
while true; do
RANDOM_MB=$(shuf -i 30-130 -n 1)
echo "[$(date '+%H:%M:%S')] 计划下载 ≈ ${RANDOM_MB}MB"
# iperf3
RANDOM_SERVER=${IPERF_SERVERS[$RANDOM % ${#IPERF_SERVERS[@]}]}
iperf3 -c "$RANDOM_SERVER" -t 15 -P 1 >/dev/null 2>&1 || true
MAX_ATTEMPTS=3
ATTEMPT=1
SUCCESS=0
while [ $ATTEMPT -le $MAX_ATTEMPTS ] && [ $SUCCESS -eq 0 ]; do
IDX=$((RANDOM % ${#DOWNLOAD_URLS[@]}))
BASE_URL=${DOWNLOAD_URLS[$IDX]}
# ==================== 精准构造 URL ====================
case $BASE_URL in
*cloudflare.com*)
FULL_URL="${BASE_URL}$((RANDOM_MB * 1024 * 1024))" ;;
*hetzner.com*)
[ $RANDOM_MB -le 60 ] && FULL_URL="${BASE_URL}100MB.bin" || FULL_URL="${BASE_URL}1GB.bin" ;;
*ovh.net*)
FULL_URL="${BASE_URL}1Gb.dat" ;;
*thinkbroadband*)
SIZE=$((RANDOM_MB > 70 ? 500 : 200))
FULL_URL="${BASE_URL}${SIZE}MB.zip" ;;
*cachefly*)
FULL_URL="${BASE_URL}100mb.test" ;;
*i3d.net*)
FULL_URL="${BASE_URL}1000mb.bin" ;;
*)
FULL_URL="${BASE_URL}100MB.test" ;;
esac
echo " → 第 $ATTEMPT 次尝试: $FULL_URL"
# 动态限速
TARGET_SECONDS=$((RANDOM % 131 + 65)) # 65~195 秒
SPEED_KB=$(( RANDOM_MB * 1024 / TARGET_SECONDS ))
[ $SPEED_KB -lt 500 ] && SPEED_KB=500
[ $SPEED_KB -gt 3800 ] && SPEED_KB=3800
if download_file "$FULL_URL" "$SPEED_KB"; then
echo " ✅ 下载成功"
SUCCESS=1
else
echo " ❌ 失败,换目标重试..."
ATTEMPT=$((ATTEMPT + 1))
sleep 3
fi
done
if [ $SUCCESS -eq 1 ] && [ $((RANDOM % 3)) -eq 0 ]; then
echo " → 【并行冲刺】额外启动下载..."
download_file "$FULL_URL" $((SPEED_KB * 60 / 100)) &
sleep 6
fi
SLEEP_TIME=$((RANDOM % 55 + 25))
echo " → 等待 ${SLEEP_TIME} 秒后继续..."
sleep $SLEEP_TIME
done
重点改动:
- CacheFly 改用
http:// - 优先使用 Hetzner + Cloudflare(测试过可用)
- 提高最低限速,减少过慢情况