From 44b972bc729e4e6395c0c69cef5b831b36642dea Mon Sep 17 00:00:00 2001 From: 3344 Date: Fri, 20 Feb 2026 14:18:31 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9B=B4=E6=96=B0=20de12=E7=B3=BB=E7=BB=9F?= =?UTF-8?q?=E4=BB=A3=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- de12系统代理 | 129 ++++++++++++++++++++++++++++----------------------- 1 file changed, 72 insertions(+), 57 deletions(-) diff --git a/de12系统代理 b/de12系统代理 index 639b32f..a736cda 100644 --- a/de12系统代理 +++ b/de12系统代理 @@ -1,6 +1,11 @@ -cat << 'EOF' > ultimate_proxy.sh #!/bin/bash +# ========================================== +# 全能自愈版·临时全局代理注入助手 (带 Docker 选择) +# 适用环境: Debian / Ubuntu 等 +# ========================================== + +# 颜色定义 RED='\033[31m' GREEN='\033[32m' YELLOW='\033[33m' @@ -8,29 +13,46 @@ BLUE='\033[34m' PLAIN='\033[0m' echo -e "${BLUE}=====================================================${PLAIN}" -echo -e "${BLUE} 终极自愈版·全局代理与 Docker 穿透助手 (含还原机制) ${PLAIN}" +echo -e "${BLUE} 全能自愈版·全局代理与 Docker 穿透助手 (含还原机制) ${PLAIN}" echo -e "${BLUE}=====================================================${PLAIN}" -PROXY_IP="45.192.240.121" -PROXY_PORT="21628" -PROXY_URL="socks5://${PROXY_IP}:${PROXY_PORT}" +# 默认代理节点配置 +DEFAULT_IP="45.192.240.121" +DEFAULT_PORT="21628" +DEFAULT_PROTO="socks5" -echo -e "\n${BLUE}[阶段 1] 依赖与环境自检...${PLAIN}" -if ! command -v proxychains4 &> /dev/null; then - echo -e "${YELLOW}缺少 proxychains4,尝试自动安装...${PLAIN}" - if ! apt-get install proxychains4 -y -qq >/dev/null 2>&1; then - echo -e "${RED}Apt 源可能损坏,自动切换 Debian 12 官方源修复...${PLAIN}" - sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak 2>/dev/null - sudo bash -c 'cat << SRC > /etc/apt/sources.list +read -p "请输入代理 IP [$DEFAULT_IP]: " PROXY_IP +PROXY_IP=${PROXY_IP:-$DEFAULT_IP} +read -p "请输入代理端口 [$DEFAULT_PORT]: " PROXY_PORT +PROXY_PORT=${PROXY_PORT:-$DEFAULT_PORT} + +PROXY_URL="${DEFAULT_PROTO}://${PROXY_IP}:${PROXY_PORT}" + +echo -e "\n${BLUE}[1/6] 检查并修复系统软件源...${PLAIN}" +if ! apt-get update -qq 2>/dev/null; then + echo -e "${YELLOW}检测到当前软件源失效,正在自动备份并替换为 Debian 12 官方公网源...${PLAIN}" + sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak 2>/dev/null + sudo bash -c 'cat << SRC > /etc/apt/sources.list deb http://deb.debian.org/debian bookworm main deb http://deb.debian.org/debian bookworm-updates main deb http://security.debian.org/debian-security bookworm-security main SRC' - sudo apt-get update -qq && sudo apt-get install proxychains4 curl -y -qq - fi + sudo apt-get update -qq + echo -e "${GREEN} -> 软件源修复完成!${PLAIN}" +else + echo -e "${GREEN} -> 软件源状态正常。${PLAIN}" fi -echo -e "${BLUE}[阶段 2] 注入终端环境变量...${PLAIN}" +echo -e "${BLUE}[2/6] 检查并安装必要依赖...${PLAIN}" +if ! command -v proxychains4 &> /dev/null || ! command -v curl &> /dev/null; then + echo -e "${YELLOW}正在自动安装 proxychains4 和 curl...${PLAIN}" + sudo apt-get install -y -qq proxychains4 curl >/dev/null 2>&1 + echo -e "${GREEN} -> 依赖安装完毕!${PLAIN}" +else + echo -e "${GREEN} -> 依赖已存在。${PLAIN}" +fi + +echo -e "${BLUE}[3/6] 注入底层环境变量与 Sudo 穿透...${PLAIN}" export http_proxy="${PROXY_URL}" export https_proxy="${PROXY_URL}" export all_proxy="${PROXY_URL}" @@ -39,73 +61,66 @@ export HTTPS_PROXY="${PROXY_URL}" export ALL_PROXY="${PROXY_URL}" export no_proxy="localhost,127.0.0.1,localaddress,.localdomain.com,.aliyuncs.com" alias sudo='sudo -E' +echo -e "${GREEN} -> 终端变量注入成功!${PLAIN}" -# 测试终端变量 -TEST_1=$(curl -L --max-time 5 -s ip.gs) -if [ "$TEST_1" == "$PROXY_IP" ]; then - echo -e "${GREEN} -> 终端环境变量注入成功!${PLAIN}" -else - echo -e "${RED} -> 终端环境变量测试失败,请检查代理节点状态。${PLAIN}" -fi - -echo -e "${BLUE}[阶段 3] 部署 Proxychains (修复 Error 52 DNS问题)...${PLAIN}" +echo -e "${BLUE}[4/6] 部署临时强制代理 (修复 Error 52)...${PLAIN}" TEMP_PC_CONF="/tmp/ultimate_pc.conf" -# 核心修复:移除 proxy_dns,防止不支持 UDP 的节点断连报错 cat << CONF > $TEMP_PC_CONF strict_chain remote_dns_subnet 224 tcp_read_time_out 15000 tcp_connect_time_out 8000 [ProxyList] -socks5 $PROXY_IP $PROXY_PORT +$DEFAULT_PROTO $PROXY_IP $PROXY_PORT CONF alias pc="proxychains4 -q -f $TEMP_PC_CONF" +echo -e "${GREEN} -> pc 强制代理工具就绪!${PLAIN}" -# 测试 Proxychains -TEST_2=$(pc curl -L --max-time 5 -s ip.gs 2>/dev/null) -if [ "$TEST_2" == "$PROXY_IP" ]; then - echo -e "${GREEN} -> 强制劫持工具 (pc) 部署成功,Error 52 已解决!${PLAIN}" -else - echo -e "${YELLOW} -> pc 测试失败,但如果阶段 2 成功,普通命令仍可用。${PLAIN}" -fi - -echo -e "${BLUE}[阶段 4] 突破 Docker 守护进程隔离...${PLAIN}" +echo -e "${BLUE}[5/6] 突破 Docker 守护进程隔离 (交互)...${PLAIN}" if command -v docker &> /dev/null; then - mkdir -p /etc/systemd/system/docker.service.d - # 为 Docker 后台服务单独注入代理 - cat << DOCKER_CONF > /etc/systemd/system/docker.service.d/http-proxy.conf + echo -e "${YELLOW}检测到系统已安装 Docker。${PLAIN}" + read -p "是否为 Docker 守护进程添加代理?(解决拉取镜像超时问题) [y/n, 默认: y]: " ADD_DOCKER + ADD_DOCKER=${ADD_DOCKER:-y} + + if [[ "$ADD_DOCKER" =~ ^[Yy]$ ]]; then + echo -e "${YELLOW}正在配置并重启 Docker...${PLAIN}" + sudo mkdir -p /etc/systemd/system/docker.service.d + sudo bash -c "cat << DOCKER_CONF > /etc/systemd/system/docker.service.d/http-proxy.conf [Service] -Environment="HTTP_PROXY=${PROXY_URL}" -Environment="HTTPS_PROXY=${PROXY_URL}" -Environment="NO_PROXY=localhost,127.0.0.1,.aliyuncs.com" -DOCKER_CONF - systemctl daemon-reload - systemctl restart docker - echo -e "${GREEN} -> Docker 代理已挂载并重启完毕!${PLAIN}" +Environment=\"HTTP_PROXY=${PROXY_URL}\" +Environment=\"HTTPS_PROXY=${PROXY_URL}\" +Environment=\"NO_PROXY=localhost,127.0.0.1,.aliyuncs.com\" +DOCKER_CONF" + sudo systemctl daemon-reload + sudo systemctl restart docker + echo -e "${GREEN} -> Docker 代理已挂载并重启完毕!${PLAIN}" + else + echo -e "${GREEN} -> 已跳过 Docker 代理配置。${PLAIN}" + fi else echo -e "${YELLOW} -> 未检测到 Docker,跳过此步骤。${PLAIN}" fi -echo -e "\n${BLUE}[阶段 5] 生成一键清场工具...${PLAIN}" -# 定义清理函数,满足你“不想终身全局”的需求 +echo -e "${BLUE}[6/6] 生成一键清场工具...${PLAIN}" +# 将 proxy_clean 声明为函数留在内存里 proxy_clean() { echo -e "${YELLOW}正在清除所有代理痕迹...${PLAIN}" - unset http_proxy https_proxy all_proxy HTTP_PROXY HTTPS_PROXY ALL_PROXY + unset http_proxy https_proxy all_proxy HTTP_PROXY HTTPS_PROXY ALL_PROXY no_proxy unalias sudo pc 2>/dev/null rm -f /tmp/ultimate_pc.conf if [ -f /etc/systemd/system/docker.service.d/http-proxy.conf ]; then - rm -f /etc/systemd/system/docker.service.d/http-proxy.conf - systemctl daemon-reload - systemctl restart docker + sudo rm -f /etc/systemd/system/docker.service.d/http-proxy.conf + sudo systemctl daemon-reload + sudo systemctl restart docker + echo -e "${GREEN} -> Docker 代理已卸载并重启服务。${PLAIN}" fi - echo -e "${GREEN}清理完毕!系统已恢复直连状态。${PLAIN}" + echo -e "${GREEN}清理完毕!系统已彻底恢复直连状态。${PLAIN}" } echo -e "${GREEN} -> 已生成 'proxy_clean' 命令。${PLAIN}" echo -e "\n${GREEN}=====================================================${PLAIN}" echo -e "${GREEN} 所有网络魔法已就绪!${PLAIN}" -echo -e " 1. 你现在可以直接运行 ${YELLOW}docker compose up -d${PLAIN} 拉取镜像了。" -echo -e " 2. 遇到不听话的脚本,命令前加 ${YELLOW}pc${PLAIN} (如 pc wget ...)。" -echo -e " 3. 用完之后,想恢复原状,只需输入: ${RED}proxy_clean${PLAIN}" -echo -e "${GREEN}=====================================================${PLAIN}" -EOF \ No newline at end of file +echo -e " 1. 终端环境已全面代理 (curl, wget 畅通无阻)。" +echo -e " 2. 遇到不听话的顽固脚本,命令前加 ${YELLOW}pc${PLAIN} (如: pc ./install.sh)。" +echo -e " 3. 完事后想恢复原状,只需输入命令: ${RED}proxy_clean${PLAIN}" +echo -e "${GREEN}=====================================================${PLAIN}" \ No newline at end of file