diff --git a/de12系统代理 b/de12系统代理 index 983878c..89d9aff 100644 --- a/de12系统代理 +++ b/de12系统代理 @@ -1,7 +1,7 @@ -cat << 'EOF' > set_proxy.sh +cat << 'EOF' > super_proxy.sh #!/bin/bash -# 定义颜色 +# 颜色定义 RED='\033[31m' GREEN='\033[32m' YELLOW='\033[33m' @@ -9,79 +9,75 @@ BLUE='\033[34m' PLAIN='\033[0m' echo -e "${BLUE}=======================================${PLAIN}" -echo -e "${BLUE} 终端临时代理环境配置助手 ${PLAIN}" +echo -e "${BLUE} 全能版·临时全局代理注入助手 ${PLAIN}" echo -e "${BLUE}=======================================${PLAIN}" -echo -e "${YELLOW}提示: 此代理仅在当前窗口生效,断开连接或重启后自动失效。${PLAIN}\n" +echo -e "${YELLOW}特性: 环境变量注入 + Sudo穿透 + 强制代理(Proxychains)${PLAIN}" +echo -e "${YELLOW}寿命: 仅限当前窗口,关闭窗口或重启系统后【彻底失效】${PLAIN}\n" -echo "请选择代理模式:" -echo "1) 使用默认代理 (45.192.240.121:21628)" -echo "2) 手动输入自定义代理 (IP 和 端口)" -echo "3) 清除当前代理 (恢复直连)" -read -p "请输入选项 [1-3]: " opt +# 默认代理节点 (你可以直接敲回车使用默认值) +DEFAULT_IP="45.192.240.121" +DEFAULT_PORT="21628" +DEFAULT_PROTO="socks5" -case $opt in - 1) - PROXY_IP="45.192.240.121" - PROXY_PORT="21628" - ;; - 2) - read -p "请输入代理 IP: " PROXY_IP - read -p "请输入代理端口: " PROXY_PORT - ;; - 3) - unset http_proxy https_proxy all_proxy HTTP_PROXY HTTPS_PROXY ALL_PROXY - echo -e "\n${GREEN}[成功] 已清除所有代理设置,恢复直连网络。${PLAIN}" - curl -L --max-time 5 -s ip.gs - return 0 2>/dev/null || exit 0 - ;; - *) - echo -e "${RED}[错误] 输入无效,已退出。${PLAIN}" - return 1 2>/dev/null || exit 1 - ;; -esac +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} -echo -e "\n${BLUE}[状态]${PLAIN} 正在测试代理连通性并适配协议..." +PROXY_URL="${DEFAULT_PROTO}://${PROXY_IP}:${PROXY_PORT}" -# 防失败措施 1:定义测试函数,设置 5 秒超时防卡死 -test_proxy() { - local protocol=$1 - export http_proxy="${protocol}://${PROXY_IP}:${PROXY_PORT}" - export https_proxy="${protocol}://${PROXY_IP}:${PROXY_PORT}" - export all_proxy="${protocol}://${PROXY_IP}:${PROXY_PORT}" - - # 尝试获取当前外网 IP - TEST_IP=$(curl -x "${protocol}://${PROXY_IP}:${PROXY_PORT}" -L --max-time 5 -s ip.gs) - - if [ -n "$TEST_IP" ]; then - return 0 - else - return 1 - fi -} +echo -e "\n${BLUE}[1/4] 注入全套环境变量...${PLAIN}" +export http_proxy="${PROXY_URL}" +export https_proxy="${PROXY_URL}" +export all_proxy="${PROXY_URL}" +export HTTP_PROXY="${PROXY_URL}" +export HTTPS_PROXY="${PROXY_URL}" +export ALL_PROXY="${PROXY_URL}" -# 防失败措施 2:协议自动降级 (Socks5 -> HTTP) -if test_proxy "socks5"; then - echo -e "${GREEN}[成功]${PLAIN} Socks5 协议连接成功!" -elif test_proxy "http"; then - echo -e "${YELLOW}[警告]${PLAIN} Socks5 协议测试失败 (系统工具老旧或代理限制),已自动降级为 HTTP 协议并连接成功!" -else - echo -e "${RED}[失败]${PLAIN} 代理无法连接!请检查代理服务器状态、IP白名单或目标端口。" - # 还原代理设置,防止污染当前环境 - unset http_proxy https_proxy all_proxy - return 1 2>/dev/null || exit 1 +echo -e "${BLUE}[2/4] 配置 Sudo 环境穿透...${PLAIN}" +# 让 sudo 命令自动带上 -E 参数,继承当前的环境变量 +alias sudo='sudo -E' + +echo -e "${BLUE}[3/4] 部署临时强制代理 (Proxychains)...${PLAIN}" +# 检查并静默安装 proxychains4 (软件本身会安装,但配置是临时的) +if ! command -v proxychains4 &> /dev/null; then + echo -e "${YELLOW}检测到缺少 proxychains4 组件,正在通过包管理器临时安装...${PLAIN}" + sudo apt-get update -qq && sudo apt-get install proxychains4 -y -qq fi -# 防失败措施 3:兼容大写环境变量 (某些老旧脚本只识别大写) -export HTTP_PROXY=$http_proxy -export HTTPS_PROXY=$https_proxy -export ALL_PROXY=$all_proxy +# 在 /tmp 生成临时配置文件 (系统重启后 /tmp 会被自动清空,不留痕迹) +TEMP_PC_CONF="/tmp/temp_proxychains_$$.conf" +cat << CONF > $TEMP_PC_CONF +strict_chain +proxy_dns +remote_dns_subnet 224 +tcp_read_time_out 15000 +tcp_connect_time_out 8000 +[ProxyList] +$DEFAULT_PROTO $PROXY_IP $PROXY_PORT +CONF -echo -e "\n${BLUE}=======================================${PLAIN}" -echo -e "${GREEN}网络已打通!代理环境配置完毕。${PLAIN}" -echo -e "当前出口 IP 识别为: ${YELLOW}${TEST_IP}${PLAIN}" -echo -e "你现在可以继续运行你的重装脚本或其他下载命令了。" -echo -e "${BLUE}=======================================${PLAIN}\n" +# 创建快捷别名 'pc',调用临时配置文件 +alias pc="proxychains4 -q -f $TEMP_PC_CONF" -EOF +echo -e "${BLUE}[4/4] 验证出口网络...${PLAIN}" +# 优先使用强制代理测试连通性 +TEST_IP=$(pc curl -L --max-time 5 -s ip.gs) -chmod +x set_proxy.sh \ No newline at end of file +if [ -n "$TEST_IP" ]; then + echo -e "\n${GREEN}=======================================${PLAIN}" + echo -e "${GREEN}网络已全面打通!当前出口 IP: ${YELLOW}${TEST_IP}${PLAIN}" + echo -e "${GREEN}=======================================${PLAIN}" + echo -e "【使用秘籍】:" + echo -e "1. ${YELLOW}听话的程序${PLAIN}: 直接运行 (如 wget, curl),环境变量已生效。" + echo -e "2. ${YELLOW}需提权操作${PLAIN}: 直接用 sudo (已配置穿透,不掉代理)。" + echo -e "3. ${YELLOW}不听话的程序${PLAIN}: 命令前加 ${GREEN}pc${PLAIN} (例如: ${GREEN}pc apt update${PLAIN} 或 ${GREEN}pc ./install.sh${PLAIN})。" + echo -e "4. ${YELLOW}绝对领域${PLAIN}: 运行 ${GREEN}pc bash${PLAIN} ,将开启一个被死死按在代理里的子终端。" + echo -e "\n${RED}[提示] 退出当前窗口、敲击 exit,或重启机器,以上所有魔法自动消失。${PLAIN}" +else + echo -e "\n${RED}[失败] 代理节点无法连接,请检查 IP、端口或防火墙状态!${PLAIN}" + unset http_proxy https_proxy all_proxy HTTP_PROXY HTTPS_PROXY ALL_PROXY + unalias sudo pc 2>/dev/null + rm -f $TEMP_PC_CONF +fi +EOF \ No newline at end of file