Files
GoProxy/test/test_http_https.sh
isboyjc dfe71d0390 feat: add CLAUDE.md for project guidance and enhance HTTP proxy validation
- Introduced CLAUDE.md to provide comprehensive guidance for the GoProxy project.
- Enhanced proxy validation logic to include HTTPS CONNECT tunnel verification for HTTP proxies.
- Updated README to reflect new features, including the addition of an HTTP proxy HTTPS access testing script.
- Adjusted configuration parameters to set the default HTTP protocol ratio to 30%.
2026-04-01 05:10:46 +08:00

82 lines
2.1 KiB
Bash
Executable File
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
#!/bin/bash
# GoProxy HTTP 协议代理 HTTPS 访问测试脚本
# 随机访问多个 HTTPS 网站,验证 HTTP 代理的 CONNECT 隧道能力
# 用法: ./test_http_https.sh [端口号默认7777] [测试次数,默认持续运行]
# 按 Ctrl+C 停止测试
PROXY_HOST="127.0.0.1"
PROXY_PORT="${1:-7777}"
MAX_COUNT="${2:-0}" # 0 = 持续运行
DELAY=2
# 测试目标HTTPS 网站)
TARGETS=(
"https://www.google.com"
"https://www.openai.com"
"https://www.github.com"
"https://www.cloudflare.com"
"https://httpbin.org/ip"
)
# 统计变量
total=0
success=0
fail=0
# 获取毫秒时间戳
get_ms_time() {
python3 -c 'import time; print(int(time.time() * 1000))'
}
# 捕获 Ctrl+C 信号
trap ctrl_c INT
function ctrl_c() {
echo ""
echo "---"
if [ $total -gt 0 ]; then
loss_rate=$(awk "BEGIN {printf \"%.1f\", ($total - $success)/$total*100}")
success_rate=$(awk "BEGIN {printf \"%.1f\", $success/$total*100}")
echo "$total requests transmitted, $success succeeded, $fail failed, ${loss_rate}% loss, ${success_rate}% success rate"
fi
exit 0
}
echo "HTTP PROXY HTTPS TEST — $PROXY_HOST:$PROXY_PORT"
echo "targets: ${#TARGETS[@]} HTTPS sites"
echo ""
while true; do
# 随机选择目标
idx=$((RANDOM % ${#TARGETS[@]}))
target="${TARGETS[$idx]}"
total=$((total + 1))
start_time=$(get_ms_time)
response=$(curl -x "http://${PROXY_HOST}:${PROXY_PORT}" \
-s -k \
-o /dev/null \
-w "%{http_code}" \
--connect-timeout 10 \
--max-time 15 \
"${target}" 2>&1)
end_time=$(get_ms_time)
elapsed=$((end_time - start_time))
if [[ "$response" =~ ^[23] ]]; then
echo "✅ seq=$total ${target} -> HTTP $response time=${elapsed}ms"
success=$((success + 1))
else
echo "❌ seq=$total ${target} -> HTTP $response time=${elapsed}ms"
fail=$((fail + 1))
fi
# 达到指定次数则停止
if [ "$MAX_COUNT" -gt 0 ] && [ "$total" -ge "$MAX_COUNT" ]; then
ctrl_c
fi
sleep $DELAY
done