当前位置: 首页 > news >正文

【SEO】SEO研究一

目录

自我测试与工具

参考目录


nginx里转发一下

if ($http_user_agent ~* "bot|spider|crawl|slurp|bing|baidu") { proxy_pass http://localhost:26666/renderHtml?url=$request_uri; }

自我测试与工具

10.30.2.7: /docker/puppeteer

const express = require('express'); const puppeteer = require('puppeteer'); const fs = require('fs'); const app = express(); // 通用浏览器启动配置 const launchOptions = { headless: 'new', args: ['--no-sandbox', '--disable-setuid-sandbox'] }; // ========================== // 1. SEO 页面检测 (GET /seoCheck?url=xxx) // ========================== app.get('/seoCheck', async (req, res) => { const { url } = req.query; if (!url) return res.send({ error: '请传入 url 参数' }); try { const browser = await puppeteer.launch(launchOptions); const page = await browser.newPage(); await page.setUserAgent('Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)'); await page.goto(url, { waitUntil: 'networkidle2', timeout: 30000 }); const data = await page.evaluate(() => { const title = document.title || ''; const metaDesc = document.querySelector('meta[name="description"]')?.content || ''; const h1Count = document.querySelectorAll('h1').length; const h1Text = document.querySelector('h1')?.innerText || ''; const imgsNoAlt = document.querySelectorAll('img:not([alt])').length; const textLength = document.body.innerText.length; const canonical = document.querySelector('link[rel="canonical"]')?.href || ''; return { title, metaDesc, h1Count, h1Text, imgsNoAlt, textLength, canonical }; }); await browser.close(); res.json({ success: true, url, seo: data }); } catch (err) { res.json({ success: false, error: err.message }); } }); // ========================== // 2. 渲染完整 HTML (GET /renderHtml?url=xxx) // ========================== app.get('/renderHtml', async (req, res) => { const { url } = req.query; if (!url) return res.send('请传入 url 参数'); try { const browser = await puppeteer.launch(launchOptions); const page = await browser.newPage(); await page.goto(url, { waitUntil: 'networkidle2' }); const html = await page.content(); await browser.close(); res.setHeader('Content-Type', 'text/html; charset=utf-8'); res.send(html); } catch (err) { res.send('渲染失败:' + err.message); } }); // ========================== // 3. 生成 sitemap.xml (GET /sitemap?url=xxx) // ========================== app.get('/sitemap', async (req, res) => { const { url } = req.query; if (!url) return res.send('请传入 url 参数'); try { const browser = await puppeteer.launch(launchOptions); const page = await browser.newPage(); await page.goto(url, { waitUntil: 'networkidle2' }); const links = await page.evaluate(() => { return Array.from(document.querySelectorAll('a')) .map(a => a.href) .filter(href => href.startsWith(location.origin)); }); const uniqueLinks = [...new Set(links)]; await browser.close(); let sitemap = `<?xml version="1.0" encoding="UTF-8"?>\n<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">\n`; uniqueLinks.forEach(link => { sitemap += ` <url><loc>${link}</loc></url>\n`; }); sitemap += `</urlset>`; res.setHeader('Content-Type', 'application/xml'); res.send(sitemap); } catch (err) { res.send('生成失败:' + err.message); } }); // 启动服务 const PORT = 26666; app.listen(PORT, () => { console.log('SEO 服务已启动:http://localhost:' + PORT); console.log('使用方式:'); console.log('1. SEO检测: /seoCheck?url=网址'); console.log('2. 渲染HTML: /renderHtml?url=网址'); console.log('3. 生成地图: /sitemap?url=网址'); });
http://localhost:26666/seoCheck?url=https://你的网址.com http://localhost:26666/renderHtml?url=https://你的网址.com http://localhost:26666/sitemap?url=https://你的网址.com

10.30.2.7:35105/seoCheck?url=https://www.gbcom.com.cn

上海寰创通信科技股份有限公司

参考目录

能否被 SEO

【SEO】看一个网站能否被SEO-CSDN博客

Vue3 SPA 支持 SEO 终极总结

https://blog.csdn.net/dualvencsdn/article/details/161767212

http://www.rkmt.cn/news/1480193.html

相关文章:

  • 别再只用SE和CBAM了!手把手教你用PyTorch复现CVPR2021的Coordinate Attention(附完整代码)
  • MOSFET驱动电路设计:寄生电感影响分析与实战优化
  • 终极HS2-HF Patch指南:如何一键解决Honey Select 2兼容性问题
  • 2026年国内硅胶板/黑色耐磨硅胶板/白色硅胶板/发泡硅胶板/抗撕拉硅胶板头部厂家实测排行 精准匹配全场景需求 推荐河间市鑫锦邦密封材料有限公司 - 奔跑123
  • 3分钟掌握音乐自由:ncmdump终极解密转换完整教程
  • KMS_VL_ALL_AIO技术深度解析:Windows与Office批量激活完整方案
  • 抖音批量下载工具:3分钟掌握无水印视频保存,从单个作品到主页批量全搞定
  • 如何制作一个艺术品小程序商城?教你零基础搭建方法
  • 2026 盐城漏水维修攻略|苏易修缮:厨卫 / 阳台 / 外墙 / 屋顶 / 地下室|靠谱防水门店 - 苏易修缮
  • AI简历工具实战指南:JD解析、动态适配与ATS优化
  • Altium Designer 2004授权机制解析与离线激活实践指南
  • 2026 江阴漏水维修攻略|苏易修缮推荐:卫生间 / 阳台 / 外墙 / 屋顶 / 地下室漏水|靠谱防水门店推荐 - 苏易修缮
  • SharpKeys完整教程:5分钟学会Windows键盘自定义的免费神器
  • VxWorks硬盘启动盘制作全攻略:从原理到避坑实践
  • 2026年合肥理工学校专业有哪些?怎么报名? - 小张zc
  • 安徽省初三考不上高中怎么办?2026年合肥值得报的中职学校推荐 - 小张zc
  • 解锁OFD转PDF的5大核心能力:从零基础到高效工作流
  • iOS开发用ARM64版OpenSSL静态库(含libssl.a和libcrypto.a,真机验证可用)
  • 虚拟机体验Deepin:国产Linux桌面系统的易用性与生态挑战
  • 量化交易进阶:构建策略所需的数学与统计工具箱
  • 3个秘诀快速掌握抖音下载器:从零开始高效保存视频内容
  • 电子工程师核心技能全景:从硬件设计到软件开发的实战指南
  • roop-unleashed技术解密:从深度伪造到创意表达的革命性突破
  • 突破百度网盘限速的终极方案:pan-baidu-download技术深度解析
  • 无线通信中的EIRP与ERP:天线增益如何影响信号强度与合规性
  • 避开这5个坑,你的DeepRacer奖励函数效率至少提升50%
  • 为什么高相关数据,往往不能用来做决策?
  • 工程师如何用系统化思维破解职业迷茫:从个人规格书到敏捷成长
  • Linux 权限面试题详解(满分答题版)
  • 手把手教你用C++实现一个简易的表达式语法分析器(附完整源码)