下载过程遇到点问题,就自行解决了一下,分享一下解决过程。
日期:2024年10月23日
国标的查询的网站是c.gb688.cn,可以自行百度,经常使用国标的朋友应该不陌生了。
一、大佬分享的脚本
原理是调出浏览器的控制台,在控制台使用脚本调试页面。
通过访问网页前端的元素图片,按一定的规则拼接组合,然后使用jspdf生成pdf文件。
二、最新遇到的问题
1. 问题一是:c.gb688.cn在今年早些时候,更新了脚本,调出控制台或者打开开发者工具的话,就会跳转到空白页。
2. 问题二是:下载的pdf出现拼接不全的情况。
三、解决方法
问题一:
百度了一下,问题一是网站禁用了开发者工具,查了几种禁用网站调试的方法,用开发者工具的断点功能,监控到疑似使用了console-ban脚本(感谢开源)。
解决方法是:在开发者工具那里,阻止对url“c.gb688.cn/bzgk/js/console-ban.min.js”发起请求。这样就能顺利打开F12了
问题二:
让AI分析了一下大佬的脚本(题外话:有生成式AI之后,代码逆向之类的工作,难度和复杂度一下子减低了好多,代码混淆啥的可能要更新技术了)
AI分析是图片尺寸不对,大佬的脚本在拼接图片和生成pdf时,尺寸是写死的。最新的国标文件的图片尺寸比之前大了一倍多,图片拼接的时候就截取不全。导致pdf生成不全。
然后,尝试手动修改了一下,脚本中的尺寸,就可以漂亮的生成了。
修改下列,119,168的大小(第38,39行),以及1190,1680的大小(第93,94行);
119,168(每张图片的截取尺寸)是1190,1680(每页的尺寸)。因为国标网站是把每页pdf分割成了10*10的多个块(ps:分析html元素发现,其实也不是100个块,没有文字的块是没有的,抓包发现返回的图片背景是透明的,猜测没有文字的地方应该就没有块了直接用的是背景的白色)
所以,修改的尺寸可以分析html页面上,每页pdf的尺寸,例如我下载的每页尺寸是(2300,3260)
那就修改的逻辑就是
119->230
168->326
1190->2300
1680->3260
大佬原来的脚本如下,有需要的自己手动修改吧。这种方式可能涉及到国标版权和我本身比较懒,就不修改成自动适应尺寸的脚本了。各位自行少量下载吧。
百度的过程中,好像有同效果的油猴脚本,有需要的也可以自行找一下。
[Asm] 纯文本查看 复制代码 $("head").append('');
let my_script=``;
let source_img = `
[img][/img]
`;
let style = `
#canvas_container {
position: fixed;
height: 30px;
width: 150px;
top: 50px;
left: 10px;
border: 1px;
/*background-color: #00ff0099;*/
border-radius: 3px;
}
`;
$("head").append(style);
$("body").append(source_img);
$("body").append(my_script);