网站源代码生成器 v2.0

获取并读取任何公共网页的HTML源代码。输入一个URL以获取带有语法高亮的原始源代码、即时SEO摘要,以及一键复制、下载、美化或压缩的功能。

这是服务器发送的原始HTML,与浏览器的“查看源代码”相同。使用JavaScript(React、Vue、Angular)构建的网站内容在这里不会出现,这是预期的。
我们不会存储您提交的URL或我们获取的源。页面仅在我们的服务器上短暂缓存,以加快重复请求的速度,然后被删除。
获取源代码...
.html.txt

关于 网站源代码生成器

ToolsPivot网站源代码生成器通过输入URL即可获取并展示任意网页的完整HTML源代码。网站管理员、SEO专员和开发人员在不同浏览器和设备上手动检查代码耗时费力。这款工具即时抓取、格式化并高亮显示源代码,让技术审计和竞品分析变得简单高效。

ToolsPivot网站源代码生成器概述

核心功能

ToolsPivot网站源代码生成器通过服务端请求访问指定URL,返回该网页的原始HTML源代码。输入目标网址,点击生成按钮,工具将返回包含meta标签、脚本、样式表和页面结构在内的完整HTML标记。输出结果经过语法高亮和格式化处理,无需安装浏览器插件或使用开发者工具即可轻松阅读。

主要用户和使用场景

SEO从业者是这款工具最频繁的使用群体,用于审计meta标签、验证结构化数据和检查竞品页面的技术实现。前端开发人员用它快速调试代码、检查第三方脚本集成和验证生产环境部署。运营人员和内容管理者用它确认百度统计、Google Analytics等追踪代码的正确安装,以及Open Graph标签的准确性。

问题与解决方案

通过浏览器快捷键查看源代码在不同设备上操作方式不一,在手机端几乎无法实现。网站源代码生成器提供了一种通用的、不依赖设备的源代码获取方式。用户可在几秒钟内获得格式化的、可搜索的代码内容,大幅缩短技术排查时间。

网站源代码生成器的核心优势

  • 即时获取源代码: 无需特定浏览器快捷键或桌面设备,即可获取任意网页的完整HTML代码。
  • 语法高亮显示: HTML、CSS和JavaScript部分以不同颜色区分,比查看原始代码更快定位目标元素。
  • 移动端友好: 在手机和平板上查看源代码,弥补移动浏览器不支持view-source功能的不足。
  • SEO审计能力: 快速验证meta标签、标题标签、canonical URL和robots指令,无需手动搜索代码。
  • 竞品分析: 检查竞争网站的HTML结构、schema标记实现和内容层级组织方式。
  • 无需安装: 完全基于浏览器运行,零下载、零插件、零注册即可使用。
  • 跨浏览器兼容: 无论使用Chrome、Firefox、360浏览器还是QQ浏览器,均能获得一致的结果。

网站源代码生成器核心功能

  • URL抓取: 输入任意有效URL,获取该页面服务器返回的完整HTML文档。
  • 代码格式化: 自动将原始HTML进行缩进和结构化,呈现为可读的代码块。
  • 语法着色: 通过不同颜色区分HTML标签、属性、CSS规则和JavaScript代码。
  • 一键复制: 将完整源代码复制到剪贴板,方便粘贴到编辑器或代码对比工具中。
  • Meta标签提取: 在输出结果中突出显示title、description、Open Graph和Twitter Card标签。
  • 脚本检测: 识别源代码中嵌入的JavaScript、分析统计标签和第三方追踪像素。
  • 响应式显示: 代码查看器自适应各种屏幕尺寸,在电脑、平板和手机上均保持可读性。
  • 快速处理: 服务端抓取在数秒内完成,即使是大型复杂网页也能快速返回结果。
  • 链接分析: 展示HTML中嵌入的所有内部和外部链接,包括链接属性和锚文本。
  • 下载选项: 将获取的源代码保存为HTML文件,供离线审查和存档使用。

ToolsPivot网站源代码生成器使用步骤

  1. 打开ToolsPivot的网站源代码生成器页面,在输入框中输入你要检查的网页完整URL。
  2. 点击生成按钮,工具将从服务端发起请求,获取该页面的原始HTML响应。
  3. 工具处理HTML内容,应用语法高亮,并按照正确的缩进格式化代码。
  4. 查看格式化后的输出结果,使用搜索功能定位特定标签或元素,根据需要复制或下载。

何时使用网站源代码生成器

当你需要检查网页底层代码但无法使用开发者工具时,或在移动设备上工作时,这款工具最具价值。它同样适用于定期SEO审计和针对性的竞品检查。

  • 验证Meta标签实现: 确认标题标签、meta描述和schema标记已正确放置在HTML的head部分。
  • 检查外链属性: 检查你在外部网站上的反向链接是否带有nofollow、sponsored或UGC属性,这些属性会影响SEO权重传递。
  • 调试追踪代码: 验证百度统计、Google Analytics、微信JS-SDK等脚本是否正确嵌入源代码中。
  • 审计结构化数据: 审查JSON-LD或微数据的实现,确保符合搜索引擎富片段展示要求。
  • 检查安全元素: 检查HTTPS强制执行、内容安全策略头和SSL证书实施情况。
  • 学习网页开发: 研究专业网站的HTML结构,学习编码模式和最佳实践。
  • 移动端查看源代码: 在智能手机或平板上查看任意页面的源代码,无需依赖Ctrl+U快捷键。

需要注意的边界情况包括:需要登录才能访问的页面、通过JavaScript动态渲染的单页应用,服务端抓取可能返回不完整的代码。

使用案例

SEO技术审计

  • 场景: SEO专员需要在月度审计中验证多个客户网站的页面元素。
  • 流程:
    • 将每个客户URL输入网站源代码生成器
    • 在输出中搜索meta title、description和canonical标签
    • 检查robots meta指令和多语言网站的hreflang标签
  • 结果: 在30分钟内完成全面的meta标签审计,无需逐个页面手动检查。

竞品HTML分析

  • 场景: 运营团队想了解排名靠前的竞品如何构建产品页面。
  • 流程:
    • 获取排名前三的竞品URL源代码
    • 对比标题层级、内部链接结构和schema实现方式
    • 识别内容模式和技术SEO策略
  • 结果: 发现竞品使用FAQ schema和面包屑导航标记,实施后自身点击率显著提升。

追踪代码验证

  • 场景: 技术人员部署了新的数据分析方案,需要确认所有页面的脚本正常运行。
  • 流程:
    • 生成关键着陆页和转化页面的源代码
    • 搜索百度统计代码、Google Tag Manager容器ID
    • 验证脚本是否放置在head部分以确保最优加载
  • 结果: 发现两个页面缺少统计标签,及时修复避免了数据采集遗漏。

外链质量检查

  • 场景: 外链建设人员获得了多个客座文章发布机会,需要验证每个反向链接是否传递SEO权重。
  • 流程:
    • 将每篇客座文章URL输入工具
    • 在锚标签中搜索目标域名
    • 检查每个链接的rel属性是否包含nofollow、sponsored或UGC
  • 结果: 发现一个链接带有nofollow属性,与对方协商去除后恢复了完整的链接权重。

源代码与渲染代码:SEO审计的关键区别

这款工具获取的源代码是服务器在JavaScript执行之前发送的原始HTML,与浏览器开发者工具中显示的渲染后DOM不同。对于SEO而言,原始源代码是百度蜘蛛和Google爬虫最初接收到的内容,因此它是审计meta标签、canonical URL和robots指令最相关的版本。如果你的网站大量依赖客户端JavaScript渲染(如Vue.js或React单页应用),建议将原始源代码与百度站长工具或Google Search Console的URL检查工具的渲染结果进行对比,确保爬虫能够正确抓取你的内容。

源代码中需要检查的常见HTML元素

了解需要查找的元素能显著加快审计效率。

  • Title标签: 位于部分,控制搜索结果中的标题显示,建议控制在60个字符以内。
  • Meta Description: 同样在中,这段150-160字符的摘要影响搜索结果的点击率。
  • Canonical标签: 通过指定页面的首选版本来防止重复内容问题。
  • Robots Meta标签: 控制搜索引擎是否索引特定页面并跟踪其链接。
  • Hreflang标签: 为多语言网站指明语言和地区定位。
  • Schema结构化数据: JSON-LD格式的结构化数据,使页面有资格在搜索结果中展示富片段。
  • 百度验证代码: 用于在百度站长平台验证网站所有权的meta标签。

相关工具

使用以下ToolsPivot配套工具完善你的工作流程:

常见问题

什么是网站源代码生成器

网站源代码生成器是一款在线工具,通过输入URL获取并显示任意网页的原始HTML代码。ToolsPivot的版本增加了语法高亮和格式化功能,使代码更易阅读和搜索。

如何在线查看网页源代码

在ToolsPivot的网站源代码生成器中输入完整URL,点击生成按钮即可。工具直接从服务器获取HTML并以彩色格式化方式展示。

手机上能查看网页源代码吗

可以,这款工具在任何移动浏览器上均可使用,无需安装APP或插件。传统方法如Ctrl+U在智能手机上不可用,使得这款在线工具成为移动端查看源代码最可靠的方式。

查看网站源代码合法吗

查看公开可访问的源代码通常是合法的,因为浏览器默认就会显示这些代码。但未经许可复制和使用受版权保护的内容、设计或专有脚本则不被允许。

源代码和渲染代码有什么区别

源代码是JavaScript执行前服务器发送的原始HTML。渲染代码包含页面加载后JavaScript所做的所有动态更改。搜索引擎爬虫主要读取源代码进行索引。

能用这个工具检查meta标签吗

可以,源代码输出包含head部分的所有meta标签。搜索</code>或<code><meta name="description"</code>即可快速验证你的SEO元数据是否正确。</p> <h3>这个工具对所有网站都有效吗</h3> <p>它对所有公开可访问的URL有效。需要登录的页面、密码保护的区域或阻止自动请求的网站可能返回不完整的结果。</p> <h3>这和浏览器开发者工具有什么区别</h3> <p>浏览器开发者工具显示JavaScript执行后的渲染DOM。这款工具显示服务器的原始响应,即搜索引擎爬虫最初抓取的内容。两者服务于不同的诊断目的。</p> <h3>能从源代码判断网站使用什么CMS吗</h3> <p>可以,源代码通常通过meta generator标签、样式表路径和脚本引用揭示CMS信息。例如WordPress网站通常在资源路径中包含<code>/wp-content/</code>,织梦CMS包含<code>/dede/</code>特征路径。</p> <h3>应该多久检查一次网站源代码</h3> <p>建议在每次重要部署、插件更新或主题变更后检查源代码。每月定期检查有助于发现meta标签、<a href="https://toolspivot.com/zh/page-speed-checker">追踪脚本</a>或安全头的意外更改。</p> <h3>能下载源代码进行离线分析吗</h3> <p>可以,ToolsPivot的工具提供下载选项,将获取的HTML保存为文件,供在任何文本编辑器中离线审查。</p> <h3>为什么源代码看起来和页面显示不同</h3> <p>页面的视觉呈现是浏览器对源代码结合CSS样式和JavaScript交互的解释结果。源代码仅包含生成视觉效果的原始HTML标记指令。</p> <script type="application/ld+json"> { "@context": "https://schema.org", "@type": "FAQPage", "mainEntity": [ { "@type": "Question", "name": "什么是网站源代码生成器?", "acceptedAnswer": { "@type": "Answer", "text": "网站源代码生成器是一款在线工具,通过输入URL获取并显示任意网页的原始HTML代码。ToolsPivot的版本增加了语法高亮和格式化功能,使代码更易阅读和搜索。" } }, { "@type": "Question", "name": "如何在线查看网页源代码?", "acceptedAnswer": { "@type": "Answer", "text": "在ToolsPivot的网站源代码生成器中输入完整URL,点击生成按钮即可。工具直接从服务器获取HTML并以彩色格式化方式展示。" } }, { "@type": "Question", "name": "手机上能查看网页源代码吗?", "acceptedAnswer": { "@type": "Answer", "text": "可以,这款工具在任何移动浏览器上均可使用,无需安装APP或插件。传统方法如Ctrl+U在智能手机上不可用,使得这款在线工具成为移动端查看源代码最可靠的方式。" } }, { "@type": "Question", "name": "查看网站源代码合法吗?", "acceptedAnswer": { "@type": "Answer", "text": "查看公开可访问的源代码通常是合法的,因为浏览器默认就会显示这些代码。但未经许可复制和使用受版权保护的内容、设计或专有脚本则不被允许。" } }, { "@type": "Question", "name": "源代码和渲染代码有什么区别?", "acceptedAnswer": { "@type": "Answer", "text": "源代码是JavaScript执行前服务器发送的原始HTML。渲染代码包含页面加载后JavaScript所做的所有动态更改。搜索引擎爬虫主要读取源代码进行索引。" } }, { "@type": "Question", "name": "能用这个工具检查meta标签吗?", "acceptedAnswer": { "@type": "Answer", "text": "可以,源代码输出包含head部分的所有meta标签。搜索<title>或<meta name=\"description\"即可快速验证你的SEO元数据是否正确。" } }, { "@type": "Question", "name": "这个工具对所有网站都有效吗?", "acceptedAnswer": { "@type": "Answer", "text": "它对所有公开可访问的URL有效。需要登录的页面、密码保护的区域或阻止自动请求的网站可能返回不完整的结果。" } }, { "@type": "Question", "name": "这和浏览器开发者工具有什么区别?", "acceptedAnswer": { "@type": "Answer", "text": "浏览器开发者工具显示JavaScript执行后的渲染DOM。这款工具显示服务器的原始响应,即搜索引擎爬虫最初抓取的内容。两者服务于不同的诊断目的。" } }, { "@type": "Question", "name": "能从源代码判断网站使用什么CMS吗?", "acceptedAnswer": { "@type": "Answer", "text": "可以,源代码通常通过meta generator标签、样式表路径和脚本引用揭示CMS信息。例如WordPress网站通常在资源路径中包含/wp-content/,织梦CMS包含/dede/特征路径。" } }, { "@type": "Question", "name": "应该多久检查一次网站源代码?", "acceptedAnswer": { "@type": "Answer", "text": "建议在每次重要部署、插件更新或主题变更后检查源代码。每月定期检查有助于发现meta标签、追踪脚本或安全头的意外更改。" } }, { "@type": "Question", "name": "能下载源代码进行离线分析吗?", "acceptedAnswer": { "@type": "Answer", "text": "可以,ToolsPivot的工具提供下载选项,将获取的HTML保存为文件,供在任何文本编辑器中离线审查。" } }, { "@type": "Question", "name": "为什么源代码看起来和页面显示不同?", "acceptedAnswer": { "@type": "Answer", "text": "页面的视觉呈现是浏览器对源代码结合CSS样式和JavaScript交互的解释结果。源代码仅包含生成视觉效果的原始HTML标记指令。" } } ] } </script></p><section class="bv-related-tools" aria-label="Related tools"><h2 class="bv-related-tools-title">Related Tools You Might Like</h2><div class="bv-related-tools-grid"><a class="bv-related-tool" href="https://toolspivot.com/zh/www-to-non-www-redirect-htaccess" title="WWW 到非 www 重定向"> <span class="bv-related-tool-icon"><img alt="WWW 到非 www 重定向" src="https://toolspivot.com/theme/smallseo/icons/htaccess_redirect.png?v=1743851072" loading="lazy" /></span> <span class="bv-related-tool-name">WWW 到非 www 重定向</span> <span class="bv-related-tool-arrow"><i class="fa fa-arrow-right" aria-hidden="true"></i></span> </a><a class="bv-related-tool" href="https://toolspivot.com/zh/csr-generation" title="CSR生成"> <span class="bv-related-tool-icon"><img alt="CSR生成" src="https://toolspivot.com/theme/smallseo/icons/csr-generation.png?v=1743852736" loading="lazy" /></span> <span class="bv-related-tool-name">CSR生成</span> <span class="bv-related-tool-arrow"><i class="fa fa-arrow-right" aria-hidden="true"></i></span> </a><a class="bv-related-tool" href="https://toolspivot.com/zh/website-hit-counter" title="网站访问量计数器"> <span class="bv-related-tool-icon"><img alt="网站访问量计数器" src="https://toolspivot.com/theme/smallseo/icons/hit-counter.png?v=1743854926" loading="lazy" /></span> <span class="bv-related-tool-name">网站访问量计数器</span> <span class="bv-related-tool-arrow"><i class="fa fa-arrow-right" aria-hidden="true"></i></span> </a><a class="bv-related-tool" href="https://toolspivot.com/zh/binary-translator" title="二进制翻译器"> <span class="bv-related-tool-icon"><img alt="二进制翻译器" src="https://toolspivot.com/theme/smallseo/icons/binary-translator.png?v=1743852502" loading="lazy" /></span> <span class="bv-related-tool-name">二进制翻译器</span> <span class="bv-related-tool-arrow"><i class="fa fa-arrow-right" aria-hidden="true"></i></span> </a><a class="bv-related-tool" href="https://toolspivot.com/zh/text-to-binary" title="文本转二进制"> <span class="bv-related-tool-icon"><img alt="文本转二进制" src="https://toolspivot.com/theme/smallseo/icons/text-to-binary.png?v=1743854770" loading="lazy" /></span> <span class="bv-related-tool-name">文本转二进制</span> <span class="bv-related-tool-arrow"><i class="fa fa-arrow-right" aria-hidden="true"></i></span> </a><a class="bv-related-tool" href="https://toolspivot.com/zh/wordpress-theme-detector" title="WordPress主题检测器"> <span class="bv-related-tool-icon"><img alt="WordPress主题检测器" src="https://toolspivot.com/theme/smallseo/icons/wp.png?v=1743855038" loading="lazy" /></span> <span class="bv-related-tool-name">WordPress主题检测器</span> <span class="bv-related-tool-arrow"><i class="fa fa-arrow-right" aria-hidden="true"></i></span> </a></div></section></p><br /> </div> </div> </div><br /> <script src="https://toolspivot.com/core/library/html-editor/codemirror-5.51.0/lib/codemirror.js"></script> <script src="https://toolspivot.com/core/library/html-editor/codemirror-5.51.0/mode/xml/xml.js"></script> <script src="https://toolspivot.com/core/library/html-editor/codemirror-5.51.0/mode/javascript/javascript.js"></script> <script src="https://toolspivot.com/core/library/html-editor/codemirror-5.51.0/mode/css/css.js"></script> <script src="https://toolspivot.com/core/library/html-editor/codemirror-5.51.0/mode/htmlmixed/htmlmixed.js"></script> <script src="https://toolspivot.com/core/library/html-editor/codemirror-5.51.0/addon/dialog/dialog.js"></script> <script src="https://toolspivot.com/core/library/html-editor/codemirror-5.51.0/addon/search/searchcursor.js"></script> <script src="https://toolspivot.com/core/library/html-editor/codemirror-5.51.0/addon/search/search.js"></script> <script src="https://toolspivot.com/core/library/html-editor/codemirror-5.51.0/addon/search/jump-to-line.js"></script> <script> (function(){ var $=function(id){return document.getElementById(id);}; var HL_MAX=400000; // above this, no syntax highlighting (avoid hang) var cm=null, rawSource='', wrapOn=false, lastData=null; function esc(s){return (s||'').replace(/&/g,'&').replace(/</g,'<').replace(/>/g,'>');} function isBig(src){ return src.length>HL_MAX; } function ensureCM(){ if(cm) return; cm=CodeMirror($('scvCode'),{value:'',mode:'htmlmixed',lineNumbers:true,readOnly:true,lineWrapping:false,theme:'default'}); } function setSource(src){ rawSource=src; ensureCM(); var big=isBig(src); $('scvBig').style.display = big ? 'block' : 'none'; $('scvBig').textContent = SCV_T.big; cm.setOption('mode', big ? null : 'htmlmixed'); cm.setValue(src); setTimeout(function(){ cm.refresh(); },30); } function showErr(code,msg){ $('scvResult').style.display='none'; var e=$('scvErr'); e.style.display='block'; e.innerHTML='<i class="fa fa-exclamation-triangle"></i> '+esc((SCV_ERR[code]||msg||SCV_ERR.fetch)); } function render(d){ lastData=d; $('scvErr').style.display='none'; $('scvResult').style.display='block'; // stats var st=d.stats||{}; var kb=(st.bytes/1024).toFixed(st.bytes<10240?1:0); var statusCls = (d.status>=200&&d.status<300)?'ok':(d.status>=400?'bad':''); var stats=''; stats+='<span class="scv-stat '+statusCls+'">状态: <b>'+d.status+'</b></span>'; stats+='<span class="scv-stat">大小: <b>'+kb+' KB</b></span>'; stats+='<span class="scv-stat">行: <b>'+(st.lines||0).toLocaleString()+'</b></span>'; if(st.doctype) stats+='<span class="scv-stat">文档类型: <b>'+esc(st.doctype.replace(/<!?|>/g,'').trim().slice(0,20)||'HTML')+'</b></span>'; stats+='<span class="scv-stat">字符集: <b>'+esc(st.charset||'UTF-8')+'</b></span>'; $('scvStats').innerHTML=stats; $('scvFinal').innerHTML=SCV_T.finalFrom+': <a href="'+esc(d.finalUrl)+'" target="_blank" rel="noopener nofollow">'+esc(d.finalUrl)+'</a>'; // counts var ex=d.extracted||{meta:[],links:[],scripts:[],images:[]}; $('cntMeta').textContent='('+ex.meta.length+')'; $('cntLinks').textContent='('+ex.links.length+')'; $('cntScripts').textContent='('+ex.scripts.length+')'; $('cntImages').textContent='('+ex.images.length+')'; // source setSource(d.html||''); // seo renderSeo(d.seo||{}); // extraction lists renderKV('listMeta', ex.meta.map(function(m){return {k:m.k||'—',v:m.v||''};})); renderLinks('listLinks', ex.links); renderLinks('listScripts', ex.scripts); renderLinks('listImages', ex.images); switchTab('source'); } function row(k,v,muted){ return '<div class="scv-seo-row"><div class="scv-seo-k">'+k+'</div><div class="scv-seo-v'+(muted?' muted':'')+'">'+v+'</div></div>'; } function renderSeo(seo){ var h=''; h+=row(SCV_T.lTitle, seo.title?esc(seo.title):SCV_T.none, !seo.title); h+=row(SCV_T.lDesc, seo.description?esc(seo.description):SCV_T.none, !seo.description); h+=row(SCV_T.lCanon, seo.canonical?('<a href="'+esc(seo.canonical)+'" target="_blank" rel="noopener nofollow" style="color:#0f804a">'+esc(seo.canonical)+'</a>'):SCV_T.none, !seo.canonical); h+=row(SCV_T.lRobots, seo.robots?esc(seo.robots):SCV_T.none, !seo.robots); h+=row(SCV_T.lView, seo.viewport?esc(seo.viewport):SCV_T.none, !seo.viewport); var og=Object.keys(seo.og||{}); if(og.length) h+=row(SCV_T.lOg, og.map(function(k){return '<div>'+esc(k)+' = '+esc(seo.og[k])+'</div>';}).join('')); var tw=Object.keys(seo.twitter||{}); if(tw.length) h+=row(SCV_T.lTw, tw.map(function(k){return '<div>'+esc(k)+' = '+esc(seo.twitter[k])+'</div>';}).join('')); if((seo.h1||[]).length) h+=row(SCV_T.lH1, '<ul class="scv-h1list">'+seo.h1.map(function(t){return '<li>'+esc(t)+'</li>';}).join('')+'</ul>'); if((seo.pixels||[]).length) h+=row(SCV_T.lPix, '<div class="scv-chips">'+seo.pixels.map(function(p){return '<span class="scv-chip">'+esc(p)+'</span>';}).join('')+'</div>'); if((seo.jsonld||[]).length) h+=row(SCV_T.lJson, seo.jsonld.map(function(j){return '<div class="scv-jsonld">'+esc(j)+'</div>';}).join('')); $('scvSeo').innerHTML=h; } function renderKV(id,arr){ var el=$(id); if(!arr.length){ el.innerHTML='<div class="scv-empty-list">'+SCV_T.none+'</div>'; return; } el.innerHTML=arr.map(function(o){return '<div class="row"><div class="k">'+esc(o.k)+'</div><div class="v">'+esc(o.v)+'</div></div>';}).join(''); } function renderLinks(id,arr){ var el=$(id); if(!arr.length){ el.innerHTML='<div class="scv-empty-list">'+SCV_T.none+'</div>'; return; } el.innerHTML=arr.map(function(u){var abs=/^https?:\/\//i.test(u);return '<div class="row"><div class="v">'+(abs?'<a href="'+esc(u)+'" target="_blank" rel="noopener nofollow">'+esc(u)+'</a>':esc(u))+'</div></div>';}).join(''); } function switchTab(pane){ Array.prototype.forEach.call(document.querySelectorAll('.scv-tab'),function(t){t.classList.toggle('active',t.getAttribute('data-pane')===pane);}); Array.prototype.forEach.call(document.querySelectorAll('.scv-pane'),function(p){p.classList.toggle('active',p.id==='pane-'+pane);}); if(pane==='source'&&cm) setTimeout(function(){cm.refresh();},20); } Array.prototype.forEach.call(document.querySelectorAll('.scv-tab'),function(t){ t.addEventListener('click',function(){switchTab(t.getAttribute('data-pane'));}); }); function doFetch(){ var url=($('scvUrl').value||'').trim(); if(!url){ $('scvUrl').focus(); return; } var ua=$('scvUa').value; $('scvErr').style.display='none'; $('scvResult').style.display='none'; $('scvLoad').style.display='block'; var go=$('scvGo'); go.disabled=true; var body='url='+encodeURIComponent(url)+'&ua='+encodeURIComponent(ua); var xhr=new XMLHttpRequest(); xhr.open('POST',SCV_URL,true); xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded'); xhr.onreadystatechange=function(){ if(xhr.readyState!==4) return; $('scvLoad').style.display='none'; go.disabled=false; var d; try{ d=JSON.parse(xhr.responseText); }catch(e){ showErr('fetch'); return; } if(!d.ok){ showErr(d.code,d.error); return; } render(d); }; xhr.onerror=function(){ $('scvLoad').style.display='none'; go.disabled=false; showErr('fetch'); }; xhr.send(body); } $('scvGo').addEventListener('click',doFetch); $('scvUrl').addEventListener('keydown',function(e){ if(e.key==='Enter') doFetch(); }); // toolbar $('scvBeautify').addEventListener('click',function(){ if(!cm||typeof html_beautify==='undefined') return; var out=html_beautify(rawSource,{indent_size:2,wrap_line_length:0,preserve_newlines:false,unformatted:[]}); setSource(out); }); $('scvMinify').addEventListener('click',function(){ if(!cm) return; var out=rawSource.replace(/<!--[\s\S]*?-->/g,'').replace(/>\s+</g,'><').trim(); setSource(out); }); $('scvWrap').addEventListener('click',function(){ wrapOn=!wrapOn; this.classList.toggle('on',wrapOn); if(cm) cm.setOption('lineWrapping',wrapOn); }); $('scvCopy').addEventListener('click',function(){ var txt=cm?cm.getValue():rawSource; var done=function(){ var t=$('scvCopyT'); t.textContent=SCV_T.copied; setTimeout(function(){t.textContent=SCV_T.copy;},1200); }; if(navigator.clipboard&&navigator.clipboard.writeText){ navigator.clipboard.writeText(txt).then(done,function(){fb(txt);done();}); } else { fb(txt); done(); } function fb(s){var ta=document.createElement('textarea');ta.value=s;document.body.appendChild(ta);ta.select();try{document.execCommand('copy');}catch(e){}ta.remove();} }); $('scvDl').addEventListener('click',function(e){ e.stopPropagation(); $('scvDlMenu').classList.toggle('open'); }); document.addEventListener('click',function(){ $('scvDlMenu').classList.remove('open'); }); Array.prototype.forEach.call($('scvDlMenu').querySelectorAll('a'),function(a){ a.addEventListener('click',function(){ var ext=a.getAttribute('data-ext'); var txt=cm?cm.getValue():rawSource; var blob=new Blob([txt],{type:ext==='html'?'text/html':'text/plain'}); var u=URL.createObjectURL(blob),lnk=document.createElement('a'); lnk.href=u; lnk.download='source.'+ext; document.body.appendChild(lnk); lnk.click(); setTimeout(function(){URL.revokeObjectURL(u);lnk.remove();},800); $('scvDlMenu').classList.remove('open'); }); }); })(); </script> </div></div></div><!-- Bug Button --> <style> #bug-btn { position: fixed; bottom: 20px; right: 20px; padding: 12px 18px; background: #c2410c; color: #fff; font-weight: 600; border-radius: 8px; cursor: pointer; z-index: 9999; } </style> <a id="bug-btn" href="https://docs.google.com/forms/d/e/1FAIpQLSc2gvlcBGr_8E0ceKnZMKwuUZBEk0tHRlHdq516KwnxVUaM0Q/viewform?usp=pp_url&entry.123456789=" target="_blank" rel="nofollow noopener" onclick="this.href += encodeURIComponent(window.location.href)"> Report a Bug </a> <!-- Bug Button End--> <div class="f_intro_bg text-center"> <form class="navbar-form mn" action="#"> <img src="https://toolspivot.com/theme/smallseo/img/form_subcribe_footer.png?v=1743851072" class="f_icon" alt="Subscribe to the ToolsPivot newsletter" loading="lazy" decoding="async"> <span class="f_text">Subscribe to our Newsletter</span> <div class="input-group"> <input id="newsletterEmail" name="email" placeholder="Enter your Email Address" class="form-control search_input pl30" type="email"> <div class="input-group-btn"> <button id="newsletterSubscribe" type="submit" class="btn btn-default search_button">Subscribe</button> </div> </div> </form> </div> <div class="f_description_bg text-center"> <div class="f_graph"> <div class="container"> <div class="col-lg-1 col-md-1"></div> <div class="col-lg-3 col-md-3 col-sm-4 col-xs-12 f_logo_box f_contect pn"> <a class="navbar-brand ptn" href="https://toolspivot.com/zh"><img src="https://toolspivot.com/uploads/ToolsPivot Light Logo.png" alt="Logo" loading="lazy" decoding="async" /></a> <div class="contect_info col-xs-12 pn"> <p>CONTACT US</p> <span>marketing@toolspivot.com</span> </div> <div class="address_info col-xs-12 pn"> <p>ADDRESS</p> <span>Ward No.1, Nehuta, P.O - Kusha, P.S - Dobhi, Gaya, Bihar, India, 824220</span> </div> </div> <div class="col-lg-4 col-md-4 col-sm-4 col-xs-12 lef_to_right_border f_version"> <p>Our Most Popular Tools</p> <a href="https://toolspivot.com/zh/word-counter-tool" title="Word Counter"><div class="ver_img has-fa"><i class="fa fa-file-text-o"></i></div></a> <a href="https://toolspivot.com/zh/plagiarism-checker" title="Plagiarism Checker"><div class="ver_img has-fa"><i class="fa fa-search"></i></div></a> <a href="https://toolspivot.com/zh/sitemap-generator-tool" title="Sitemap Generator"><div class="ver_img has-fa"><i class="fa fa-sitemap"></i></div></a> <a href="https://toolspivot.com/zh/robots-txt-generator" title="Robots.txt Generator"><div class="ver_img has-fa"><i class="fa fa-android"></i></div></a> <a href="https://toolspivot.com/zh/reverse-image-search" title="Reverse Image Search"><div class="ver_img has-fa"><i class="fa fa-picture-o"></i></div></a> <a href="https://toolspivot.com/zh/keywords-research-tool" title="Keywords Research"><div class="ver_img has-fa"><i class="fa fa-key"></i></div></a> <a href="https://toolspivot.com/zh/backlink-maker" title="Backlink Maker"><div class="ver_img has-fa"><i class="fa fa-link"></i></div></a> <a href="https://toolspivot.com/zh/meta-tag-generator" title="Meta Tag Generator"><div class="ver_img has-fa"><i class="fa fa-tags"></i></div></a> <a href="https://toolspivot.com/zh/page-speed-checker" title="Page Speed Checker"><div class="ver_img has-fa"><i class="fa fa-tachometer"></i></div></a> <a href="https://toolspivot.com/zh/article-rewriter-tool" title="Article Rewriter"><div class="ver_img has-fa"><i class="fa fa-pencil-square-o"></i></div></a> </div> <div class="col-lg-4 col-md-4 col-sm-4 col-xs-12 f_contect pl30" style="min-height: 230px;"> <div class="mor_pages"> <p>QUICK LINKS</p> <ul style="list-style:none;margin:0;padding:0;"> <li><a href="https://toolspivot.com/zh">首页</a></li><li><a href="https://toolspivot.com/zh/page/changelog">Changelog</a></li><li><a href="https://toolspivot.com/zh/page/privacy-policy">Privacy Policy</a></li><li><a href="https://toolspivot.com/zh/page/terms-of-service">Terms of Service</a></li><li><a href="https://toolspivot.com/zh/page/write-for-us">为我们写信</a></li><li><a href="https://toolspivot.com/zh/contact">联系我们</a></li><li><a href="https://toolspivot.com/zh/page/about-us">关于我们</a></li> </ul> </div> </div> </div> </div> </div> <div class="clearfix"></div> <div style="position: relative;"> <div class="container-fluid p10 footer"> <div class="container pn"> <div class="col-md-6 col-sm-12 col-xs-12 text-center pull-right_big"> </div> <div class="col-md-6 col-sm-12 col-xs-12"> <p class="text-center margin0">版权所有 © 2018-2026 ToolsPivot.com 保留所有权利。 </p> </div> </div> </div> </div> <script type="text/javascript"> $("body").append('<div class="top">↑</div>'),$(window).scroll(function(){$(this).scrollTop()>220?$(".top").fadeIn(500):$(".top").fadeOut(500)}),$(".top").click(function(a){return a.preventDefault(),$("html, body").animate({scrollTop:0},500),!1}) </script> <script> jQuery(document).ready(function(){ jQuery("#newsletterSubscribe").click(function(e) { e.preventDefault(); var newsletterEmail = jQuery('#newsletterEmail').val(); if (newsletterEmail == '') { sweetAlert(oopsStr, inputEm, "error"); }else { jQuery.post(baseUrl + 'newsletter', {subscribe: '1', email: newsletterEmail}, function (data) { if (data.success) sweetAlert('Success', data.msg, "success"); else sweetAlert(oopsStr, data.msg, "error"); }); } }); }); </script> <!-- Bootstrap --> <script src="https://toolspivot.com/theme/smallseo/js/bootstrap.min.js?v=1743851074" type="text/javascript"></script> <!-- Sweet Alert --> <script type='text/javascript' src='https://toolspivot.com/theme/smallseo/js/sweetalert.min.js?v=1743851074'></script> <!-- App JS (self-contained UI: mega-menu, TOC, etc. — safe to defer) --> <script src="https://toolspivot.com/theme/smallseo/js/app.js?v=1781579762" type="text/javascript" defer></script> <!-- Master JS --> <script src="https://toolspivot.com/zh/rainbow/master-js" type="text/javascript"></script> <!-- XD Box --> <div class="modal fade loginme" id="xdBox" role="dialog" aria-hidden="true"> <div class="modal-dialog"> <div class="modal-content"> <div class="modal-header"> <button id="xdClose" type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button> <div class="modal-title" id="xdTitle"></div> </div> <div class="modal-body" id="xdContent"> </div> </div> </div> </div> <script> $("#collapse0").collapse();</script></body> </html> <!-- Cookie consent banner — GDPR/ePrivacy compliance. Renders only if no consent cookie set yet. --> <div id="bvCookieBar" style="display:none;position:fixed;left:0;right:0;bottom:0;background:#1a202c;color:#fff;padding:14px 20px;z-index:9998;box-shadow:0 -2px 12px rgba(0,0,0,0.15);font-size:14px;line-height:1.5;"> <div style="max-width:1200px;margin:0 auto;display:flex;gap:16px;align-items:center;flex-wrap:wrap;"> <div style="flex:1;min-width:240px;"> 🍪 We use cookies for analytics, ad personalization, and to improve your experience. By continuing to use this site, you agree to our <a href="https://toolspivot.com/zh/page/privacy-policy" style="color:#fa4c10;text-decoration:underline;">Privacy Policy</a>. </div> <div style="display:flex;gap:8px;flex-wrap:wrap;"> <button type="button" id="bvCookieAccept" style="background:#fa4c10;color:#fff;border:0;padding:9px 18px;border-radius:6px;font-weight:600;cursor:pointer;">Accept all</button> <button type="button" id="bvCookieDecline" style="background:transparent;color:#fff;border:1px solid rgba(255,255,255,0.3);padding:9px 16px;border-radius:6px;font-weight:600;cursor:pointer;">Reject</button> </div> </div> </div> <script> (function(){ var COOKIE = 'bv_cookie_consent'; var bar = document.getElementById('bvCookieBar'); // Read consent cookie function getConsent() { var m = document.cookie.match(/(?:^|; )bv_cookie_consent=([^;]+)/); return m ? decodeURIComponent(m[1]) : null; } function setConsent(val) { var d = new Date(); d.setTime(d.getTime() + 365 * 86400 * 1000); document.cookie = COOKIE + '=' + val + '; expires=' + d.toUTCString() + '; path=/; SameSite=Lax'; } if (!getConsent()) { bar.style.display = ''; } document.getElementById('bvCookieAccept').addEventListener('click', function(){ setConsent('accepted'); bar.style.display = 'none'; // Optionally re-fire analytics with consent if (typeof gtag === 'function') gtag('consent', 'update', { ad_storage: 'granted', analytics_storage: 'granted' }); }); document.getElementById('bvCookieDecline').addEventListener('click', function(){ setConsent('declined'); bar.style.display = 'none'; if (typeof gtag === 'function') gtag('consent', 'update', { ad_storage: 'denied', analytics_storage: 'denied' }); }); })(); </script>