bloxd.io Hack

Hack completo para Sword Masters.io (Speed + Ad Block)

当前为 2025-03-21 提交的版本,查看 最新版本

  1. // ==UserScript==
  2. // @name bloxd.io Hack
  3. // @namespace http://tampermonkey.net/
  4. // @version 2.8
  5. // @description Hack completo para Sword Masters.io (Speed + Ad Block)
  6. // @author Discord >> pedecoca
  7. // @match https://staging.bloxd.io/
  8. // @icon https://staging.bloxd.io/
  9. // @grant none
  10. // @license MIT
  11. // ==/UserScript==
  12.  
  13. (function() {
  14. 'use strict';
  15.  
  16. const config = {
  17. active: true,
  18. autoReward: true,
  19. debug: true,
  20. speedMultiplier: 1,
  21. attackMultiplier: 1,
  22. blockedDomains: new Set([
  23. 'poki.com',
  24. 'poki-gdn.com',
  25. 'google-analytics.com',
  26. 'doubleclick.net',
  27. 'adservice.google.com',
  28. 'analytics.google.com'
  29. ])
  30. };
  31.  
  32. function setupAntiKnockbackMonitor() {
  33. setInterval(() => {
  34. if (antiKnockback) {
  35. const script = document.createElement('script');
  36. script.textContent = `
  37. if (window.pc?.app) {
  38. const playerEntity = pc.app.root.findByName('Player');
  39. if (playerEntity && !window.antiKnockbackEnabled) {
  40. console.log('[Hack] Reapplying Anti Knockback after respawn');
  41. window.antiKnockbackEnabled = true;
  42. }
  43. }
  44. `;
  45. document.documentElement.appendChild(script);
  46. script.remove();
  47. }
  48. }, 9000000000);
  49. }
  50.  
  51.  
  52. let speedMultiplierDate = 1;
  53. const originalDateNow = Date.now;
  54. let baseTime = originalDateNow();
  55. let lastRealTime = baseTime;
  56. let accumulatedTimeOffset = 0;
  57. let useExponentialMode = false;
  58. let useHyperMode = false;
  59. let pulseActive = false;
  60. let antiKnockback = true;
  61.  
  62. function updateSpeedDate() {
  63. Date.now = () => {
  64. const currentTime = originalDateNow();
  65. return baseTime + (currentTime - baseTime) * speedMultiplierDate;
  66. };
  67. }
  68.  
  69.  
  70. function applyAntiKnockback() {
  71. const script = document.createElement('script');
  72. script.textContent = `
  73. if (window.pc?.app) {
  74. try {
  75. const playerEntity = pc.app.root.findByName('Player');
  76. if (playerEntity && playerEntity.script && playerEntity.script.playerController) {
  77. console.log('[Hack] Applying enhanced Anti-Knockback');
  78.  
  79. const originalGetDamage = playerEntity.script.playerController.getDamage;
  80.  
  81.  
  82. playerEntity.script.playerController.getDamage = function(amount, attacker) {
  83.  
  84. const originalPosition = this.entity.getPosition().clone();
  85. const originalRotation = this.entity.getRotation().clone();
  86.  
  87.  
  88. const result = originalGetDamage.call(this, amount, attacker);
  89.  
  90. if (window.antiKnockbackEnabled) {
  91.  
  92. this.entity.setPosition(originalPosition);
  93. this.entity.setRotation(originalRotation);
  94.  
  95.  
  96. setTimeout(() => {
  97. this.entity.setPosition(originalPosition);
  98. this.entity.setRotation(originalRotation);
  99. }, 5);
  100.  
  101.  
  102. setTimeout(() => {
  103. this.entity.setPosition(originalPosition);
  104. this.entity.setRotation(originalRotation);
  105. }, 10);
  106. }
  107.  
  108. return result;
  109. };
  110.  
  111.  
  112. if (playerEntity.script.movement && playerEntity.script.movement.knockback) {
  113. const originalKnockback = playerEntity.script.movement.knockback;
  114. playerEntity.script.movement.knockback = function() {
  115. if (window.antiKnockbackEnabled) {
  116.  
  117. return;
  118. }
  119. return originalKnockback.apply(this, arguments);
  120. };
  121. }
  122.  
  123.  
  124. if (playerEntity.rigidbody) {
  125. const originalApplyImpulse = playerEntity.rigidbody.applyImpulse;
  126. playerEntity.rigidbody.applyImpulse = function(impulse) {
  127. if (window.antiKnockbackEnabled) {
  128.  
  129. if (impulse.y < 0 || Math.abs(impulse.x) > 1 || Math.abs(impulse.z) > 1) {
  130.  
  131. return;
  132. }
  133. }
  134. return originalApplyImpulse.apply(this, arguments);
  135. };
  136. }
  137.  
  138.  
  139. const app = pc.app;
  140. if (app.systems && app.systems.script) {
  141. const originalUpdate = app.systems.script.update;
  142. let lastPosition = null;
  143. let isRestoringPosition = false;
  144.  
  145. app.systems.script.update = function(dt) {
  146.  
  147. const result = originalUpdate.call(this, dt);
  148.  
  149.  
  150. if (window.antiKnockbackEnabled && playerEntity) {
  151. const currentPos = playerEntity.getPosition();
  152.  
  153.  
  154. if (lastPosition && !isRestoringPosition) {
  155. const diff = new pc.Vec3();
  156. diff.sub2(currentPos, lastPosition);
  157.  
  158.  
  159. if (diff.length() > 0.1) {
  160. isRestoringPosition = true;
  161. playerEntity.setPosition(lastPosition);
  162. setTimeout(() => {
  163. isRestoringPosition = false;
  164. }, 20);
  165. }
  166. }
  167.  
  168.  
  169. if (!isRestoringPosition && playerEntity.script.playerController &&
  170. !playerEntity.script.playerController.isMoving) {
  171. lastPosition = currentPos.clone();
  172. }
  173. }
  174.  
  175. return result;
  176. };
  177. }
  178.  
  179.  
  180. window.antiKnockbackEnabled = ${antiKnockback};
  181. console.log('[Hack] Enhanced Anti Knockback ' + (window.antiKnockbackEnabled ? 'Enabled' : 'Disabled'));
  182. }
  183. } catch(e) {
  184. console.error('[Anti Knockback] Error:', e);
  185. }
  186. }
  187. `;
  188. document.documentElement.appendChild(script);
  189. script.remove();
  190. }
  191.  
  192. function toggleAntiKnockback() {
  193. antiKnockback = !antiKnockback;
  194. const script = document.createElement('script');
  195. script.textContent = `
  196. window.antiKnockbackEnabled = ${antiKnockback};
  197. console.log('[Hack] Anti Knockback ' + (window.antiKnockbackEnabled ? 'Enabled' : 'Disabled'));
  198. `;
  199. document.documentElement.appendChild(script);
  200. script.remove();
  201. return antiKnockback;
  202. }
  203.  
  204. function applySpeedHack() {
  205. const script = document.createElement('script');
  206. script.textContent = `
  207. if (window.originalRequestAnimationFrame) {
  208. window.requestAnimationFrame = function(callback) {
  209. return window.originalRequestAnimationFrame(function(timestamp) {
  210. timestamp *= ${config.speedMultiplier};
  211. callback(timestamp);
  212. });
  213. };
  214. }
  215.  
  216. if (window.pc?.app) {
  217. try {
  218. pc.app.timeScale = ${config.speedMultiplier};
  219. pc.app.systems.script.update = function(dt) {
  220. dt *= ${config.speedMultiplier};
  221. this._callScriptMethod('update', dt);
  222. };
  223. } catch(e) {
  224. console.error('[Speed Hack] Error:', e);
  225. }
  226. }
  227. `;
  228. document.documentElement.appendChild(script);
  229. }
  230.  
  231.  
  232. function disableAutoAttack() {
  233. const script = document.createElement('script');
  234. script.textContent = `
  235. function disableAutoAttack() {
  236. if (window.pc?.app) {
  237. try {
  238. const app = window.pc.app;
  239. const root = app.root;
  240. if (root) {
  241. const autoAttacks = root.findByTag('AutoAttack');
  242. autoAttacks?.forEach(component => {
  243. if (component?.enabled) {
  244. component.enabled = false;
  245. }
  246. });
  247. }
  248. } catch(e) {
  249. console.error('[Hack] Error:', e);
  250. }
  251. }
  252. }
  253.  
  254. const autoAttackInterval = setInterval(() => {
  255. if (window.pc?.app) {
  256. disableAutoAttack();
  257. clearInterval(autoAttackInterval);
  258. }
  259. }, 90000000000);
  260. `;
  261. document.documentElement.appendChild(script);
  262. }
  263.  
  264.  
  265. function updateSpeed(value) {
  266. config.speedMultiplier = Math.min(value, 300);
  267.  
  268. const speedValueElement = document.getElementById('speed-value');
  269. if (speedValueElement) {
  270. speedValueElement.textContent = config.speedMultiplier + 'x';
  271. }
  272.  
  273. applyPCSpeedHack();
  274.  
  275. if (config.useRequestAnimationFrame) {
  276. applyRAFSpeedHack();
  277. }
  278. }
  279.  
  280.  
  281. const styles = `
  282. #hack-menu {
  283. position: fixed;
  284. top: 206px;
  285. left: 3px;
  286. background: rgba(0,0,0,0.8);
  287. color: #00ff00;
  288. padding: 15px;
  289. border-radius: 10px;
  290. z-index: 9999;
  291. width: 240px;
  292. font-family: Arial, sans-serif;
  293. border: 2px solid #00ff00;
  294. cursor: move;
  295. animation: rainbow 2s infinite;
  296. }
  297. #hack-menu h3 {
  298. text-align: center;
  299. margin-bottom: 10px;
  300. color: #00ff00;
  301. display: flex;
  302. justify-content: center;
  303. align-items: center;
  304. position: relative;
  305. }
  306. .discord-icon {
  307. width: 64px;
  308. height: 64px;
  309. position: absolute;
  310. left: -15px;
  311. top: -40px;
  312. }
  313. .slider-container {
  314. display: flex;
  315. justify-content: center;
  316. align-items: center;
  317. gap: 10px;
  318. margin: 10px 0;
  319. }
  320. .btn, .hack-btn {
  321. width: 40px;
  322. height: 30px;
  323. background-color: #444;
  324. color: #00ff00;
  325. border: 1px solid #ff0;
  326. border-radius: 5px;
  327. cursor: pointer;
  328. font-size: 14px;
  329. }
  330. .control-btn {
  331. background-color: #333;
  332. width: 100%;
  333. font-size: 14px;
  334. margin-top: 10px;
  335. border: 1px solid #ff3300;
  336. color: #00ff00;
  337. padding: 5px;
  338. cursor: pointer;
  339. }
  340. #speed-slider {
  341. width: 180px;
  342. }
  343. @keyframes rainbow {
  344. 0% { border-color: red; }
  345. 14% { border-color: orange; }
  346. 28% { border-color: yellow; }
  347. 42% { border-color: green; }
  348. 57% { border-color: blue; }
  349. 71% { border-color: indigo; }
  350. 85% { border-color: violet; }
  351. 100% { border-color: red; }
  352. }
  353. .minimize-btn {
  354. position: absolute;
  355. top: 5px;
  356. right: 5px;
  357. background: none;
  358. border: none;
  359. color: #00ff00;
  360. cursor: pointer;
  361. font-size: 16px;
  362. padding: 5px;
  363. }
  364. .floating-icon {
  365. position: fixed;
  366. width: 40px;
  367. height: 40px;
  368. background: rgba(0,0,0,0.8);
  369. border-radius: 50%;
  370. display: flex;
  371. justify-content: center;
  372. align-items: center;
  373. cursor: pointer;
  374. font-size: 24px;
  375. z-index: 9999;
  376. border: 2px solid #00ff00;
  377. animation: rainbow 2s infinite;
  378. transition: transform 0.2s;
  379. }
  380. .floating-icon:hover {
  381. transform: scale(1.1);
  382. }
  383. .hack-menu.minimized {
  384. display: none;
  385. }
  386. .toggle-btn {
  387. background-color: #333;
  388. color: #00ff00;
  389. border: 1px solid #ff3300;
  390. border-radius: 5px;
  391. padding: 5px 10px;
  392. margin-top: 5px;
  393. cursor: pointer;
  394. font-size: 14px;
  395. display: flex;
  396. justify-content: space-between;
  397. align-items: center;
  398. }
  399.  
  400. .toggle-btn.active {
  401. background-color: #006600;
  402. border-color: #00ff00;
  403. }
  404.  
  405. .toggle-indicator {
  406. display: inline-block;
  407. width: 12px;
  408. height: 12px;
  409. border-radius: 50%;
  410. background-color: #ff3300;
  411. margin-left: 10px;
  412. }
  413.  
  414. .toggle-indicator.active {
  415. background-color: #00ff00;
  416. }
  417. `;
  418.  
  419.  
  420. function createHackMenu() {
  421. const menu = document.createElement('div');
  422. menu.id = 'hack-menu';
  423. menu.className = 'hack-menu';
  424. menu.innerHTML = `
  425. <button class="minimize-btn">−</button>
  426. <h3>
  427. <span>PeDeCoca</span>
  428. <a href="https://discord.gg/Tsa7dtJe5R" target="_blank">
  429. <img src="https://img.icons8.com/?size=100&id=61604&format=png&color=000000" alt="Discord" class="discord-icon">
  430. </a>
  431. </h3>
  432. <div style="eight:10px">
  433. <div class="hack-section">
  434. <span>Game Speed: <strong id="speed-value">${config.speedMultiplier}x</strong></span>
  435. <div style="eight:10px">
  436. <div class="slider-container">
  437. <input type="range" id="speed-slider" min="1" max="300" step="0.1" value="${config.speedMultiplier}">
  438. </div>
  439. </div>
  440. <div class="hack-section">
  441. <span>Attack Speed: <strong id="attack-value">${speedMultiplierDate}x</strong></span>
  442. <div class="slider-container">
  443. <input type="range" id="attack-slider" min="2" max="90000000000" step="2" value="${speedMultiplierDate}">
  444. </div>
  445. <button id="max-attack" class="control-btn">Max Attack</button>
  446. <div style="display: flex; justify-content: space-between; margin-top: 5px;">
  447. </div>
  448. </div>
  449. <button id="reset-all" class="control-btn">Reset All</button>
  450. `;
  451.  
  452. const floatingIcon = document.createElement('div');
  453. floatingIcon.className = 'floating-icon';
  454. floatingIcon.innerHTML = '🕹️';
  455. floatingIcon.style.display = 'none';
  456.  
  457. document.body.appendChild(menu);
  458. document.body.appendChild(floatingIcon);
  459.  
  460.  
  461. const minimizeBtn = menu.querySelector('.minimize-btn');
  462. minimizeBtn.addEventListener('click', () => {
  463. const menuPos = menu.getBoundingClientRect();
  464. menu.classList.add('minimized');
  465. floatingIcon.style.display = 'flex';
  466. floatingIcon.style.left = `${menuPos.left}px`;
  467. floatingIcon.style.top = `${menuPos.top}px`;
  468. });
  469.  
  470. floatingIcon.addEventListener('click', () => {
  471. const iconPos = floatingIcon.getBoundingClientRect();
  472. menu.classList.remove('minimized');
  473. menu.style.left = `${iconPos.left}px`;
  474. menu.style.top = `${iconPos.top}px`;
  475. floatingIcon.style.display = 'none';
  476. });
  477.  
  478. setupMenuControls();
  479. makeMenuMovable();
  480. }
  481.  
  482.  
  483. window.PokiSDK = {
  484. init() {
  485. console.log('[Hack] PokiSDK initialized');
  486. return Promise.resolve();
  487. },
  488. rewardedBreak(beforeBreak) {
  489. console.log('[Hack] Rewarded break called');
  490. if (beforeBreak) beforeBreak();
  491. return new Promise(resolve => {
  492. setTimeout(() => {
  493. if (window.pc?.app) {
  494. window.pc.app.fire('adSuccess', true);
  495. window.pc.app.fire('rewardedBreakComplete', true);
  496. window.pc.app.fire('rewardedBreakReward', true);
  497. }
  498. resolve(true);
  499. }, 10);
  500. });
  501. },
  502. commercialBreak() { return Promise.resolve(); },
  503. gameplayStart() { return Promise.resolve(); },
  504. gameplayStop() { return Promise.resolve(); },
  505. customEvent() { return Promise.resolve(); },
  506. enableEventTracking() { return Promise.resolve(); },
  507. setDebug() { return Promise.resolve(); },
  508. gameLoadingStart() { return Promise.resolve(); },
  509. gameLoadingFinished() { return Promise.resolve(); },
  510. gameInteractive() { return Promise.resolve(); },
  511. happyTime() { return Promise.resolve(); },
  512. setPlayerAge() { return Promise.resolve(); }
  513. };
  514.  
  515.  
  516. const originalFetch = window.fetch;
  517. window.fetch = async function(url, options) {
  518. try {
  519. const urlObj = new URL(url);
  520. if (config.blockedDomains.has(urlObj.hostname)) {
  521. console.log('[Hack] Blocked request to:', urlObj.hostname);
  522. return new Promise(() => {});
  523. }
  524. } catch (e) {}
  525. return originalFetch.apply(this, arguments);
  526. };
  527.  
  528. const originalXHR = window.XMLHttpRequest;
  529. window.XMLHttpRequest = function() {
  530. const xhr = new originalXHR();
  531. const originalOpen = xhr.open;
  532. xhr.open = function(method, url) {
  533. try {
  534. const urlObj = new URL(url);
  535. if (config.blockedDomains.has(urlObj.hostname)) {
  536. console.log('[Hack] Blocked XHR to:', urlObj.hostname);
  537. return;
  538. }
  539. } catch (e) {}
  540. return originalOpen.apply(this, arguments);
  541. };
  542. return xhr;
  543. };
  544.  
  545.  
  546. function setupMenuControls() {
  547. const speedSlider = document.getElementById('speed-slider');
  548. const attackSlider = document.getElementById('attack-slider');
  549. const speedValue = document.getElementById('speed-value');
  550. const attackValue = document.getElementById('attack-value');
  551.  
  552. speedSlider.addEventListener('input', () => {
  553. const value = parseFloat(speedSlider.value);
  554. updateSpeed(value);
  555. });
  556. attackSlider.addEventListener('input', () => {
  557. const value = parseInt(attackSlider.value);
  558. speedMultiplierDate = value;
  559. attackValue.textContent = value + 'x';
  560. updateSpeedDate();
  561. });
  562. document.getElementById('max-attack').addEventListener('click', () => {
  563. speedMultiplierDate = 1000;
  564. attackSlider.value = 1000;
  565. attackValue.textContent = '1000x';
  566. updateSpeedDate();
  567. });
  568. document.getElementById('reset-all').addEventListener('click', () => {
  569. updateSpeed(1);
  570. speedSlider.value = 1;
  571.  
  572. speedMultiplierDate = 1;
  573. attackSlider.value = 1;
  574. attackValue.textContent = '1x';
  575. updateSpeedDate();
  576. });
  577. const antiKnockbackToggle = document.getElementById('toggle-anti-knockback');
  578. if (antiKnockbackToggle) {
  579. antiKnockbackToggle.addEventListener('click', function() {
  580. const isActive = toggleAntiKnockback();
  581. this.classList.toggle('active', isActive);
  582. this.querySelector('.toggle-indicator').classList.toggle('active', isActive);
  583. applyAntiKnockback();
  584. });
  585. }
  586. }
  587.  
  588.  
  589. function makeMenuMovable() {
  590. const menu = document.getElementById('hack-menu');
  591. let isDragging = false;
  592. let offsetX, offsetY;
  593.  
  594. menu.addEventListener('mousedown', (e) => {
  595.  
  596. if (e.target.tagName === 'INPUT' || e.target.tagName === 'BUTTON') {
  597. return;
  598. }
  599.  
  600. isDragging = true;
  601. offsetX = e.clientX - menu.offsetLeft;
  602. offsetY = e.clientY - menu.offsetTop;
  603. menu.style.cursor = 'grabbing';
  604. });
  605.  
  606. window.addEventListener('mousemove', (e) => {
  607. if (isDragging) {
  608. menu.style.left = `${e.clientX - offsetX}px`;
  609. menu.style.top = `${e.clientY - offsetY}px`;
  610. }
  611. });
  612.  
  613. window.addEventListener('mouseup', () => {
  614. isDragging = false;
  615. menu.style.cursor = 'move';
  616. });
  617.  
  618.  
  619. const sliders = menu.querySelectorAll('input[type="range"]');
  620. sliders.forEach(slider => {
  621. slider.addEventListener('mousedown', (e) => {
  622. e.stopPropagation();
  623. });
  624. slider.addEventListener('mousemove', (e) => {
  625. e.stopPropagation();
  626. });
  627. });
  628.  
  629.  
  630. const floatingIcon = document.querySelector('.floating-icon');
  631. let isDraggingIcon = false;
  632. let hasMoved = false;
  633. let iconOffsetX, iconOffsetY;
  634.  
  635. floatingIcon.addEventListener('mousedown', (e) => {
  636. isDraggingIcon = true;
  637. hasMoved = false;
  638. iconOffsetX = e.clientX - floatingIcon.offsetLeft;
  639. iconOffsetY = e.clientY - floatingIcon.offsetTop;
  640. floatingIcon.style.cursor = 'grabbing';
  641. });
  642.  
  643. window.addEventListener('mousemove', (e) => {
  644. if (isDraggingIcon) {
  645. hasMoved = true;
  646. floatingIcon.style.left = `${e.clientX - iconOffsetX}px`;
  647. floatingIcon.style.top = `${e.clientY - iconOffsetY}px`;
  648. }
  649. });
  650.  
  651. window.addEventListener('mouseup', () => {
  652. isDraggingIcon = false;
  653. floatingIcon.style.cursor = 'pointer';
  654. });
  655.  
  656.  
  657. floatingIcon.addEventListener('click', (e) => {
  658. if (!hasMoved) {
  659. const menu = document.getElementById('hack-menu');
  660. const iconPos = floatingIcon.getBoundingClientRect();
  661. menu.classList.remove('minimized');
  662. menu.style.left = `${iconPos.left}px`;
  663. menu.style.top = `${iconPos.top}px`;
  664. floatingIcon.style.display = 'none';
  665. }
  666. });
  667. }
  668. function applyPCSpeedHack() {
  669. const script = document.createElement('script');
  670. script.textContent = `
  671. if (window.pc?.app) {
  672. try {
  673.  
  674. pc.app.timeScale = ${config.speedMultiplier};
  675.  
  676.  
  677. if (pc.app.systems && pc.app.systems.script) {
  678. pc.app.systems.script.update = function(dt) {
  679. dt *= ${config.speedMultiplier};
  680. this._callScriptMethod('update', dt);
  681. };
  682. }
  683.  
  684. console.log('[Hack] PC Speed multiplier set to ${config.speedMultiplier}x');
  685. } catch(e) {
  686. console.error('[Speed Hack] PC Error:', e);
  687. }
  688. }
  689. `;
  690. document.documentElement.appendChild(script);
  691. script.remove();
  692. }
  693. function applyRAFSpeedHack() {
  694. const script = document.createElement('script');
  695. script.textContent = `
  696. if (window.originalRequestAnimationFrame) {
  697. window.requestAnimationFrame = function(callback) {
  698. return window.originalRequestAnimationFrame(function(timestamp) {
  699.  
  700. timestamp *= ${config.speedMultiplier};
  701. callback(timestamp);
  702. });
  703. };
  704. console.log('[Hack] RAF Speed multiplier set to ${config.speedMultiplier}x');
  705. }
  706. `;
  707. document.documentElement.appendChild(script);
  708. script.remove();
  709. }
  710.  
  711. function initialize() {
  712. const styleElement = document.createElement('style');
  713. styleElement.textContent = styles;
  714. document.head.appendChild(styleElement);
  715. config.useRequestAnimationFrame = true;
  716. const script = document.createElement('script');
  717. script.textContent = `
  718. window.originalRequestAnimationFrame = window.requestAnimationFrame;
  719. `;
  720. document.documentElement.appendChild(script);
  721. script.remove();
  722.  
  723. createHackMenu();
  724. updateSpeedDate();
  725. applySpeedHack();
  726. applyAntiKnockback();
  727. setupAntiKnockbackMonitor();
  728. setInterval(() => {
  729. if (window.pc?.app) {
  730. window.pc.app.fire('adSuccess', true);
  731. window.pc.app.fire('rewardedBreakComplete', true);
  732. window.pc.app.fire('rewardedBreakReward', true);
  733. }
  734. }, 30000);
  735.  
  736. console.log('[Hack] Script loaded successfully!');
  737. }
  738.  
  739. if (document.readyState === 'loading') {
  740. document.addEventListener('DOMContentLoaded', initialize);
  741. } else {
  742. initialize();
  743. }
  744. })();

QingJ © 2025

镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址