#分享#GitHub Actions全自动无头抢甲骨文 2C12G (附完整源码)

以下为转载
最近看到很多人抱怨甲骨文注册太玄学,各种干净节点、外币卡都过不了。今天分享一个亲测极度高触发的“反常理”下号流,全程纯国内环境,用新注册的QQ邮箱秒下凤凰城!

一、注册需要注意的核心(划重点)

中国大陆用户专属申请入口:https://www.oracle.com/cn/cloud/free/
用苹果手机,不开梯子,不用wifi,全程使用5G(4G)移动流量注册。
使用国内邮箱:QQ邮箱或163邮箱(我用的刚注册的新qq邮箱)
这里解释下为什么要使用国内邮箱:
因为本来手机使用的本地移动网络,可提前登录国内邮箱做接收验证的准备。
如果用谷歌邮箱则势必导致你要切换网络,而这样的操作会被Oracle识别到,为你的注册失败埋下伏笔。
核心目的:确保IP地址与注册地区绝对一致!
名字和姓氏必须全英文大写,比如:名字:SAN,姓氏:ZHANG,备用姓名:Zhangsan。
主区域我选择的是:US West(Phoenix),这个大家根据自己的需要选择。但你要知道:这个选择决定你后面抢机子的难易程度!美西比美东距离我们更近,所以要有心理准备。
银行卡的选择:国内招行全币种visa或MasterCard。
地址:wenhualu 88hao(注意:88前有英文空格);城市:Jinan;省:Shandong;邮编、电话号码如实填写。
备注:以上资料要和申请信用卡时填写的资料相同(中文变拼音)

二、登录后第一眼

两个升级按钮我劝你千万别点!网传Oracle降配是真的,4核心 OCPU,24GB内存,4Gbps网络带宽已成历史。

三、创建实例与“当头一棒”

下号后去开机器:更改映像选择:Ubuntu -版本选择:Canonical Ubuntu 24.04 -选择映像-更改配置-CPU修改为4(现在2),内存修改为24(现在12) -选择配置-下一步-下一步-勾选“创建新的虚拟云网络”-鼠标下拉点击“下载私有密钥”-下一步-打开“指定定制的引导卷大小和性能设置”下的开关-将引导卷大小改为:120GB-创建

但是!通常这个时候系统会给你泼一盆冷水:显示配置不足(Out of capacity)。
你切换到AD2/AD3试试,大概率还是配置不足。

配置不足怎么办?告别本地傻瓜式挂机!
千万别用自己的电脑开着网页跑脚本抢机器了,费电还不安全。我整理了一套纯云端运行、利用 GitHub Actions 全自动零成本抢机的方案。所有密钥绝对安全防封,一经部署,完全解放双手。

四、纯云端抢机配置步骤

新建仓库: 在自己的 GitHub 账号下创建一个新的私有仓库 (Private Repository)。
配置安全环境变量 (Secrets): 进入仓库的 Settings → Secrets and variables → Actions,点击 New repository secret,严格按照代码里的变量名,逐一添加以下 7 个凭证:
TENANCY_OCID (Oracle 租户 ID)
USER_OCID (Oracle 用户 ID)
REGION (服务器所在区域,例如 us-phoenix-1)
FINGERPRINT (Oracle API 密钥指纹)
PRIVATE_KEY (Oracle API 私钥的完整文本)
SUBNET_ID (目标虚拟云网络中的子网 ID)
USER_SSH_PUB_KEY (自己电脑的SSH公钥,必须配置正确,否则抢到机器也无法通过 SSH 登录)
部署代码: 在仓库根目录下创建 .github/workflows/ 文件夹,新建一个 .yml 文件(例如 sniper.yml),将下边的代码完整粘贴进去并提交。
触发运行: 代码中配置了 workflow_dispatch,可以直接到 GitHub 的 Actions 面板中,手动点击 Run workflow 来启动脚本;同时代码也配置了 cron,会自动每 15 分钟在后台尝试一次,45分钟超时自动安全退出,极致防封。
注:脚本默认抢的是 Ubuntu 24.04。如果想安装其他系统,修改代码第 40 行的查询条件即可。

五、完整 GitHub Actions 源码

name: Oracle ARM Instance Sniper Template
on:
  workflow_dispatch:
  schedule:
    - cron: '*/15 * * * *'

jobs:
  sniper:
    name: ARM Instance Sniper
    runs-on: ubuntu-latest
    timeout-minutes: 60
    concurrency:
      group: ${{ github.workflow }}
      cancel-in-progress: false

    env:
      OCI_TENANCY: ${{ secrets.TENANCY_OCID }}
      OCI_REGION: ${{ secrets.REGION }}
      SUBNET_ID: ${{ secrets.SUBNET_ID }}
      SSH_PUB_KEY: ${{ secrets.USER_SSH_PUB_KEY }}

    steps:
      - name: Install OCI CLI
        run: |
          curl -L -O [https://raw.githubusercontent.com/oracle/oci-cli/master/scripts/install/install.sh](https://raw.githubusercontent.com/oracle/oci-cli/master/scripts/install/install.sh)
          chmod +x install.sh
          ./install.sh --accept-all-defaults
          echo "/home/runner/bin" >> $GITHUB_PATH

      - name: Setup OCI Config
        env:
          OCI_USER: ${{ secrets.USER_OCID }}
          OCI_FP: ${{ secrets.FINGERPRINT }}
          OCI_PRIVATE_KEY: ${{ secrets.PRIVATE_KEY }}
        run: |
          mkdir -p ~/.oci
          cat > ~/.oci/config <<EOF
          [DEFAULT]
          user=${OCI_USER}
          fingerprint=${OCI_FP}
          tenancy=${OCI_TENANCY}
          region=${OCI_REGION}
          key_file=~/.oci/key.pem
          EOF
          echo "${OCI_PRIVATE_KEY}" > ~/.oci/key.pem
          chmod 600 ~/.oci/key.pem ~/.oci/config

      - name: Fixed-Key Sentry Loop
        run: |
          export OCI_CLI_SUPPRESS_FILE_PERMISSIONS_WARNING=True
          START_TIME=$(date +%s)
          
          mkdir -p ~/.ssh
          echo "${SSH_PUB_KEY}" > ~/.ssh/id_rsa_oracle.pub
          
          AD_LIST=$(oci iam availability-domain list --compartment-id "${OCI_TENANCY}" --query "data[*].name" --raw-output | jq -r '.[]' | sort)
          IMAGE_ID=$(oci compute image list --compartment-id "${OCI_TENANCY}" --operating-system "Canonical Ubuntu" --operating-system-version "24.04" --shape "VM.Standard.A1.Flex" --query 'data[0].id' --raw-output)
          
          echo "=== Oracle ARM Sniper Template V1.0 ==="
          echo "[AD] Target ADs: $(echo $AD_LIST | tr '\n' ' ')"
          echo "[IMG] Target Image: ${IMAGE_ID}"
          
          while true; do
            CURRENT_TIME=$(date +%s)
            ELAPSED=$(( CURRENT_TIME - START_TIME ))
            
            if [ $ELAPSED -gt 2700 ]; then
              echo "[TIMEOUT] Reached 45m limit. Exiting safely."
              exit 0
            fi

            for ad in $AD_LIST; do
              echo "[TRY] $ad | Elapsed: ${ELAPSED}s"
              
              if oci compute instance launch \
                --availability-domain "$ad" \
                --compartment-id "${OCI_TENANCY}" \
                --shape "VM.Standard.A1.Flex" \
                --shape-config '{"ocpus":4,"memoryInGBs":24}' \
                --image-id "$IMAGE_ID" \
                --subnet-id "${SUBNET_ID}" \
                --ssh-authorized-keys-file ~/.ssh/id_rsa_oracle.pub \
                --assign-public-ip true \
                --display-name "SNIPER-$(date +%m%d_%H%M)" \
                --wait-for-state RUNNING --max-wait-seconds 1 \
                >/dev/null 2>/dev/null; then
                
                echo "[SUCCESS] ARM 4C24G instance created in $ad"
                exit 0
              else
                echo "$ad: No stock"
              fi
              
              sleep 5
            done
            sleep 30
          done

六、祝大家早日用上免费的 2核 12G 神机!

转载请注明:开心VPS测评 » #分享#GitHub Actions全自动无头抢甲骨文 2C12G (附完整源码)

赞 (0)