给新手的若干建议http://v.youku.com/v_show/id_XMTAyMDY3NTI4.html

本文为解密新手提供指导,强调毅力、执着与耐心的重要性。推荐CrackTutorial教程、OllyDbg调试工具及《加密与解密2》等书籍,通过分析CrackMe提升技能。

中山大学的视频 http://v.youku.com/v_show/id_XMTAyMDY3NTI4.html;所有加密解密汇编的文章都来自看雪论坛,转载下来学习,只是怕本机资源丢失所以上传到blog,希望作者们谅解,并谢谢你们的辛勤劳动。

题记:关于如何帮助和引导新手一直是看雪论坛所关注的问题,在这里我凭着自己对Crack的理解写出了下面这些文字,希望能对各位新手有所帮助,有所启迪。
给新手的若干建议
任何老手(包括高手)都不可避免地经历了新手这个不可逾越的阶段,当然,我自己的Crack历程也不例外(虽然我目前最多仅是个中级选手而已),所以下面结合自己的认识对新手提出一些建议,希望能对正在学习加解密的朋友们有所帮助。
Crack是一门曲高人寡的学问,需要有坚强的毅力,执着的学习精神,以及坐得住板凳的耐性。论坛里有太多的人来过几次,做了几个小小的尝试碰壁后,从此一去不复返。所以,如果你觉得自己不能做到上面三点,那我还是劝你最好放弃它,不要在这里浪费自己宝贵的时间。
首先,请你阅读“看雪技术论坛管理规则 (http://bbs.pediy.com/showthread.php?s=&threadid=27565)”、“论坛常见问题 (http://bbs.pediy.com/showthread.php?s=&threadid=769)”和“提问的智慧 (http://www.pediy.com/BBS/Questions.htm)”三个部分,它能帮助你迅速了解论坛及一些基本常识。有不少人一上来就问“XX软件怎么破解”、“RAR的密码怎么得到”、“XX指令是什么意思?”、“XX工具在哪里找?”,刚一开始还有人回答,到后来就没人理睬这些提问了,说明了什么原因?如果大家一开始就阅读这三个部分,就会避免这样的尴尬。
其次,请你在发表自己加入论坛以来的前N个新贴时,讨论/提问的东西不要离开Crack Tutorial (http://www.pediy.com/essay/Crack2001.zip)的内容。我的意思是说,Crack Tutorial太重要了,它应该是你在Crack界扎根立足的基本点;它的大部分内容将在很长一段时间内不会过时,除非Microsoft和x86的框架倒了;它绝对值得你花半个月到一个月的时间去仔细钻研,因为日后你会发现基础的东西有多重要;仔细学习完它以后,你几乎不会在论坛里问及任何初级问题;甚至当你和新手交流的时候,你可以这样回复他的提问贴:我Crack Tutorial过了,你呢?这就是我[HappyTown]为什么总是不厌其烦地给新手推荐该教程的原因。但是,如果你觉得该教程使用的TRW和 SoftIce调试工具有些过时的话,那么建议你使用OllyDbg (http://www.pediy.com/tools/Debuggers.htm)。CCDebuger版主的《OllyDBG入门教程》和翻译组 thinkSJ等人合译的《ARTeam站上的10篇OD入门教程》 (http://bbs.pediy.com/showthread.php?s=&threadid=22851或者 http://bbs.pediy.com/showthread.php?t=24400)都是如何使用该工具的极佳文章。在入门这一点上,如果你是一个完美主义者,想要从最基础的部分了解和学习Crack的话,那么解密基础知识入门 (http://bbs.pediy.com/showthread.php?s=&threadid=31840)是你必须仔细阅读的材料,kanxue在这里提供了完善的Crack体系的框架,不推荐这部分是无论如何都不能说过去的。
再次,关于脱壳。对于脱壳部分其实我是没有发言权的,但我还是厚着脸皮推荐一下针对初学者的教程,如《脱壳基础知识入门(2006年版)》 (http://bbs.pediy.com/showthread.php?s=&threadid=20366)和 weiyi75[DFCG]的《破解实例信息资源豪华版》 (http://bbs.pediy.com/upload/bbs/TK.rar) 。通常你如果能够坚持看完这些教程,那么一般的压缩壳已经难不倒你了。当然,你可能会说用脱壳机不就行了么,但手动脱壳能学习更多的知识,有时可能会碰到一些脱壳机无法正常脱去的壳,这时必须手动脱之。当然,有任何脱壳方面的问题,各位可以到『加壳与脱壳』版和大家一起讨论讨论。
如果你感觉网上资料太杂乱,无从下手的话,那么我要郑重推荐的是kanxue组织论坛高手编著的《加密与解密2》,其比较系统地介绍了加解密领域的相关基础知识,学习起来比较省事。这本书我从头到尾学习了一遍,对Crack的框架形成了比较系统的认识。听说《加密与解密》第三版在2007年要出来了,这本书将更侧重于基础,很适合新手。另外,《看雪论坛精华集》 (http://www.pediy.com/)(目前有8集)堪称密界的MSDN,不论你将来侧重于那个方向(壳、加密算法等),它都是你不可或缺的资料,玩Crack的都人手一份。要知道,许多问题的答案就在那里面躺着,关键是你是否主动去发掘它。还是引用JOJO一句话吧:“记住不要在阅读论坛的同时丢掉了勤奋中最重要的自学和动手的能力,因为只有这些才能让你走的比别人更远。”
再一,对于新手而言,重要的就是边学习边提高。这里不建议刚开始就拿网上的共享软件开刀,那样可能会让你碰一鼻子灰,以至于对自己失去信心;同时,它只是一个巩固的过程,而不是一个利于学习提高的过程。所以,我认为你可能需要分析尽量多的CrackMe,记住,无论怎么多都不为过,因为这是你Crack水平进阶的捷径,我的建议是『CrackMe & ReverseMe』板块的提供的CrackMe和KeyGenMe。www.crackmes.de (http://www.crackmes.de/)(这是一个英文站点,所以,你是否需要恶补英文?如果你的英文水平――至少是阅读水平――不足的话,那么你到达某个阶段后就不可能再超越自己了,因为那时你会发现没有中文资料可供你查阅)也是个不错的地方,他们给出了各个CrackMe的难度等级和编程语言,你可以找一些尽量适合自己水平的有针对性的东东来锻炼和提高自己。来点广告:如果你能把我的CrackMe系列独立完成并做出注册机,那么我想你至少已经可以成为一名半职业选手了。
最后,我想说的是关于提问的事。对于某些暂时没有回复的提问贴,请楼主不要动不动就来句诸如此类的话:“怎么没人理睬呀?”,“高手都到那里去了?”, “我自己顶”,甚至“高手都睡着了吗?”。也许,有人看见你的提问了,但不懂这个问题;也许,你的帖子太新,懂这个问题的人还没看到(毕竟,大家都是在不同的时间段来论坛的);也许,你的提问太模糊,别人不知如何回答你;也许,这个问题已经被问过N多次了,大家都不愿回答了(他心里可能在想:这家伙真懒,为什么不搜索一下论坛呢?论坛有那么好的搜索功能,未能有效利用真是可惜了。);也许,大家目前还都不懂这个问题。但,无论如何,请你尊重别人;毕竟,你没有给人家付薪水,人家也不是公共机构的服务人员,他们没有回答你的义务。还有一个就是不要指名道姓的说:某某某请进来帮忙...论坛规则里其实有这一条,但就是有不少新手都不好好执行,然后你就会发现回复的内容是:请不要点将...你得相信,指名道姓不会增加大家对你的好感。
好了,就写到这儿吧。洋洋洒洒写了2千多字,希望能对各位新手有所帮助。
HappyTown
二??六年十一月二十一日 于西安

<!DOCTYPE html> <html lang="zh-CN"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>简洁搜索引擎</title> <style> * { margin: 0; padding: 0; box-sizing: border-box; font-family: &#39;Microsoft YaHei&#39;, sans-serif; } body { background: linear-gradient(135deg, #f5f7fa 0%, #e4edf5 100%); min-height: 100vh; padding: 20px; display: flex; flex-direction: column; align-items: center; } .header { text-align: center; margin: 40px 0 10px; /* 减小搜索框上方间距 */ width: 100%; } .logo { font-size: 2.8rem; font-weight: bold; background: linear-gradient(90deg, #4a6ee0, #8e54e9); -webkit-background-clip: text; -webkit-text-fill-color: transparent; margin-bottom: 10px; letter-spacing: -2px; } .tagline { color: #6c757d; font-size: 1.1rem; margin-bottom: 20px; } .search-container { display: flex; max-width: 650px; width: 100%; margin: 0 auto 16px; /* 搜索框与下方组件距离设为16px */ position: relative; box-shadow: 0 5px 15px rgba(0, 0, 0, 0.1); border-radius: 50px; overflow: hidden; transition: all 0.3s ease; } .search-container:focus-within { box-shadow: 0 8px 25px rgba(74, 110, 224, 0.3); } #searchInput { flex: 1; padding: 17px 25px; font-size: 1.1rem; border: none; outline: none; background: white; caret-color: #4a6ee0; } #searchButton { padding: 0 35px; background: linear-gradient(90deg, #4a6ee0, #8e54e9); color: white; border: none; cursor: pointer; font-size: 1rem; font-weight: 500; transition: all 0.3s; } #searchButton:hover { opacity: 0.9; } #voiceButton { padding: 0 20px; background: #f8f9fa; border: none; cursor: pointer; display: flex; align-items: center; justify-content: center; transition: all 0.3s; } #voiceButton:hover { background: #e9ecef; } .voice-icon { width: 24px; height: 24px; fill: #4a6ee0; } #voiceStatus { text-align: center; height: 22px; color: #8e54e9; margin-top: 6px; font-size: 0.9rem; transition: all 0.3s; } /* 图标链接容器:紧凑布局,6个一行 */ .icon-links-container { display: grid; grid-template-columns: repeat(6, 1fr); gap: 1px; /* 设置组件之间间隔为1像素 */ max-width: 720px; width: 100%; margin: 0 auto; padding: 10px; background: #e9ecef; border-radius: 12px; } .icon-link { display: flex; flex-direction: column; align-items: center; text-decoration: none; transition: all 0.3s ease; padding: 10px 0; } .icon-link:hover { transform: translateY(-5px); } .icon-link:hover .icon-title { color: #4a6ee0; opacity: 1; } .icon-wrapper { width: 60px; height: 60px; border-radius: 18px; background: white; display: flex; align-items: center; justify-content: center; box-shadow: 0 5px 15px rgba(0, 0, 0, 0.08); transition: all 0.3s ease; margin-bottom: 8px; } .icon-link:hover .icon-wrapper { transform: scale(1.1); box-shadow: 0 8px 20px rgba(74, 110, 224, 0.25); } .icon-wrapper img { width: 32px; height: 32px; object-fit: contain; transition: all 0.3s ease; } .icon-link:hover .icon-wrapper img { transform: scale(1.15); } .icon-title { color: #495057; font-size: 0.85rem; font-weight: 500; text-align: center; opacity: 0.9; transition: all 0.3s ease; } .footer { margin-top: 30px; text-align: center; color: #6c757d; font-size: 0.9rem; padding: 20px; } /* 响应式适配 */ @media (max-width: 768px) { .icon-links-container { grid-template-columns: repeat(4, 1fr); gap: 2px; } .icon-wrapper { width: 54px; height: 54px; } .icon-wrapper img { width: 28px; height: 28px; } } @media (max-width: 480px) { .icon-links-container { grid-template-columns: repeat(3, 1fr); gap: 3px; } .icon-wrapper { width: 48px; height: 48px; border-radius: 14px; } .icon-wrapper img { width: 24px; height: 24px; } .icon-title { font-size: 0.8rem; } } </style> </head> <body> <div class="header"> <div class="logo">SearchHub</div> <div class="tagline">简洁 &middot; 快速 &middot; 智能搜索体验</div> <div class="search-container"> <input type="text" id="searchInput" placeholder="输入搜索内容..." autocomplete="off"> <button id="voiceButton"> <svg class="voice-icon" viewBox="0 0 24 24"> <path d="M12 14c1.66 0 3-1.34 3-3V5c0-1.66-1.34-3-3-3S9 3.34 9 5v6c0 1.66 1.34 3 3 3z"/> <path d="M17 11c0 2.76-2.24 5-5 5s-5-2.24-5-5H5c0 3.53 2.61 6.43 6 6.92V21h2v-3.08c3.39-.49 6-3.39 6-6.92h-2z"/> </svg> </button> <button id="searchButton">搜索</button> </div> <div id="voiceStatus"></div> </div> <div class="icon-links-container" id="iconLinksContainer"> <!-- 图标链接将通过JS动态加载 --> </div> <div class="footer"> <p>© 2023 简洁搜索引擎 | 隐私政策 | 使用条款</p> </div> <script> const searchInput = document.getElementById(&#39;searchInput&#39;); const voiceButton = document.getElementById(&#39;voiceButton&#39;); const voiceStatus = document.getElementById(&#39;voiceStatus&#39;); const searchButton = document.getElementById(&#39;searchButton&#39;); const iconLinksContainer = document.getElementById(&#39;iconLinksContainer&#39;); // 扩展至24个常用网站 const iconLinks = [ { id: "baidu", title: "百度", url: "https://www.baidu.com", icon: "https://hao123-static.cdn.bcebos.com/cms/2025-10/1760598940310/a176456d5589.png" }, { id: "qq-mail", title: "邮箱", url: "https://mail.qq.com", icon: "https://mail.qq.com/favicon.ico" }, { id: "netdisk", title: "网盘", url: "https://pan.baidu.com", icon: "https://pan.baidu.com/favicon.ico" }, { id: "bilibili", title: "B站", url: "https://www.bilibili.com", icon: "https://www.bilibili.com/favicon.ico" }, { id: "taobao", title: "淘宝", url: "https://www.taobao.com", icon: "https://www.taobao.com/favicon.ico" }, { id: "zhihu", title: "知乎", url: "https://www.zhihu.com", icon: "https://static.zhihu.com/heifetz/favicon.ico" }, { id: "163-mail", title: "163邮箱", url: "https://mail.163.com", icon: "https://mail.163.com/favicon.ico" }, { id: "github", title: "GitHub", url: "https://github.com", icon: "https://github.githubassets.com/favicons/favicon.png" }, { id: "google", title: "谷歌", url: "https://www.google.com", icon: "https://www.google.com/favicon.ico" }, { id: "youtube", title: "YouTube", url: "https://www.youtube.com", icon: "https://www.youtube.com/favicon.ico" }, { id: "wechat", title: "微信", url: "https://wx.qq.com", icon: "https://res.wx.qq.com/a/wx_fed/assets/res/NTI4MWU5.ico" }, { id: "jd", title: "京东", url: "https://www.jd.com", icon: "https://www.jd.com/favicon.ico" }, { id: "weibo", title: "微博", url: "https://weibo.com", icon: "https://weibo.cn/favicon.ico" }, { id: "alipay", title: "支付宝", url: "https://www.alipay.com", icon: "https://render.alipay.com/p/c/k2dx0185" }, { id: "toutiao", title: "头条", url: "https://www.toutiao.com", icon: "https://m.toutiao.com/favicon.ico" }, { id: "kuaishou", title: "快手", url: "https://www.kuaishou.com", icon: "https://www.kuaishou.com/favicon.ico" }, { id: "douyin", title: "抖音", url: "https://www.douyin.com", icon: "https://www.douyin.com/favicon.ico" }, { id: "xiaomi", title: "小米", url: "https://www.mi.com", icon: "https://www.mi.com/favicon.ico" }, { id: "huawei", title: "华为", url: "https://www.huawei.com", icon: "https://www.huawei.com/favicon.ico" }, { id: "sohu", title: "搜狐", url: "https://www.sohu.com", icon: "https://www.sohu.com/favicon.ico" }, { id: "sina", title: "新浪", url: "https://www.sina.com.cn", icon: "https://www.sina.com.cn/favicon.ico" }, { id: "amazon", title: "亚马逊", url: "https://www.amazon.cn", icon: "https://www.amazon.cn/favicon.ico" }, { id: "netflix", title: "Netflix", url: "https://www.netflix.com", icon: "https://www.netflix.com/favicon.ico" }, { id: "reddit", title: "Reddit", url: "https://www.reddit.com", icon: "https://www.reddit.com/favicon.ico" } ]; function renderIconLinks() { iconLinksContainer.innerHTML = &#39;&#39;; iconLinks.forEach(link => { const linkEl = document.createElement(&#39;a&#39;); linkEl.className = &#39;icon-link&#39;; linkEl.href = link.url; linkEl.target = "_blank"; linkEl.title = link.title; linkEl.innerHTML = ` <div class="icon-wrapper"> <img src="${link.icon}" alt="${link.title}"> </div> <div class="icon-title">${link.title}</div> `; iconLinksContainer.appendChild(linkEl); }); } function setupVoiceSearch() { let recognition; try { const SpeechRecognition = window.SpeechRecognition || window.webkitSpeechRecognition; recognition = new SpeechRecognition(); recognition.continuous = false; recognition.lang = &#39;zh-CN&#39;; recognition.interimResults = false; recognition.maxAlternatives = 1; recognition.onstart = () => { voiceStatus.textContent = "正在聆听...请说话"; voiceButton.innerHTML = `<svg class="voice-icon" viewBox="0 0 24 24" style="fill:#e74c3c;"> <path d="M12 14c1.66 0 3-1.34 3-3V5c0-1.66-1.34-3-3-3S9 3.34 9 5v6c0 1.66 1.34 3 3 3z"/> <path d="M17 11c0 2.76-2.24 5-5 5s-5-2.24-5-5H5c0 3.53 2.61 6.43 6 6.92V21h2v-3.08c3.39-.49 6-3.39 6-6.92h-2z"/> </svg>`; }; recognition.onresult = (event) => { const transcript = event.results[0][0].transcript; searchInput.value = transcript; voiceStatus.textContent = "识别成功"; setTimeout(() => voiceStatus.textContent = "", 3000); }; recognition.onerror = (event) => { console.error(&#39;语音识别错误:&#39;, event.error); voiceStatus.textContent = `错误: ${event.error}`; setTimeout(() => voiceStatus.textContent = "", 4000); }; recognition.onend = () => { voiceButton.innerHTML = `<svg class="voice-icon" viewBox="0 0 24 24"> <path d="M12 14c1.66 0 3-1.34 3-3V5c0-1.66-1.34-3-3-3S9 3.34 9 5v6c0 1.66 1.34 3 3 3z"/> <path d="M17 11c0 2.76-2.24 5-5 5s-5-2.24-5-5H5c0 3.53 2.61 6.43 6 6.92V21h2v-3.08c3.39-.49 6-3.39 6-6.92h-2z"/> </svg>`; }; voiceButton.addEventListener(&#39;click&#39;, () => { try { recognition.start(); } catch (error) { voiceStatus.textContent = "您的浏览器不支持语音识别"; console.error(&#39;语音识别启动失败:&#39;, error); } }); } catch (error) { voiceButton.disabled = true; voiceButton.innerHTML = `<svg class="voice-icon" viewBox="0 0 24 24" style="fill:#95a5a6;"> <path d="M12 14c0 1.66-1.34 3-3 3s-3-1.34-3-3V5c0-1.66 1.34-3 3-3s3 1.34 3 3v6zm5.3-3c0 3-2.54 5.1-5.3 5.1S6.7 14 6.7 11H5c0 3.41 2.72 6.23 6 6.72V21h2v-3.28c3.28-.48 6-3.3 6-6.72h-1.7z"/> </svg>`; voiceStatus.textContent = "您的浏览器不支持语音搜索"; console.error(&#39;语音识别初始化失败:&#39;, error); } } function setupSearch() { searchButton.addEventListener(&#39;click&#39;, performSearch); searchInput.addEventListener(&#39;keypress&#39;, (e) => { if (e.key === &#39;Enter&#39;) performSearch(); }); function performSearch() { const query = searchInput.value.trim(); if (query) { window.location.href = `https://www.baidu.com/s?wd=${encodeURIComponent(query)}`; } } } document.addEventListener(&#39;DOMContentLoaded&#39;, () => { renderIconLinks(); setupVoiceSearch(); setupSearch(); searchInput.addEventListener(&#39;focus&#39;, () => { document.querySelector(&#39;.search-container&#39;).style.transform = &#39;scale(1.02)&#39;; }); searchInput.addEventListener(&#39;blur&#39;, () => { document.querySelector(&#39;.search-container&#39;).style.transform = &#39;scale(1)&#39;; }); }); </script> </body> </html> 把界面和搜索框和语音搜索按钮美化,协调。搜索框与开始提到的搜索框一样:
10-26
<!DOCTYPE html> <html lang="zh-CN"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>简洁搜索引擎</title> <style> * { margin: 0; padding: 0; box-sizing: border-box; font-family: &#39;Microsoft YaHei&#39;, sans-serif; } body { background: linear-gradient(135deg, #f5f7fa 0%, #e4edf5 100%); min-height: 100vh; padding: 20px; display: flex; flex-direction: column; align-items: center; } .header { text-align: center; margin: 40px 0 10px; /* 减小搜索框上方间距 */ width: 100%; } .logo { font-size: 2.8rem; font-weight: bold; background: linear-gradient(90deg, #4a6ee0, #8e54e9); -webkit-background-clip: text; -webkit-text-fill-color: transparent; margin-bottom: 10px; letter-spacing: -2px; } .tagline { color: #6c757d; font-size: 1.1rem; margin-bottom: 20px; } .search-container { display: flex; max-width: 650px; width: 100%; margin: 0 auto 16px; /* 搜索框与下方组件距离设为16px */ position: relative; box-shadow: 0 5px 15px rgba(0, 0, 0, 0.1); border-radius: 50px; overflow: hidden; transition: all 0.3s ease; } .search-container:focus-within { box-shadow: 0 8px 25px rgba(74, 110, 224, 0.3); } #searchInput { flex: 1; padding: 17px 25px; font-size: 1.1rem; border: none; outline: none; background: white; caret-color: #4a6ee0; } #searchButton { padding: 0 35px; background: linear-gradient(90deg, #4a6ee0, #8e54e9); color: white; border: none; cursor: pointer; font-size: 1rem; font-weight: 500; transition: all 0.3s; } #searchButton:hover { opacity: 0.9; } #voiceButton { padding: 0 20px; background: #f8f9fa; border: none; cursor: pointer; display: flex; align-items: center; justify-content: center; transition: all 0.3s; } #voiceButton:hover { background: #e9ecef; } .voice-icon { width: 24px; height: 24px; fill: #4a6ee0; } #voiceStatus { text-align: center; height: 22px; color: #8e54e9; margin-top: 6px; font-size: 0.9rem; transition: all 0.3s; } /* 图标链接容器:紧凑布局,6个一行 */ .icon-links-container { display: grid; grid-template-columns: repeat(6, 1fr); gap: 1px; /* 设置组件之间间隔为1像素 */ max-width: 720px; width: 100%; margin: 0 auto; padding: 10px; background: #e9ecef; border-radius: 12px; } .icon-link { display: flex; flex-direction: column; align-items: center; text-decoration: none; transition: all 0.3s ease; padding: 10px 0; } .icon-link:hover { transform: translateY(-5px); } .icon-link:hover .icon-title { color: #4a6ee0; opacity: 1; } .icon-wrapper { width: 60px; height: 60px; border-radius: 18px; background: white; display: flex; align-items: center; justify-content: center; box-shadow: 0 5px 15px rgba(0, 0, 0, 0.08); transition: all 0.3s ease; margin-bottom: 8px; } .icon-link:hover .icon-wrapper { transform: scale(1.1); box-shadow: 0 8px 20px rgba(74, 110, 224, 0.25); } .icon-wrapper img { width: 32px; height: 32px; object-fit: contain; transition: all 0.3s ease; } .icon-link:hover .icon-wrapper img { transform: scale(1.15); } .icon-title { color: #495057; font-size: 0.85rem; font-weight: 500; text-align: center; opacity: 0.9; transition: all 0.3s ease; } .footer { margin-top: 30px; text-align: center; color: #6c757d; font-size: 0.9rem; padding: 20px; } /* 响应式适配 */ @media (max-width: 768px) { .icon-links-container { grid-template-columns: repeat(4, 1fr); gap: 2px; } .icon-wrapper { width: 54px; height: 54px; } .icon-wrapper img { width: 28px; height: 28px; } } @media (max-width: 480px) { .icon-links-container { grid-template-columns: repeat(3, 1fr); gap: 3px; } .icon-wrapper { width: 48px; height: 48px; border-radius: 14px; } .icon-wrapper img { width: 24px; height: 24px; } .icon-title { font-size: 0.8rem; } } </style> </head> <body> <div class="header"> <div class="logo">SearchHub</div> <div class="tagline">简洁 &middot; 快速 &middot; 智能搜索体验</div> <div class="search-container"> <input type="text" id="searchInput" placeholder="输入搜索内容..." autocomplete="off"> <button id="voiceButton"> <svg class="voice-icon" viewBox="0 0 24 24"> <path d="M12 14c1.66 0 3-1.34 3-3V5c0-1.66-1.34-3-3-3S9 3.34 9 5v6c0 1.66 1.34 3 3 3z"/> <path d="M17 11c0 2.76-2.24 5-5 5s-5-2.24-5-5H5c0 3.53 2.61 6.43 6 6.92V21h2v-3.08c3.39-.49 6-3.39 6-6.92h-2z"/> </svg> </button> <button id="searchButton">搜索</button> </div> <div id="voiceStatus"></div> </div> <div class="icon-links-container" id="iconLinksContainer"> <!-- 图标链接将通过JS动态加载 --> </div> <div class="footer"> <p>© 2023 简洁搜索引擎 | 隐私政策 | 使用条款</p> </div> <script> const searchInput = document.getElementById(&#39;searchInput&#39;); const voiceButton = document.getElementById(&#39;voiceButton&#39;); const voiceStatus = document.getElementById(&#39;voiceStatus&#39;); const searchButton = document.getElementById(&#39;searchButton&#39;); const iconLinksContainer = document.getElementById(&#39;iconLinksContainer&#39;); // 扩展至24个常用网站 const iconLinks = [ { id: "baidu", title: "百度", url: "https://www.baidu.com ", icon: "https://hao123-static.cdn.bcebos.com/cms/2025-10/1760598940310/a176456d5589.png " }, { id: "qq-mail", title: "邮箱", url: "https://mail.qq.com ", icon: "https://mail.qq.com/favicon.ico " }, { id: "netdisk", title: "网盘", url: "https://pan.baidu.com ", icon: "https://pan.baidu.com/favicon.ico " }, { id: "bilibili", title: "B站", url: "https://www.bilibili.com ", icon: "https://www.bilibili.com/favicon.ico " }, { id: "taobao", title: "淘宝", url: "https://www.taobao.com ", icon: "https://www.taobao.com/favicon.ico " }, { id: "zhihu", title: "知乎", url: "https://www.zhihu.com ", icon: "https://static.zhihu.com/heifetz/favicon.ico " }, { id: "163-mail", title: "163邮箱", url: "https://mail.163.com ", icon: "https://mail.163.com/favicon.ico " }, { id: "github", title: "GitHub", url: "https://github.com ", icon: "https://github.githubassets.com/favicons/favicon.png " }, { id: "google", title: "班级优化大师", url: "file:///C:/Users/zdl88/Downloads/my-html.html", icon: "微信图片_20250630221203.jpg" }, { id: "youtube", title: "YouTube", url: "https://www.youtube.com ", icon: "https://www.youtube.com/favicon.ico " }, { id: "wechat", title: "微信", url: "https://wx.qq.com ", icon: "https://res.wx.qq.com/a/wx_fed/assets/res/NTI4MWU5.ico " }, { id: "jd", title: "京东", url: "https://www.jd.com ", icon: "https://www.jd.com/favicon.ico " }, { id: "weibo", title: "微博", url: "https://weibo.com ", icon: "https://weibo.cn/favicon.ico " }, { id: "alipay", title: "支付宝", url: "https://www.alipay.com ", icon: "https://render.alipay.com/p/c/k2dx0185 " }, { id: "toutiao", title: "头条", url: "https://www.toutiao.com ", icon: "https://m.toutiao.com/favicon.ico " }, { id: "kuaishou", title: "快手", url: "https://www.kuaishou.com ", icon: "https://www.kuaishou.com/favicon.ico " }, { id: "douyin", title: "抖音", url: "https://www.douyin.com ", icon: "https://www.douyin.com/favicon.ico " }, { id: "xiaomi", title: "小米", url: "https://www.mi.com ", icon: "https://www.mi.com/favicon.ico " }, { id: "huawei", title: "华为", url: "https://www.huawei.com ", icon: "https://www.huawei.com/favicon.ico " }, { id: "sohu", title: "搜狐", url: "https://www.sohu.com ", icon: "https://www.sohu.com/favicon.ico " }, { id: "sina", title: "新浪", url: "https://www.sina.com.cn ", icon: "https://www.sina.com.cn/favicon.ico " }, { id: "amazon", title: "亚马逊", url: "https://www.amazon.cn ", icon: "https://www.amazon.cn/favicon.ico " }, { id: "netflix", title: "Netflix", url: "https://www.netflix.com ", icon: "https://www.netflix.com/favicon.ico " }, { id: "reddit", title: "Reddit", url: "https://www.reddit.com ", icon: "https://www.reddit.com/favicon.ico " } ]; function renderIconLinks() { iconLinksContainer.innerHTML = &#39;&#39;; iconLinks.forEach(link => { const linkEl = document.createElement(&#39;a&#39;); linkEl.className = &#39;icon-link&#39;; linkEl.href = link.url; linkEl.target = "_blank"; linkEl.title = link.title; linkEl.innerHTML = ` <div class="icon-wrapper"> <img src="${link.icon}" alt="${link.title}"> </div> <div class="icon-title">${link.title}</div> `; iconLinksContainer.appendChild(linkEl); }); } function setupVoiceSearch() { let recognition; try { const SpeechRecognition = window.SpeechRecognition || window.webkitSpeechRecognition; recognition = new SpeechRecognition(); recognition.continuous = false; recognition.lang = &#39;zh-CN&#39;; recognition.interimResults = false; recognition.maxAlternatives = 1; recognition.onstart = () => { voiceStatus.textContent = "正在聆听...请说话"; voiceButton.innerHTML = `<svg class="voice-icon" viewBox="0 0 24 24" style="fill:#e74c3c;"> <path d="M12 14c1.66 0 3-1.34 3-3V5c0-1.66-1.34-3-3-3S9 3.34 9 5v6c0 1.66 1.34 3 3 3z"/> <path d="M17 11c0 2.76-2.24 5-5 5s-5-2.24-5-5H5c0 3.53 2.61 6.43 6 6.92V21h2v-3.08c3.39-.49 6-3.39 6-6.92h-2z"/> </svg>`; }; recognition.onresult = (event) => { const transcript = event.results[0][0].transcript; searchInput.value = transcript; voiceStatus.textContent = "识别成功"; setTimeout(() => voiceStatus.textContent = "", 3000); }; recognition.onerror = (event) => { console.error(&#39;语音识别错误:&#39;, event.error); voiceStatus.textContent = `错误: ${event.error}`; setTimeout(() => voiceStatus.textContent = "", 4000); }; recognition.onend = () => { voiceButton.innerHTML = `<svg class="voice-icon" viewBox="0 0 24 24"> <path d="M12 14c1.66 0 3-1.34 3-3V5c0-1.66-1.34-3-3-3S9 3.34 9 5v6c0 1.66 1.34 3 3 3z"/> <path d="M17 11c0 2.76-2.24 5-5 5s-5-2.24-5-5H5c0 3.53 2.61 6.43 6 6.92V21h2v-3.08c3.39-.49 6-3.39 6-6.92h-2z"/> </svg>`; }; voiceButton.addEventListener(&#39;click&#39;, () => { try { recognition.start(); } catch (error) { voiceStatus.textContent = "您的浏览器不支持语音识别"; console.error(&#39;语音识别启动失败:&#39;, error); } }); } catch (error) { voiceButton.disabled = true; voiceButton.innerHTML = `<svg class="voice-icon" viewBox="0 0 24 24" style="fill:#95a5a6;"> <path d="M12 14c0 1.66-1.34 3-3 3s-3-1.34-3-3V5c0-1.66 1.34-3 3-3s3 1.34 3 3v6zm5.3-3c0 3-2.54 5.1-5.3 5.1S6.7 14 6.7 11H5c0 3.41 2.72 6.23 6 6.72V21h2v-3.28c3.28-.48 6-3.3 6-6.72h-1.7z"/> </svg>`; voiceStatus.textContent = "您的浏览器不支持语音搜索"; console.error(&#39;语音识别初始化失败:&#39;, error); } } function setupSearch() { searchButton.addEventListener(&#39;click&#39;, performSearch); searchInput.addEventListener(&#39;keypress&#39;, (e) => { if (e.key === &#39;Enter&#39;) performSearch(); }); function performSearch() { const query = searchInput.value.trim(); if (query) { window.location.href = `https://www.baidu.com/s?wd= ${encodeURIComponent(query)}`; } } } document.addEventListener(&#39;DOMContentLoaded&#39;, () => { renderIconLinks(); setupVoiceSearch(); setupSearch(); searchInput.addEventListener(&#39;focus&#39;, () => { document.querySelector(&#39;.search-container&#39;).style.transform = &#39;scale(1.02)&#39;; }); searchInput.addEventListener(&#39;blur&#39;, () => { document.querySelector(&#39;.search-container&#39;).style.transform = &#39;scale(1)&#39;; }); }); </script> </body> </html>加上网页背景,去掉小组件,搜索框下面有两个大悬浮窗,悬浮窗都在一行里,左窗里是热搜榜,在百度风云搜索里获取20个,一列10个,右边是新闻,最下面是百度风云热搜榜里的前200个,一列100个,搜索框与悬浮窗为透明,网页背景在网上获取,热门搜索榜在https://top.baidu.com/board里获取
最新发布
11-07
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值