返回列表 发布新帖
查看: 1895|回复: 21

谷歌IDX免费云电脑

发表于 2025-4-19 11:04:24 | 查看全部 |阅读模式

欢迎注册账号,享受无广告更清爽的界面!

您需要 登录 才可以下载或查看,没有账号?注册

×
前置使用条件:一个谷歌账号,能正常通过浏览器访问谷歌的环境
地址:https://idx.google.com/
选择A图标创建项目

586e4e6a-02c4-4f97-97f5-726cc079c382.png


随便取一个名字
d44963db-4aee-4d77-b927-a2d9e821340f.png
按图所示选择
e96fb404-e2f3-49e1-b468-d78412ae653d.png
稍等一会会自动跳转到VNC链接界面
b640cf11-5dc9-4049-8140-acea045dbe72.png
成功登录之后关闭对话框
cf5d7b1d-10b6-48d9-b09a-4f6da973f827.png
白色框框点一下
bbdf710b-e414-4954-8696-67b49dc73a4e.png
出现菜单
c7a8e740-324d-440f-bc16-f5809bb87313.png
接下来的界面其实就是ubuntu的系统菜单
为了让小白更简单的使用这个系统所以我还是写出更改为中文的教程
在这里我们选择语言
1ba20254-a652-46e2-8853-4cc52212d648.png
首次进入会要求更新
7e638cd4-b45c-4f72-8dc9-9052fd198de7.png
需要账户授权
33b85b0e-7886-4151-8368-c9e79367e360.png
选择添加或删除语言菜单
cc2dbcb6-96dd-483d-93f6-b62c7b8f0a00.png
调出下载语言框往下拖找到中文并勾选
ae08c824-a21a-4db9-a44c-453e319dae70.png
要求用户授权

更新完成
后将中文语言拖到英文前面选择应用到整个系统保存并确认
dae8e382-ff97-4d2f-9277-def07f049192.png
选择关机按钮
db2cd99d-5c01-4cc1-9357-82cab58682bd.png
注销用户等几十秒重新链接
选择这里重新调出菜单就可以看到正常的中文了

经过网页测试https://fast.com/zh/cn/  速率1.8G网速
经过网页测试https://www.speedtest.net/zh-Hans
F1535B874C5DBE9063F14CAECD697DAB.png
油管表现

CB6A256179E77C86C312B1726D3F9235.png
也可以通过命令安装谷歌输入法
进入菜单调出终端
sudo -i
apt-get install fcitx-googlepinyin -y 或者sudo apt-get install fcitx-googlepinyin -y
轻量使用没啥问题

需要美国原生IP的倒是可以考虑一下
9aa0280a-7e7a-45fa-b731-ad40c4c2e22b.png
虽然上面显示的是原生IP但是带有IDC属性对于环境及其严格的建议套上前置代理去注册账号
1148e743-4f9e-4f88-92b5-c8d801ebb29a.png
爱生活,爱奶昔~
发表于 2025-4-20 20:10:16 | 查看全部
这个云主机每隔1到两个小时会断开一次,但是不会删除我们的数据,只需重新登录一次,依旧可以使用。
打开终端
  1. sudo -i
  2. bash <(curl -Ls https://main.ssss.nyc.mn/argox.sh)
复制代码

一长串内容复制到VPN软件中即可正常使用,3个节点,如果是-1说明vnc连接有问题,我是重新开了一个
爱生活,爱奶昔~
回复 支持 2 反对 0

使用道具 举报

发表于 2025-4-26 19:33:20 | 查看全部
免费16核60GB内存Windows虚拟机?谷歌的 Firebase Studio(4.26 不会重置/home)
https://firebase.studio/
进去选择 Android Studio,会分配一个豪华配置虚拟机,如楼主所示。

分享下我的经验
把 Android Studio 关闭,换个壁纸,熟悉的背影:Ubuntu 24.04。没错,就是它!
  1. user$: sudo apt update && sudo apt install cpu-checker && kvm-ok
  2. INFO: /dev/kvm exists
  3. KVM acceleration can be used
复制代码

可见,这个虚拟机的CPU有虚拟化功能flag且未被谷歌关闭,而且还有 root 无密码。输入
  1. sudo xxx
复制代码
可以执行 root 命令,甚至
  1. sudo -i
复制代码
提权。所以我们就可以运行任意操作系统。比如Windows。
接下来就不说了,qemu+frp+rdp嘛。

注意事项
uptime时间显示24小时10分钟左右吧,用脚本合理设置可以运行1天左右时间
更新一个定时刷新脚本,打开浏览器,自己设置15分钟左右时间刷新一下脚本,可以运行约一天
  1. // ==UserScript==
  2. // [url=home.php?mod=space&uid=4014]@name[/url]         持续定时刷新器 (Continuous Timer Refresher)
  3. // @namespace    http://tampermonkey.net/
  4. // @version      2.0
  5. // @description  在指定时间间隔后持续自动刷新页面,直到手动停止。状态跨页面保持。
  6. // @author       Gemini
  7. // @match        *://*/*
  8. // @grant        GM_setValue
  9. // @grant        GM_getValue
  10. // @grant        GM_addStyle
  11. // @run-at       document-idle
  12. // ==/UserScript==

  13. (function() {
  14.     'use strict';

  15.     // --- 配置项 ---
  16.     const DEFAULT_INTERVAL_SECONDS = 60; // 默认刷新间隔(秒)
  17.     const STORAGE_KEY_INTERVAL = 'continuousRefresherInterval'; // 存储间隔时间的键名
  18.     const STORAGE_KEY_NEXT_RUN = 'continuousRefresherNextRun'; // 存储下一次运行时间戳的键名

  19.     // --- 状态变量 ---
  20.     let refreshTimerId = null;      // 存储刷新定时器的ID
  21.     let countdownTimerId = null;  // 存储倒计时更新定时器的ID
  22.     let isRunning = false;        // 标记当前页面脚本是否已启动计时器 (瞬时状态)
  23.     let nextRunTimestamp = 0;     // 下次运行的目标时间戳

  24.     // --- 创建用户界面 (UI) ---
  25.     const panel = document.createElement('div');
  26.     panel.id = 'continuous-refresher-panel';

  27.     panel.innerHTML = `
  28.         <div class="refresher-title">持续定时刷新器</div>
  29.         <div class="refresher-control">
  30.             <label for="refresh-interval">间隔(秒):</label>
  31.             <input type="number" id="refresh-interval" min="1" value="${GM_getValue(STORAGE_KEY_INTERVAL, DEFAULT_INTERVAL_SECONDS)}">
  32.         </div>
  33.         <div class="refresher-buttons">
  34.             <button id="start-refresh-btn">开始刷新</button>
  35.             <button id="stop-refresh-btn">停止刷新</button>
  36.         </div>
  37.         <div id="refresh-status">已停止</div>
  38.     `;

  39.     document.body.appendChild(panel);

  40.     // --- 获取 UI 元素引用 ---
  41.     const intervalInput = document.getElementById('refresh-interval');
  42.     const startButton = document.getElementById('start-refresh-btn');
  43.     const stopButton = document.getElementById('stop-refresh-btn');
  44.     const statusDisplay = document.getElementById('refresh-status');

  45.     // --- 添加 CSS 样式 ---
  46.     GM_addStyle(`
  47.         #continuous-refresher-panel {
  48.             position: fixed;
  49.             bottom: 15px;
  50.             right: 15px;
  51.             background-color: #f0f0f0;
  52.             border: 1px solid #ccc;
  53.             border-radius: 5px;
  54.             padding: 10px 15px;
  55.             z-index: 9999;
  56.             font-family: Arial, sans-serif;
  57.             font-size: 14px;
  58.             box-shadow: 2px 2px 5px rgba(0,0,0,0.2);
  59.             min-width: 180px;
  60.             color: #333;
  61.         }
  62.         #continuous-refresher-panel .refresher-title {
  63.             font-weight: bold;
  64.             margin-bottom: 8px;
  65.             text-align: center;
  66.             font-size: 15px;
  67.         }
  68.         #continuous-refresher-panel .refresher-control {
  69.             margin-bottom: 8px;
  70.             display: flex;
  71.             align-items: center;
  72.         }
  73.         #continuous-refresher-panel label {
  74.             margin-right: 5px;
  75.             white-space: nowrap;
  76.         }
  77.         #continuous-refresher-panel input[type="number"] {
  78.             width: 60px;
  79.             padding: 3px 5px;
  80.             border: 1px solid #ccc;
  81.             border-radius: 3px;
  82.         }
  83.         #continuous-refresher-panel .refresher-buttons {
  84.             display: flex;
  85.             justify-content: space-around;
  86.             margin-bottom: 8px;
  87.         }
  88.         #continuous-refresher-panel button {
  89.             padding: 5px 10px;
  90.             cursor: pointer;
  91.             border: 1px solid #aaa;
  92.             border-radius: 3px;
  93.             background-color: #e0e0e0;
  94.         }
  95.         #continuous-refresher-panel button:hover:not(:disabled) {
  96.             background-color: #d0d0d0;
  97.         }
  98.         #continuous-refresher-panel button:disabled {
  99.             cursor: not-allowed;
  100.             opacity: 0.6;
  101.         }
  102.         #refresh-status {
  103.             text-align: center;
  104.             font-size: 13px;
  105.             color: #555;
  106.             min-height: 1.2em; /* 防止文字变化时跳动 */
  107.         }
  108.     `);

  109.     // --- 功能函数 ---

  110.     // 更新倒计时显示 (基于时间戳计算)
  111.     function updateCountdown() {
  112.         if (!isRunning || nextRunTimestamp <= 0) {
  113.              // 如果状态不是运行中,或者没有目标时间,确保停止计时
  114.              if (countdownTimerId) clearInterval(countdownTimerId);
  115.              countdownTimerId = null;
  116.              return;
  117.         }

  118.         const now = Date.now();
  119.         const remainingMs = nextRunTimestamp - now;
  120.         const remainingSeconds = Math.max(0, Math.ceil(remainingMs / 1000));

  121.         if (remainingSeconds <= 0) {
  122.             statusDisplay.textContent = '即将刷新...';
  123.             // 实际刷新由 setTimeout 触发,这里只更新显示
  124.             // 到时间后定时器会自动停止或在 performRefresh 中被清除
  125.             if (countdownTimerId) clearInterval(countdownTimerId);
  126.             countdownTimerId = null;
  127.         } else {
  128.             statusDisplay.textContent = `运行中, ${remainingSeconds} 秒后刷新`;
  129.         }
  130.     }

  131.     // 执行页面刷新,并设置下一次刷新
  132.     function performRefresh() {
  133.         console.log('定时刷新器: 执行刷新');
  134.         // 1. 清除当前页面的所有计时器
  135.         if (refreshTimerId) clearTimeout(refreshTimerId);
  136.         if (countdownTimerId) clearInterval(countdownTimerId);
  137.         refreshTimerId = null;
  138.         countdownTimerId = null;
  139.         isRunning = false; // 重置瞬时状态

  140.         // 2. 计算并保存下一次运行的时间戳 (只有在明确需要继续时才保存)
  141.         // (检查一下是否在此期间被用户点了停止)
  142.         const nextRunCheck = GM_getValue(STORAGE_KEY_NEXT_RUN, 0);
  143.         if (nextRunCheck > 0) { // 如果大于0,说明用户没有点停止
  144.              const intervalSeconds = parseInt(GM_getValue(STORAGE_KEY_INTERVAL, DEFAULT_INTERVAL_SECONDS), 10);
  145.              const nextTimestamp = Date.now() + intervalSeconds * 1000; // 基于当前时间计算下一次
  146.              GM_setValue(STORAGE_KEY_NEXT_RUN, nextTimestamp);
  147.              console.log(`定时刷新器: 下次刷新时间戳已设置: ${new Date(nextTimestamp).toLocaleTimeString()}`);
  148.         } else {
  149.              console.log('定时刷新器: 检测到已停止,刷新后不再继续。');
  150.         }


  151.         // 3. 执行刷新
  152.         statusDisplay.textContent = '正在刷新页面...';
  153.         // 使用 небольшое таймаут перед перезагрузкой, чтобы статус успел отобразиться
  154.         setTimeout(() => {
  155.             window.location.reload();
  156.         }, 50);
  157.     }

  158.     // 启动或恢复刷新流程
  159.     function startRefresh(isAutoStart = false) {
  160.         let intervalValue;
  161.         let delayMs;

  162.         if (isAutoStart) {
  163.             // 自动启动(页面加载时)
  164.             intervalValue = parseInt(GM_getValue(STORAGE_KEY_INTERVAL, DEFAULT_INTERVAL_SECONDS), 10);
  165.             nextRunTimestamp = GM_getValue(STORAGE_KEY_NEXT_RUN, 0);
  166.             const now = Date.now();

  167.             if (nextRunTimestamp <= 0) {
  168.                 console.log('定时刷新器: 自动启动检查 - 未设置下次运行时间,停止。');
  169.                 stopRefresh(true); // 确保状态一致性
  170.                 return; // 没有有效的下次运行时间
  171.             }

  172.             delayMs = Math.max(0, nextRunTimestamp - now); // 计算剩余时间
  173.              console.log(`定时刷新器: 自动启动检查 - 计划时间: ${new Date(nextRunTimestamp).toLocaleTimeString()}, 剩余: ${delayMs}ms`);

  174.             if (delayMs < 100) { // 如果时间已过或非常接近,立即刷新
  175.                 console.log('定时刷新器: 自动启动检查 - 时间已到,立即刷新。');
  176.                 performRefresh();
  177.                 return;
  178.             }
  179.             // 如果还有时间,则按剩余时间启动定时器
  180.         } else {
  181.             // 手动启动
  182.             intervalValue = parseInt(intervalInput.value, 10);
  183.             if (isNaN(intervalValue) || intervalValue < 1) {
  184.                 alert('请输入有效的刷新间隔(必须是大于等于 1 的整数)。');
  185.                 intervalInput.value = GM_getValue(STORAGE_KEY_INTERVAL, DEFAULT_INTERVAL_SECONDS);
  186.                 return;
  187.             }
  188.             GM_setValue(STORAGE_KEY_INTERVAL, intervalValue); // 保存新间隔

  189.             delayMs = intervalValue * 1000; // 使用完整间隔
  190.             nextRunTimestamp = Date.now() + delayMs; // 计算并保存首次运行时间
  191.             GM_setValue(STORAGE_KEY_NEXT_RUN, nextRunTimestamp);
  192.             console.log(`定时刷新器: 手动启动 - 间隔: ${intervalValue}s, 下次运行: ${new Date(nextRunTimestamp).toLocaleTimeString()}`);
  193.         }


  194.         // 清除可能存在的旧定时器
  195.         if (refreshTimerId) clearTimeout(refreshTimerId);
  196.         if (countdownTimerId) clearInterval(countdownTimerId);

  197.         isRunning = true; // 设置瞬时运行状态

  198.         // 更新按钮和输入框状态
  199.         startButton.disabled = true;
  200.         stopButton.disabled = false;
  201.         intervalInput.disabled = true;

  202.         // 启动新的定时器
  203.         refreshTimerId = setTimeout(performRefresh, delayMs); // 设置刷新动作
  204.         updateCountdown(); // 立即更新一次显示
  205.         countdownTimerId = setInterval(updateCountdown, 1000); // 每秒更新倒计时
  206.     }

  207.     // 停止刷新流程
  208.     function stopRefresh(isInternalCall = false) { // 添加参数防止重复打印日志
  209.         // 清除定时器
  210.         if (refreshTimerId) {
  211.             clearTimeout(refreshTimerId);
  212.             refreshTimerId = null;
  213.         }
  214.         if (countdownTimerId) {
  215.             clearInterval(countdownTimerId);
  216.             countdownTimerId = null;
  217.         }

  218.         // 清除存储的状态
  219.         GM_setValue(STORAGE_KEY_NEXT_RUN, 0); // 设置为0或无效值表示停止

  220.         isRunning = false;
  221.         nextRunTimestamp = 0;

  222.         // 更新UI状态
  223.         statusDisplay.textContent = '已停止';
  224.         startButton.disabled = false;
  225.         stopButton.disabled = true;
  226.         intervalInput.disabled = false;

  227.         if (!isInternalCall) {
  228.             console.log('定时刷新器: 已手动停止');
  229.         }
  230.     }

  231.     // --- 事件监听器 ---
  232.     startButton.addEventListener('click', () => startRefresh(false)); // 手动启动
  233.     stopButton.addEventListener('click', () => stopRefresh(false));   // 手动停止

  234.     // --- 初始化和自动启动检查 ---
  235.     function initialize() {
  236.         console.log('定时刷新器脚本: 初始化...');
  237.         // 检查是否需要自动启动
  238.         nextRunTimestamp = GM_getValue(STORAGE_KEY_NEXT_RUN, 0);
  239.         if (nextRunTimestamp > 0 && Date.now() < nextRunTimestamp + 1000) { // 加一点容错时间
  240.              // 如果存储了有效的、未来的运行时间,则自动启动
  241.              console.log('定时刷新器: 检测到未完成的刷新任务,尝试自动恢复...');
  242.              startRefresh(true); // 调用自动启动逻辑
  243.         } else {
  244.              // 否则,确保处于停止状态
  245.              console.log('定时刷新器: 无需自动启动,保持停止状态。');
  246.              stopRefresh(true); // 使用内部调用避免打印停止日志
  247.         }
  248.     }

  249.     initialize(); // 页面加载时执行初始化检查

  250. })();
复制代码

虚拟机session停止了,重新启动或点击Reset按钮,home目录不会重置,根目录会重置,所以要将disk.qcow2保存在home里!
4969f73922f21ef4ac88de5a99f662f9.jpg
不要按 Ubuntu 的 Poweroff(右上角)的关机按钮,这会导致你的idx一段时间失联

给佬们欣赏欣赏
b38612187f33807dd81cf4269673a04c.jpg
3d78bdda8edcc573fcea2a6d9e2ce933.jpg
6ef42df51d864cf5ea68d3dcca1aaadc.jpg
02b9c2e301b9498bd96c8e061cb3bf9a.jpg
爱生活,爱奶昔~
回复 支持 1 反对 0

使用道具 举报

发表于 2025-4-19 11:55:22 | 查看全部
没有声音哎,看YouTube
爱生活,爱奶昔~
回复 支持 反对

使用道具 举报

发表于 2025-4-19 12:29:21 | 查看全部
好诶 有什么使用时长之类的限制吗
爱生活,爱奶昔~
回复 支持 反对

使用道具 举报

 楼主| 发表于 2025-4-19 13:11:54 来自手机 | 查看全部
dick 发表于 2025-4-19 12:29
好诶 有什么使用时长之类的限制吗

每个小时休眠一次,数据不会丢
爱生活,爱奶昔~
回复 支持 反对

使用道具 举报

发表于 2025-4-19 18:15:02 来自手机 | 查看全部
为什么我切换不过去啊😱
爱生活,爱奶昔~
回复 支持 反对

使用道具 举报

 楼主| 发表于 2025-4-19 18:16:28 | 查看全部
wsusu 发表于 2025-4-19 18:15
为什么我切换不过去啊😱

不是这么明细的截图教程你都不会用,那还能咋办?
爱生活,爱奶昔~
回复 支持 反对

使用道具 举报

发表于 2025-4-19 18:21:56 来自手机 | 查看全部
lc99520 发表于 2025-4-19 18:16
不是这么明细的截图教程你都不会用,那还能咋办?

是按照这个操作来的,但是他就是切换不过去中文
爱生活,爱奶昔~
回复 支持 反对

使用道具 举报

发表于 2025-4-19 22:31:42 | 查看全部
免费的Ubuntu编译机(云电脑?
爱生活,爱奶昔~
回复 支持 反对

使用道具 举报

发表于 2025-4-20 00:10:58 | 查看全部
这个弄好了,后面要怎么用?能做什么呀
爱生活,爱奶昔~
回复 支持 反对

使用道具 举报

发表于 2025-4-20 05:51:26 来自手机 | 查看全部
没多大用,会自动休眠的
爱生活,爱奶昔~
回复 支持 反对

使用道具 举报

 楼主| 发表于 2025-4-20 09:30:34 | 查看全部
telme255 发表于 2025-4-20 05:51
没多大用,会自动休眠的

本身就是拿来跑程序测试用的
爱生活,爱奶昔~
回复 支持 反对

使用道具 举报

 楼主| 发表于 2025-4-20 09:30:56 | 查看全部
sixintadi199107 发表于 2025-4-20 00:10
这个弄好了,后面要怎么用?能做什么呀

注册账号爬墙啥的
爱生活,爱奶昔~
回复 支持 反对

使用道具 举报

发表于 2025-4-20 20:16:20 | 查看全部
yagamil 发表于 2025-4-20 20:10
这个云主机每隔1到两个小时会断开一次,但是不会删除我们的数据,只需重新登录一次,依旧可以使用。
打开终 ...


牛逼,真可以搭梯子啊(不过要用base64解码一下
tizxi.png
我自己也存了一份二进制
  1. bash <(curl -Ls https://dl.naixi.net/argox/argox.sh)
复制代码
爱生活,爱奶昔~
回复 支持 反对

使用道具 举报

发表于 2025-4-22 00:58:37 | 查看全部
yagamil 发表于 2025-4-20 20:10
这个云主机每隔1到两个小时会断开一次,但是不会删除我们的数据,只需重新登录一次,依旧可以使用。
打开终 ...

有办法设置定时自动重新登录么
爱生活,爱奶昔~
回复 支持 反对

使用道具 举报

发表于 2025-4-22 00:59:34 | 查看全部
sixintadi199107 发表于 2025-4-22 00:58
有办法设置定时自动重新登录么

那个vnc,掉了点connect就回去了。要想不掉只能隔一阵子点一下
爱生活,爱奶昔~
回复 支持 反对

使用道具 举报

发表于 2025-5-3 05:44:56 | 查看全部
4.30开始创建 Android Studio 需要申请,已经创建好了的不受影响。况且现在机器随时都会被谷歌回收。
爱生活,爱奶昔~
回复 支持 反对

使用道具 举报

发表于 2025-5-3 08:00:07 | 查看全部
满满的干货啊
爱生活,爱奶昔~
回复 支持 反对

使用道具 举报

头像被屏蔽
发表于 2025-5-4 22:37:34 | 查看全部
dick 发表于 2025-4-19 12:29
好诶 有什么使用时长之类的限制吗

封车了,没删除的也不能正常用,显示资源紧张
爱生活,爱奶昔~
回复 支持 反对

使用道具 举报

发表于 2025-5-5 00:37:37 | 查看全部
会自动休眠吗,时长有限制吗
爱生活,爱奶昔~
回复 支持 反对

使用道具 举报

发表于 2025-5-12 14:07:34 | 查看全部
ouyangss 发表于 2025-5-5 00:37
会自动休眠吗,时长有限制吗

5.10 更新:现在又可以创建 Android Studio了,但是每人只能有一个,多了要使用钞能力。
未来可能会有更多限制,比如配置缩水。
su被锁了,远程桌面不能用是谷歌的问题,只能sudo -i提权
爱生活,爱奶昔~
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

  • 卡粉专属群
  • 官方电报群
© 2025 Naixi Networks 沪ICP备13020230号-1|沪公网安备 31010702007642号
关灯 在本版发帖
扫一扫添加微信客服
返回顶部
快速回复 返回顶部 返回列表