pdf.js 通用 pdf 下载教程
某网站的求助帖为例:
提问网页内嵌的 pdf,请帮忙下载,因为该网站有好多类似的文章,还请介绍如何突破限制,下载该网站的其他类似内容
下载链接
f12,定位到 pdf 渲染层(页面嵌套)
执行 PDFViewerApplication.download() 即可(基本上通用)
以下是 pdf 文件链接的下载链接
https://dart.deloitte.com/USDART/ov-resource/057be505-289e-11e9-818d-67c85cbcc7fa#pdfjs.action=download
(下是应该能下,但是太慢啦)
pdf.js 应该是通用的,除非服务器做了限制(也有办法绕过然后保存)
找到密码
使用特殊(对于 L 站为准入门槛)网咯下载后,发现有密码。
先说该网站结论:
找到 id 为 r0inab 的 script 标签的内容,
例如:Business Combinations (November 2025) | DART – Deloitte Accounting Research Tool ,(没错我另起炉灶了)
搜索得到加密后的密钥:2s1e1k2p1d1j2t2p1e1g1d1h172u1g1j2p171k2t1d1d172s1h2p2u171f2u2q1c1g1f2u1j计算密钥
function decode(encodedString) { let result = ''; for (let o = 1; o < encodedString.length; o++) { if (o % 2 === 1) { const charCode = parseInt(encodedString[o-1] + encodedString[o], 36); result += String.fromCharCode(charCode); } } return result; } const encoded = "2s1e1k2p1d1j2t2p1e1g1d1h172u1g1j2p171k2t1d1d172s1h2p2u171f2u2q1c1g1f2u1j"; console.log(decode(encoded));得到密码:
d28a17ea2415+f47a+8e11+d5af+3fb043f7即可解开啦
PS: 如果希望去除密码,最简单的方法就是在线 pdf 解锁网站,比如 https://www.ilovepdf.com/zh-cn/unlock_pdf
还有就是要多换几个软件试试,可能是软件 bug,chrome 和 2345pdf 阅读器说密码不对,但是 edge、福昕 pdf 编辑器、上面那个 pdf 解锁网站则可以正确打开。。。
追码过程(通用)
pdf.js 中搜索 .onPassword
如果手速不够快可能需要刷新,
如果存在密码的话可能会在此处断下,并且报错 No password given,
如图中所示,此处的 e.onPassword 则是自动传输密码的必经之路。
如果偷懒,可以在 e.onPassword 的第一回调参数(也就是上面的 s 函数)下断点,
即可直接偷鸡。
当然,本例追过去,发现
onPassword = (e, t) => {
this.isViewerEmbedded && this._unblockDocumentLoadEvent(),
window.addEventListener('message', function t(i) {
window.removeEventListener('message', t)
for (var n = i.data, s = '', o = 1; o < n.length; o++)
o % 2 && (s += String.fromCharCode(parseInt(n[o - 1] + n[o], 36)))
e(s)
}),
window.parent.postMessage('s', location.href)
}
AI 格式化一下
然后追到 s 的监听换事件
//外层 function onMessage(e) {
e.origin === location.protocol + "//" + location.host && (e.data === String.fromCharCode(115) ? e.source.postMessage(JSON.parse(document.getElementById("r0inab").innerText), location.href) : e.data === String.fromCharCode(103) && e.source.postMessage(JSON.parse(document.getElementById("r0inyk").innerText), location.href));
}
AI 格式化一下
最终算法参考本文 [找到密码] 部分
↓能不能别点赞,点点别的, 不想吃 LDC 低保






