Oracle的always free账户,提高网络使用率的保活脚本

八、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...

下载全部失败的主要原因是:

  1. URL 构造错误 (最严重):很多站点后面直接拼 100MB.test 并不存在正确文件。
  2. curl 限速参数错误--speed-limit 用错了,导致 curl 行为异常。
  3. 部分镜像站被 Oracle 区域限制(尤其是中国镜像)。
  4. 显示小 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.testHTTPS 下容易返回网页(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(测试过可用)
  • 提高最低限速,减少过慢情况
相关推荐
Irene19911 小时前
Oracle 数字区间、日期边界问题分类总结(日期运算、日期比较大小)
oracle·数字区间
一渊之隔1 小时前
uniapp蓝牙搜索连接展示蓝牙设备包含信号显示
前端·网络·uni-app·bluetooth
xhbh6661 小时前
TCP端口转发不生效?IP转发、防火墙、SELinux排查手册
服务器·ip·端口流量转发·路由端口转发·ip隐藏·tcp 端口转发
xhbh6662 小时前
Windows网络转发如何配置?netsh命令完整指南
服务器·网络·windows·ip·端口流量转发·路由端口转发·ip隐藏
量子炒饭大师2 小时前
【Linux系统编程】Cyberpunk在霓虹丛林中构建堡垒 ——【关于shell命令及其运行原理】
linux·运维·服务器·shell
IT大白鼠2 小时前
主流Linux文件系统稳定性及性能分析
linux·运维·服务器·文件系统
瀚高PG实验室2 小时前
debezium在LANG=zh_CN.UTF-8下,无法解析timestamp类型的列值为BC的字段
服务器·数据库·postgresql·瀚高数据库
志栋智能2 小时前
超自动化巡检:敏捷运维体系中的重要一环
运维·服务器·网络·云原生·容器·kubernetes·自动化
小杰3122 小时前
网络框架源码阅读技巧
服务器·网络·c++·reactor·zlmediakit·zltoolkit