编写BASH脚本每月自动下载最新Signal APK的问题求助
编写Bash脚本自动下载最新Signal APK
问题说明
需要每月通过cron自动从Signal官网下载最新APK,但直接用wget/curl命令无法成功获取文件——因为下载链接是通过页面中Download按钮的onclick事件动态指定的,直接爬取首页无法拿到APK文件本身。
解决方法
先抓取官网页面内容,解析出Download按钮里的APK下载链接,再基于这个链接完成下载。
完整脚本实现
#!/bin/bash # 自定义APK保存目录,可按需修改 APK_SAVE_DIR="$HOME/Downloads/Signal_APKs" mkdir -p "$APK_SAVE_DIR" # 抓取页面并提取最新APK的下载链接 LATEST_APK_URL=$(curl -s https://signal.org/android/apk/ | grep -o "https://updates.signal.org/android/Signal-Android-website-prod-universal-release-[0-9.]*\.apk") # 检查是否成功获取链接 if [ -z "$LATEST_APK_URL" ]; then echo "无法获取最新Signal APK的下载链接" exit 1 fi # 提取APK文件名 APK_FILE_NAME=$(basename "$LATEST_APK_URL") # 检查文件是否已存在,避免重复下载 if [ -f "$APK_SAVE_DIR/$APK_FILE_NAME" ]; then echo "最新版本APK已存在,无需重复下载" exit 0 fi # 执行下载操作 curl -L -o "$APK_SAVE_DIR/$APK_FILE_NAME" "$LATEST_APK_URL" # 验证下载结果 if [ $? -eq 0 ]; then echo "Signal APK已成功保存至: $APK_SAVE_DIR/$APK_FILE_NAME" else echo "Signal APK下载失败" exit 1 fi
cron配置(每月自动执行)
- 编辑crontab任务列表:
crontab -e
- 添加以下内容(每月1号凌晨2点执行,需替换脚本的实际路径):
0 2 1 * * /home/your_username/scripts/signal-apk-auto-download.sh >> /var/log/signal-apk-download.log 2>&1
脚本说明
- 自动创建APK保存目录,避免因目录不存在导致下载失败
- 先检查目标版本是否已存在,减少无效下载
- 加入下载结果校验,方便排查问题
- cron配置添加了日志输出,可通过日志文件查看任务执行情况
内容的提问来源于stack exchange,提问作者Antonis_3345
相关产品推荐
相关产品推荐

