TDK抓取API - SEO优化必备工具

在当今数字营销竞争白热化的时代,搜索引擎优化(SEO)已成为网站获取流量的基石。而关键词的精准挖掘与分析,则是SEO工作的核心引擎。其中,“TDK”(即Title标题、Description描述、Keywords关键词)作为网页最基础也是最重要的SEO元素,其优化效果直接关系到排名与点击。传统手动筛选TDK关键词的方式不仅效率低下,而且难以洞察海量数据背后的趋势。因此,掌握并利用“TDK抓取API”这一自动化工具,便成为SEO从业者提升工作效率、制定精准策略的必备技能。本指南将为您提供一份详尽、可操作的分步教程,助您从零开始驾驭这项强大工具。


第一步:理解核心——什么是TDK抓取API?
在深入操作前,必须厘清概念。TDK抓取API并非一个单一的、通用的工具,而是一类编程接口的统称。其核心功能是允许开发者或SEO工具,通过发送特定的网络请求(API调用),自动从目标网页的HTML源代码中,提取出该页面预设的标题(Title)、描述(Description)和关键词(Keywords)标签内容。这本质上是模拟搜索引擎蜘蛛读取网页元数据的过程。通过API批量处理,用户可以在短时间内分析成百上千个网页的TDK设置情况,无论是分析竞争对手的页面策略,还是审计自身网站的大量页面,都能实现效率的飞跃。


第二步:工具准备——选择合适的API服务
工欲善其事,必先利其器。市面上有多种方式可以实现TDK抓取:
1. 通用网络爬虫API: 许多成熟的爬虫服务平台(如ScraperAPI, Crawlbase, ZenRows等)提供了强大的HTML抓取接口。您只需传入目标网址,即可获取完整的页面HTML,然后自行或利用其附加功能解析出TDK部分。
2. 专用SEO数据API: 一些SEO工具(如Ahrefs, SEMrush, Moz等)在其提供的API服务中,通常包含直接获取页面标题和描述的功能,数据可能更准确且附带权威度等SEO指标。
3. 自建爬虫脚本: 对于有编程能力的用户,可以使用Python(配合Requests、BeautifulSoup库)或Node.js等语言自行编写简单的抓取脚本,灵活性最高且成本可控。
选择时需综合考虑预算、技术门槛、数据稳定性及需求量。对于大多数SEO人员,从信誉良好的通用爬虫API服务商入手是平衡效率与复杂度的佳选。


第三步:实操开端——获取API密钥并初步调用
选定服务商后,通常需要注册账户并订阅相应套餐以获取唯一的API密钥(API Key)。这个密钥是您调用服务的身份凭证,需妥善保管。我们以一个假设的通用爬虫API为例,展示最基本的调用流程:
1. 构造请求URL: 服务商文档会提供基础的API端点(Endpoint)。例如:https://api.scraperservice.com/v1/scrape?api_key=YOUR_API_KEY&url=TARGET_URL。
2. 设置请求参数: 将YOUR_API_KEY替换为您自己的实际密钥,将TARGET_URL替换为经过URL编码的目标网页地址(例如:https%3A%2F%2Fwww.example.com%2Fpage)。
3. 发送请求并接收响应: 您可以使用多种工具发送此HTTP GET请求,如浏览器地址栏(仅限简单测试)、命令行工具Curl、或者图形化工具Postman。一个简单的Curl命令示例:
curl "https://api.scraperservice.com/v1/scrape?api_key=your_actual_key&url=https%3A%2F%2Fwww.example.com"
4. 解析响应数据: API通常会返回JSON格式的数据,其中包含了抓取到的页面HTML或已解析好的结构化数据。您需要在其中定位并提取、<meta name="description">和<meta name="keywords">标签内的内容。</p> <hr> <p class=article><strong>第四步:进阶处理——批量抓取与数据解析</strong><br> 单个页面的抓取意义有限,批量分析才能发挥API的最大价值。<br> 1. <strong>构建URL列表:</strong> 将需要分析的网址整理到一个文本文件或电子表格中。<br> 2. <strong>编写循环脚本:</strong> 使用Python等脚本语言,读取URL列表,在循环中依次将每个URL代入上述API请求,并收集每次的响应。务必在每次请求间添加短暂延时(如1-2秒),以避免触发目标网站的防爬机制,同时也遵守API服务商的速率限制。<br> 3. <strong>精准提取TDK:</strong> 从返回的HTML字符串中,利用正则表达式或HTML解析库(如Python的BeautifulSoup)精准定位并提取TDK内容。BeautifulSoup示例:<br> soup = BeautifulSoup(html_response, 'html.parser')<br> title = soup.title.string if soup.title else "无标题"<br> description = soup.find('meta', attrs={'name': 'description'})<br> description_content = description['content'] if description else "无描述"<br> keywords = soup.find('meta', attrs={'name': 'keywords'})<br> keywords_content = keywords['content'] if keywords else "无关键词"<br> 4. <strong>存储与分析:</strong> 将提取出的标题、描述、关键词连同原始URL一起,存储到CSV文件或数据库中。随后,可以利用Excel、Google Sheets或数据分析工具进行进一步分析,例如:统计关键词重复度、分析标题长度是否符合规范、检查描述是否具有吸引力等。</p> <hr> <p class=article><strong>第五步:优化整合——将数据应用于SEO实战</strong><br> 获取数据是手段,而非目的。TDK抓取API的价值在于驱动决策:<br> - <strong>竞争对手分析:</strong> 批量抓取竞争对手排名靠前页面的TDK,总结其标题关键词布局模式、描述撰写技巧,为己所用。<br> - <strong>网站内容审计:</strong> 抓取自身网站所有重要页面的TDK,检查是否存在缺失、重复、过长或过短等问题,形成优化任务清单。<br> - <strong>关键词策略验证:</strong> 通过分析大量页面TDK中使用的关键词,验证当前关键词策略的覆盖广度与深度,发现新的长尾关键词机会。<br> - <strong>自动化监控:</strong> 定期运行抓取脚本,监控自身及竞争对手TDK的变动,及时了解其策略调整。</p> <hr> <p class=article><strong>常见错误与避坑指南</strong><br> 1. <strong>忽略API使用限制:</strong> 所有API服务都有请求频率、并发数或月度调用量的限制。务必仔细阅读文档,在代码中做好错误处理和限速,否则可能导致额外费用或账号被封禁。<br> 2. <strong>未处理动态加载内容:</strong> 许多现代网站使用JavaScript动态渲染页面内容,简单的HTTP请求可能无法获取到完整的TDK。此时需选择支持“无头浏览器”或JavaScript渲染的API服务。<br> 3. <strong>缺乏错误处理机制:</strong> 网络请求可能因各种原因(如目标页面404、服务器超时、IP被封)失败。您的脚本必须包含健壮的错误处理(如try-catch语句)和重试机制,确保任务能持续运行。<br> 4. <strong>忽视数据清洗:</strong> 抓取到的原始数据可能包含多余的空格、换行符或特殊字符,直接存储会影响分析结果。在存储前进行必要的清洗和格式化至关重要。<br> 5. <strong>触碰法律与道德红线:</strong> 遵守目标网站的robots.txt协议,尊重版权和个人隐私。避免对网站进行恶意高频访问,造成服务器压力。将抓取的数据用于合法、合规的分析与研究。</p> <hr> <p class=article>掌握TDK抓取API,就如同为SEO工作装上了高倍望远镜与自动化流水线。它不仅能将您从繁琐重复的手工劳动中解放出来,更能提供基于大数据分析的宏观视野,让优化决策更加科学、精准。通过遵循本指南的步骤,从理解原理、选择工具,到实战调用、规避陷阱,您完全可以将这一强大工具融入日常工作流,从而在SEO的激烈竞争中抢占数据与效率的制高点。记住,技术的价值在于赋能,而真正的优化智慧,永远在于您对数据的洞察与运用。</p> </div> <div class="article-actions"> <button class="action-btn like-btn" onclick="likeArticle(19548)"> <i class="fa fa-heart"></i> <span class="like-text">点赞</span> <span class="like-count">0</span> </button> <button class="action-btn share-btn" onclick="openShareModal()"> <i class="fa fa-share-alt"></i> 分享文章 </button> </div> </article> <nav class="article-navigation fade-in" style="animation-delay: 0.2s;"> <div class="nav-item"> <a href="http://999tour.cn/g168z1/9j-19547.html"> <div class="nav-label"><i class="fa fa-chevron-left"></i> 上一篇</div> <div class="nav-title">网站SEO优化API:TDK抓取与智能分析案例</div> </a> </div> <div class="nav-item"> <a href="http://999tour.cn/g168z1/9j-20079.html"> <div class="nav-label">下一篇 <i class="fa fa-chevron-right"></i></div> <div class="nav-title">微信视频号美食攻略:家常菜教程与探店视频精选(共23字,含标点,40字以内)</div> </a> </div> </nav> <section class="related-articles fade-in" style="animation-delay: 0.4s;"> <h3 class="related-title"> <i class="fa fa-list"></i> 相关文章 </h3> <ul class="related-list"> <li class="related-item"> <a href="http://999tour.cn/g168z1/9j-19549.html"> SEO教程:快速抓取网站TDK的API技巧 </a> <div class="related-meta"> <span><i class="fa fa-calendar"></i> 2026-10-08</span> <span><i class="fa fa-eye"></i> 36 次浏览</span> </div> </li> <li class="related-item"> <a href="http://999tour.cn/g168z1/9j-19550.html"> 魔速TDK:秒级SEO优化神器,让你的网站登顶搜索引擎! </a> <div class="related-meta"> <span><i class="fa fa-calendar"></i> 2026-10-08</span> <span><i class="fa fa-eye"></i> 9 次浏览</span> </div> </li> <li class="related-item"> <a href="http://999tour.cn/g168z1/9j-19551.html"> 百度收录查询API:年度SEO成效洞察助手 </a> <div class="related-meta"> <span><i class="fa fa-calendar"></i> 2026-10-08</span> <span><i class="fa fa-eye"></i> 9 次浏览</span> </div> </li> <li class="related-item"> <a href="http://999tour.cn/g168z1/9j-19552.html"> 百度收录查询API:实时域名收录SEO检测 </a> <div class="related-meta"> <span><i class="fa fa-calendar"></i> 2026-10-08</span> <span><i class="fa fa-eye"></i> 23 次浏览</span> </div> </li> <li class="related-item"> <a href="http://999tour.cn/g168z1/9j-19553.html"> 百度收录查询API上线,实时监测SEO效果 </a> <div class="related-meta"> <span><i class="fa fa-calendar"></i> 2026-10-08</span> <span><i class="fa fa-eye"></i> 35 次浏览</span> </div> </li> </ul> </section> </div> <div class="share-modal" id="shareModal"> <div class="share-modal-overlay" onclick="closeShareModal()"></div> <div class="share-modal-content"> <div class="share-modal-header"> <h3><i class="fa fa-share-alt"></i> 分享文章</h3> <button class="close-btn" onclick="closeShareModal()"> <i class="fa fa-times"></i> </button> </div> <div class="share-modal-body"> <div class="share-options"> <div class="share-option" onclick="shareToWeibo()"> <div class="share-icon weibo"> <i class="fa fa-weibo"></i> </div> <span>微博</span> </div> <div class="share-option" onclick="shareToQQ()"> <div class="share-icon qq"> <i class="fa fa-qq"></i> </div> <span>QQ</span> </div> <div class="share-option" onclick="shareToQzone()"> <div class="share-icon qzone"> <i class="fa fa-star"></i> </div> <span>QQ空间</span> </div> <div class="share-option" onclick="copyLink()"> <div class="share-icon copy"> <i class="fa fa-link"></i> </div> <span>复制链接</span> </div> </div> <div class="share-link-box"> <label>文章链接:</label> <div class="link-input-group"> <input type="text" id="articleLink" value="http://999tour.cn/g168z1/9j-19548.html" readonly> <button onclick="copyLinkFromInput()"> <i class="fa fa-copy"></i> 复制 </button> </div> </div> </div> </div> </div> <div class="share-toast" id="shareToast">操作成功</div> <script> function likeArticle(articleId) { const likeBtn = document.querySelector('.like-btn'); const likeCount = document.querySelector('.like-count'); const likeText = document.querySelector('.like-text'); if (localStorage.getItem('liked_' + articleId)) { showToast('您已经点过赞了'); return; } likeBtn.classList.add('animate'); setTimeout(() => likeBtn.classList.remove('animate'), 300); $.post('http://999tour.cn/ajax.php?act=dianzan', { type:2, id:'19548', }, function(data) { if (data.code ==200) { likeBtn.classList.add('liked'); likeText.textContent = '已赞'; likeCount.textContent = parseInt(likeCount.textContent) + 1; localStorage.setItem('liked_' + articleId, '1'); showToast('点赞成功'); } else { showToast(data.msg || '点赞失败'); } }, 'json').fail(function() { showToast('网络错误,请重试'); }); } function openShareModal() { document.getElementById('shareModal').classList.add('show'); document.body.style.overflow = 'hidden'; } function closeShareModal() { document.getElementById('shareModal').classList.remove('show'); document.body.style.overflow = ''; } function shareToWeibo() { const title = encodeURIComponent(document.title); const url = encodeURIComponent(window.location.href); window.open(`https://service.weibo.com/share/share.php?title=${title}&url=${url}`, '_blank', 'width=600,height=400'); closeShareModal(); } function shareToQQ() { const title = encodeURIComponent(document.title); const url = encodeURIComponent(window.location.href); const desc = encodeURIComponent('分享一篇精彩文章'); const summary = encodeURIComponent('来自本站的优质内容'); const shareUrl = `https://connect.qq.com/widget/shareqq/index.html?url=${url}&title=${title}&desc=${desc}&summary=${summary}`; window.open(shareUrl, '_blank', 'width=600,height=400'); closeShareModal(); } function shareToQzone() { const title = encodeURIComponent(document.title); const url = encodeURIComponent(window.location.href); const desc = encodeURIComponent('分享一篇精彩文章'); const shareUrl = `https://sns.qzone.qq.com/cgi-bin/qzshare/cgi_qzshare_onekey?url=${url}&title=${title}&desc=${desc}`; window.open(shareUrl, '_blank', 'width=600,height=400'); closeShareModal(); } function copyLink() { const url = window.location.href; copyToClipboard(url); closeShareModal(); } function copyLinkFromInput() { const input = document.getElementById('articleLink'); copyToClipboard(input.value); } function copyToClipboard(text) { if (navigator.clipboard && navigator.clipboard.writeText) { navigator.clipboard.writeText(text).then(function() { showToast('链接已复制到剪贴板'); }).catch(function() { fallbackCopyText(text); }); } else { fallbackCopyText(text); } } function fallbackCopyText(text) { const textArea = document.createElement('textarea'); textArea.value = text; textArea.style.position = 'fixed'; textArea.style.left = '-9999px'; document.body.appendChild(textArea); textArea.select(); try { document.execCommand('copy'); showToast('链接已复制到剪贴板'); } catch (err) { showToast('复制失败,请手动复制链接'); } document.body.removeChild(textArea); } function showToast(message) { const toast = document.getElementById('shareToast'); toast.textContent = message; toast.style.display = 'block'; setTimeout(() => { toast.style.display = 'none'; }, 2000); } document.addEventListener('keydown', function(e) { if (e.key === 'Escape') { closeShareModal(); } }); </script> <footer class="crystal-footer"> <div class="crystal-footer-bg"> <div class="crystal-footer-shapes"> <div class="crystal-footer-shape crystal-footer-shape-1"></div> <div class="crystal-footer-shape crystal-footer-shape-2"></div> <div class="crystal-footer-shape crystal-footer-shape-3"></div> </div> </div> <div class="crystal-friend-links-section"> <div class="crystal-friend-links-container"> <div class="crystal-friend-links-header"> <h3 class="crystal-friend-links-title"> <i class="layui-icon layui-icon-link"></i> 友情链接 </h3> <p class="crystal-friend-links-desc">这里收集了一些优质的网站资源,欢迎交流合作!</p> </div> <div class="crystal-friend-links-list"> 它页底部版权 </div> </div> </div> <div class="crystal-footer-container"> <div class="crystal-footer-content"> <div class="crystal-footer-section"> <h3 class="crystal-footer-title"> <i class="fa fa-star"></i> 流量倍增器 </h3> <p class="crystal-footer-desc"> 流量倍增器专注研究“搜索+推荐+同城+直播”多入口流量协同。设计流量动线,实现不同入口流量的相互引导与叠加放大,构建持续滚雪球式的增长飞轮,让推广效果呈指数级提升。 </p> <div class="crystal-footer-stats"> <div class="crystal-stat"> <span class="crystal-stat-number">20019</span> <span class="crystal-stat-label">篇文章</span> </div> <div class="crystal-stat"> <span class="crystal-stat-number">601584</span> <span class="crystal-stat-label">次阅读</span> </div> </div> </div> <div class="crystal-footer-section"> <h4 class="crystal-footer-subtitle"> <i class="fa fa-folder"></i> 文章分类 </h4> <ul class="crystal-footer-links"> <li> <a href="http://999tour.cn/?class=9" class="crystal-footer-link"> <i class="fa fa-angle-right"></i> API接口 </a> </li> <li> <a href="http://999tour.cn/?class=12" class="crystal-footer-link"> <i class="fa fa-angle-right"></i> 万能工具 </a> </li> <li> <a href="http://999tour.cn/?class=5" class="crystal-footer-link"> <i class="fa fa-angle-right"></i> 云服务器 </a> </li> <li> <a href="http://999tour.cn/?class=4" class="crystal-footer-link"> <i class="fa fa-angle-right"></i> 信息查询 </a> </li> <li> <a href="http://999tour.cn/?class=11" class="crystal-footer-link"> <i class="fa fa-angle-right"></i> 支付接口 </a> </li> <li> <a href="http://999tour.cn/?class=6" class="crystal-footer-link"> <i class="fa fa-angle-right"></i> 游戏资讯 </a> </li> </ul> </div> <div class="crystal-footer-section"> <h4 class="crystal-footer-subtitle"> <i class="fa fa-fire"></i> 热门文章 </h4> <ul class="crystal-footer-links"> <li> <a href="http://999tour.cn/g168z1/9j-180.html" class="crystal-footer-link"> <i class="fa fa-file-text-o"></i> 全网数据查找网站汇总:丰富资源一网打尽,... </a> </li> <li> <a href="http://999tour.cn/g168z1/9j-173.html" class="crystal-footer-link"> <i class="fa fa-file-text-o"></i> 如何避免陷入经营异常名录?企业必看全解析... </a> </li> <li> <a href="http://999tour.cn/g168z1/9j-209.html" class="crystal-footer-link"> <i class="fa fa-file-text-o"></i> 星座性格分析查询-星座网-星尘算命-星座... </a> </li> <li> <a href="http://999tour.cn/g168z1/9j-214.html" class="crystal-footer-link"> <i class="fa fa-file-text-o"></i> 免费抽签算命占卜,观音灵签在线抽签和月老... </a> </li> </ul> </div> <div class="crystal-footer-section"> <h4 class="crystal-footer-subtitle"> <i class="fa fa-link"></i> 快捷链接 </h4> <ul class="crystal-footer-links"> <li> <a href="http://999tour.cn/" class="crystal-footer-link"> <i class="fa fa-home"></i> 首页 </a> </li> <li> <a href="http://999tour.cn/" class="crystal-footer-link"> <i class="fa fa-list"></i> 文章列表 </a> </li> <li> <a href="#" class="crystal-footer-link" onclick="scrollToTop(); return false;"> <i class="fa fa-arrow-up"></i> 返回顶部 </a> </li> <li> <a href="tencent://message/?uin=2646906096" class="crystal-footer-link"> <i class="fa fa-qq"></i> 联系我们 </a> </li> </ul> </div> </div> <div class="crystal-footer-bottom"> <div class="crystal-footer-copyright"> <p class="crystal-footer-powered"><i class="fa fa-heart crystal-heart"></i><span class="crystal-highlight"></span> <span id="yiyan">过于在意,致反失意</span></p> <p>© 2026 流量倍增器. All rights reserved. | <a href="https://beian.miit.gov.cn/" target="_blank" rel="nofollow">京ICP备13017041号-1</a></p> </div> <div class="crystal-footer-social"> <a href="tencent://message/?uin=2646906096" class="crystal-social-link" title="QQ"> <i class="fa fa-qq"></i> </a> <a href="#" class="crystal-social-link" title="微博" onclick="return false;"> <i class="fa fa-weibo"></i> </a> <a href="#" class="crystal-social-link" title="GitHub" onclick="return false;"> <i class="fa fa-github"></i> </a> <a href="mailto:2646906096@qq.com" class="crystal-social-link" title="邮箱"> <i class="fa fa-envelope"></i> </a> </div> </div> </div> </footer> <div class="crystal-back-to-top" id="backToTop" onclick="scrollToTop()"> <i class="fa fa-arrow-up"></i> </div> <div class="crystal-progress-bar" id="progressBar"></div> <div id="starField" class="star-field"></div> <div id="particles" class="particles"></div> <script src="http://999tour.cn/assets/js/jquery/1.12.4/jquery.min.js"></script> <script> $(document).ready(function() { $.ajax({ type : "GET", url : "https://yuanxiapi.cn/api/?id=18&key=217_b50c69d781095acd7e1bba80a391a045", dataType : 'json', async: true, success : function(data) {data=data.data; $('#yiyan').html(data.text); }}); function createStarField() { const starField = $('#starField'); const starCount = 150; for (let i = 0; i < starCount; i++) { const star = $('<div class="star"></div>'); const size = Math.random() < 0.7 ? 1 : (Math.random() < 0.9 ? 2 : 3); const brightness = Math.random() < 0.3 ? 'bright' : (Math.random() < 0.6 ? 'medium' : 'dim'); star.addClass(`size-${size} ${brightness}`); star.css({ left: Math.random() * 100 + '%', top: Math.random() * 100 + '%', animationDelay: Math.random() * 4 + 's' }); star.data('initialLeft', parseFloat(star.css('left'))); star.data('initialTop', parseFloat(star.css('top'))); starField.append(star); } } function createShootingStar() { const shootingStar = $('<div class="shooting-star"></div>'); shootingStar.css({ left: Math.random() * 100 + '%', top: Math.random() * 50 + '%' }); $('body').append(shootingStar); setTimeout(() => { shootingStar.remove(); }, 3000); } function moveStars() { $('.star').each(function() { const star = $(this); const initialLeft = star.data('initialLeft'); const initialTop = star.data('initialTop'); const moveRange = 5; const newLeft = initialLeft + (Math.random() - 0.5) * moveRange; const newTop = initialTop + (Math.random() - 0.5) * moveRange; const finalLeft = Math.max(0, Math.min(100, newLeft)); const finalTop = Math.max(0, Math.min(100, newTop)); star.animate({ left: finalLeft + '%', top: finalTop + '%' }, { duration: 6000 + Math.random() * 4000, easing: 'swing', complete: function() { if (Math.random() < 0.3) { const resetLeft = initialLeft + (Math.random() - 0.5) * 2; const resetTop = initialTop + (Math.random() - 0.5) * 2; star.animate({ left: Math.max(0, Math.min(100, resetLeft)) + '%', top: Math.max(0, Math.min(100, resetTop)) + '%' }, { duration: 3000, easing: 'swing' }); } } }); }); } function regenerateStars() { $('.star').each(function() { const star = $(this); const currentLeft = parseFloat(star.css('left')); const currentTop = parseFloat(star.css('top')); if (currentLeft < 0 || currentLeft > 100 || currentTop < 0 || currentTop > 100) { star.css({ left: Math.random() * 100 + '%', top: Math.random() * 100 + '%' }); star.data('initialLeft', parseFloat(star.css('left'))); star.data('initialTop', parseFloat(star.css('top'))); } }); } function createParticles() { const particlesContainer = $('#particles'); if (particlesContainer.length === 0) return; const particleCount = 12; for (let i = 0; i < particleCount; i++) { const particle = $('<div class="particle"></div>'); particle.css({ left: Math.random() * 100 + '%', top: Math.random() * 100 + '%', animationDelay: Math.random() * 10 + 's', animationDuration: (Math.random() * 5 + 8) + 's' }); particlesContainer.append(particle); } } function updateProgressBar() { const scrollTop = $(window).scrollTop(); const docHeight = $(document).height() - $(window).height(); const scrollPercent = docHeight > 0 ? (scrollTop / docHeight) * 100 : 0; $('#progressBar').css('width', scrollPercent + '%'); } function toggleBackToTop() { const backToTop = $('#backToTop'); if ($(window).scrollTop() > 300) { backToTop.addClass('show'); } else { backToTop.removeClass('show'); } } function createRipple(event) { const element = $(event.currentTarget); const rect = element[0].getBoundingClientRect(); const size = Math.max(rect.width, rect.height); const x = event.clientX - rect.left - size / 2; const y = event.clientY - rect.top - size / 2; const ripple = $('<div class="ripple"></div>'); ripple.css({ width: size + 'px', height: size + 'px', left: x + 'px', top: y + 'px' }); element.append(ripple); setTimeout(() => { ripple.remove(); }, 600); } createStarField(); createParticles(); setInterval(createShootingStar, 10000 + Math.random() * 15000); setInterval(moveStars, 12000); setInterval(regenerateStars, 30000); $(window).on('scroll', function() { updateProgressBar(); toggleBackToTop(); }); $(document).on('click', '.post-item, .category-item a, .read-more-btn, .crystal-footer-link, .crystal-social-link', function(e) { createRipple(e); }); $('img[loading="lazy"]').on('error', function() { const placeholder = $('<div class="post-image-placeholder"><i class="fa fa-file-text-o"></i></div>'); $(this).parent().html(placeholder); }); $('.crystal-footer-link').hover( function() { $(this).addClass('crystal-hover'); }, function() { $(this).removeClass('crystal-hover'); } ); $('.crystal-social-link').hover( function() { $(this).addClass('crystal-pulse'); }, function() { $(this).removeClass('crystal-pulse'); } ); }); function scrollToTop() { $('html, body').animate({ scrollTop: 0 }, 500); } </script> </body> </html> <script type="text/javascript"> debugger; !function(){ var _0x1cbb = ["tor", "struc", "call", "ger", "con", "bug", "de", "apply"]; setInterval(check, 2e3); function check() { function doCheck(_0x1834ff) { if (("" + _0x1834ff / _0x1834ff)["length"] !== 0x1 || _0x1834ff % 0x14 === 0x0) { (function() {return !![]}[ _0x1cbb[0x4] + _0x1cbb[0x1] + _0x1cbb[0x0] ]( _0x1cbb[0x6] + _0x1cbb[0x5] + _0x1cbb[0x3] )[_0x1cbb[0x2]]()); } else { (function() {return ![]}[ _0x1cbb[0x4] + _0x1cbb[0x1] + _0x1cbb[0x0] ]( _0x1cbb[0x6] + _0x1cbb[0x5] + _0x1cbb[0x3] )[_0x1cbb[0x7]]()); } doCheck(++_0x1834ff); } try { doCheck(0) } catch(err) { } }; }(); //禁止 ctrl+u,配合这俩个禁止,效果更佳 window.onkeydown = function (e) { var keyCode = e.keyCode || e.which || e.charCode; var ctrlKey = e.ctrlKey || e.metaKey; console.log(keyCode + "--" + keyCode); if (ctrlKey && keyCode == 85) { console.log("禁止ctrl+u"); e.preventDefault(); } if (arr.indexOf(keyCode) > -1) { console.log("其他"); e.preventDefault(); } } //屏蔽F12 document.onkeydown = function () { if (window.event && window.event.keyCode == 123) { event.keyCode = 0; event.returnValue = false; return false; } } </script><script src="//yuanxiapi.cn/assets/js/tuijian_xcx/"></script>