用console脚本可一键提取网页全部可见链接:运行[...document.queryselectorall('a[href]')].map(a=>a.href).filter(u=>u&&!u.startswith('javascript:')&&!u.startswith('mailto:')&&!u.startswith('#')).join('\n'),输出纯url列表。

你需要把当前网页里所有可点击的超链接(包括导航栏、文章内链、页脚友情链接、隐藏在JS里的动态链接)一次性提取出来,形成纯文本URL列表,而不是手动右键复制几十次。
用开发者工具Console执行脚本提取全部a标签链接
这方法直接读取DOM中所有元素的href属性,覆盖95%以上的可见链接,且不依赖网络请求,执行快、无遗漏。
第一步:打开目标网页,确保页面已完全加载(滚动到底部,等所有懒加载内容出现)。
第二步:按Ctrl+Shift+I(Windows/Linux)或Cmd+Option+I(Mac)唤出开发者工具;安卓端请长按地址栏→选择“检查元素”。
第三步:切换到Console标签页,粘贴以下代码后回车运行:
[...document.querySelectorAll('a[href]')].map(a => a.href).filter(url => url && !url.startsWith('javascript:') && !url.startsWith('mailto:') && !url.startsWith('#')).join('\n')
运行后控制台将输出一行行纯URL,全选→复制→粘贴到记事本即可。注意:若结果为空,说明页面未加载完成或该页使用了Shadow DOM封装,需跳至方法二。
对JS动态生成链接做深度捕获
有些网站用Vue/React渲染菜单,或通过onclick事件拼接跳转URL,这类链接不会出现在原始a标签中,必须监听真实点击行为。
方法一:启用Network面板捕获跳转请求
打开开发者工具→Network标签页→点亮录制按钮→勾选Preserve log→在网页上依次点击所有疑似导航区域(如顶部Tab、侧边栏菜单、底部“更多”按钮)→等待3秒→筛选Type为doc或xhr的请求→逐个查看Initiator列,找到触发跳转的JS文件→右键该请求→Copy→Copy URL。
方法二:注入钩子脚本拦截所有window.open和location.assign调用
在Console中运行:
const links = new Set();
window.open = new Proxy(window.open, {apply: (t, _, [url]) => {if (url && url.startsWith('http')) links.add(url); return t(...arguments);}});
Object.defineProperty(window, 'location', {set: (_, v) => {if (v && v.startsWith('http')) links.add(v);}});
console.log('已启用动态链接捕获,请操作页面');
然后正常点击页面各处,最后输入Array.from(links).join('\n')回车,即可导出全部捕获到的跳转地址。
【务必在操作前运行钩子脚本,否则此前所有跳转均无法捕获】
导出为TSV格式供Excel管理
如果你需要把链接和对应锚文本一起导出,方便后期分类或去重,就用这个结构化方案。
回到Console,运行以下代码:
const rows = [...document.querySelectorAll('a[href]')].map(a => [a.textContent.trim().replace(/\s+/g, ' ') || '(无文字)', a.href]).filter(([text]) => text !== '(无文字)' || a.href.includes('http'));
rows.unshift(['锚文本', 'URL']);
rows.map(r => r.join('\t')).join('\n')
复制输出结果,新建Excel文件→右键A1单元格→选择性粘贴→文本→确定。第一行为表头,后续每行含锚文本与对应链接,可直接排序、筛选、去重。
若某链接锚文本为空但URL有效(如图标按钮),该脚本仍保留其URL,避免漏链。











