|
|
发表于 2026-5-8 23:15:14
|
显示全部楼层
湖南省长沙市
感谢楼主分享,我近期也是发现有台电脑用不了,自己电脑又能用。于是我AI了下发现是这些原因:罪魁祸首:网页_访问 的 WinInet 缓存与环境差异 易语言精易模块的 网页_访问 底层调用的是系统的 WinInet API(也就是 IE 浏览器的核心)。这会导致两个致命问题: 系统环境差异:另一台电脑的系统可能自动把 GZIP 解压了,或者 IE 设置不同;而报错的这台电脑原封不动返回了压缩包。 致命的请求缓存:报错的这台电脑上,网页_访问 第一次请求遇到了 521(5秒盾)。当你带着算好的 Cookie 去进行第二次访问时,底层的 IE 核心直接从本地缓存里把刚才的 521 页面又读出来给了你,它根本就没有真正向蓝奏云发送第二次网络请求!
下面是改好的源码,把这个函数替换掉即可解决:
.版本 2
.支持库 spec
.子程序 蓝奏云_文件外链取直链地址, 文本型
.参数 蓝奏云_文件外链地址, 文本型
.参数 文件外链密码, 文本型, 参考 可空
.局部变量 局_返回, 文本型
.局部变量 局_结果, 字节集
.局部变量 临时_文本, 文本型
.局部变量 iframe框架地址, 文本型
.局部变量 sign, 文本型
.局部变量 url, 文本型
.局部变量 json, 类_json
.局部变量 域, 文本型
.局部变量 页面地址, 文本型
.局部变量 局_提交协议头, 文本型
.局部变量 局_返回协议头, 文本型
.局部变量 直链地址, 文本型
.局部变量 acw_sc__v2, 文本型
.局部变量 局_ck, 文本型
.局部变量 ajaxdata, 文本型
.局部变量 局_返回字节集, 字节集
' 【关键修改】:全部替换为 网页_访问_对象,彻底告别 IE 缓存导致的二次弹盾!
局_返回字节集 = 网页_访问_对象 (蓝奏云_文件外链地址, 0, , , 局_ck, #常量_ua, , , , , , , , , , , , , )
.如果真 (取字节集左边 (局_返回字节集, 2) = { 31, 139 })
局_返回字节集 = 网页_GZIP解压 (局_返回字节集)
.如果真结束
局_返回 = 到文本 (编码_编码转换对象 (局_返回字节集, , , ))
.如果真 (文本_寻找文本 (局_返回, “ifr2”, , ) = -1)
' 取出 arg1 并计算
临时_文本 = 文本_取出中间文本 (局_返回, “arg1='”, “'”, , )
acw_sc__v2 = 运行JS_取acw_sc_v2 (临时_文本)
' 拼接完整 Cookie
.如果真 (文本_寻找文本 (acw_sc__v2, “acw_sc__v2=”, , 假) = -1)
acw_sc__v2 = “acw_sc__v2=” + acw_sc__v2
.如果真结束
局_ck = 网页_Cookie合并更新 (局_ck, acw_sc__v2)
' 【关键修改】:第二次带 Cookie 访问也必须用 网页_访问_对象
局_返回字节集 = 网页_访问_对象 (蓝奏云_文件外链地址, 0, , 局_ck, , #常量_ua, , , , , , , , , , , , , )
.如果真 (取字节集左边 (局_返回字节集, 2) = { 31, 139 })
局_返回字节集 = 网页_GZIP解压 (局_返回字节集)
.如果真结束
局_返回 = 到文本 (编码_编码转换对象 (局_返回字节集, , , ))
调试输出 (“带盾解析完成,真实页面:”, 局_返回)
.如果真结束
.判断开始 (文件外链密码 = “”)
临时_文本 = 文本_取出中间文本 (局_返回, “ifr2”, “frameborder”, , ) ' 无密码的外链,需要通过iframe框架地址获取文件编号url和sign,参考:https://tres.lanzouq.com/ajaxm.php?file=262051095
iframe框架地址 = 文本_取出中间文本 (临时_文本, “src=” + #引号, #引号, , )
.如果真 (iframe框架地址 ≠ “”)
iframe框架地址 = 网页_取网址引用 (蓝奏云_文件外链地址) + iframe框架地址
.如果真结束
局_返回 = 网页_访问S (iframe框架地址, , , 局_ck, , #常量_ua, , , , , , , , , , , , , , , ) ' 获取url和sign
调试输出 (“局_返回”, 局_返回)
sign = 文本_取出中间文本 (局_返回, “wp_sign = '”, “';”, , )
临时_文本 = 文本_取出中间文本 (局_返回, “url : '”, “data”, , )
url = 文本_取出中间文本 (临时_文本, “url : '”, “'”, , ) ' /ajaxm.php?file=262051095
ajaxdata = 文本_取出中间文本 (局_返回, “ajaxdata = '”, “'”, , )
.如果真 (url = “”)
url = 文本_取出中间文本 (局_返回, “url : '”, “'”, , ) ' /ajaxm.php?file=262051095,上面如果没有取到,尝试从局_返回取
.如果真结束
.如果真 (url ≠ “”)
url = 网页_取网址引用 (蓝奏云_文件外链地址) + url
.如果真结束
.默认
临时_文本 = 文本_取出中间文本 (局_返回, “bcdf = 'c'”, “,////data”, , ) ' 有密码的外链,可以直接通过访问外链地址获取url和sign
' 调试输出 (局_返回)
' 调试输出 (临时_文本)
sign = 文本_取出中间文本 (临时_文本, “sign':'”, “'”, , ) ' 上个版本密码外链少写了这个导致无法解析
.如果真 (url = “”)
url = 文本_取出中间文本 (局_返回, “url : '”, “'”, , ) ' /ajaxm.php?file=262051095,上面如果没有取到,尝试从局_返回取
.如果真结束
.如果真 (url ≠ “”)
url = 网页_取网址引用 (蓝奏云_文件外链地址) + url
.如果真结束
.判断结束
调试输出 (sign, url)
.如果真 (sign ≠ “” 且 url ≠ “”)
.判断开始 (ajaxdata = “”)
' 调试输出 (url, “action=downprocess&sign=” + sign + “&kd=1&p=” + 文件外链密码)
局_返回 = 网页_访问S (url, 1, “action=downprocess&sign=” + sign + “&kd=1&p=” + 文件外链密码, 局_ck, , “Referer:” + 蓝奏云_文件外链地址 + #换行符 + #常量_ua, , , , , , , , , , , , , , , ) ' 获取下载页面地址
.默认
局_返回 = 网页_访问S (url, 1, “action=downprocess&websignkey=” + ajaxdata + “&signs=” + ajaxdata + “&sign=” + sign + “&websign=2”, 局_ck, , “Referer:” + 蓝奏云_文件外链地址 + #换行符 + #常量_ua, , , , , , , , , , , , , , , )
.判断结束
' 调试输出 (局_返回)
json.解析 (局_返回, , )
域 = json.取通用属性 (“dom”, )
页面地址 = json.取通用属性 (“url”, )
网页_访问S (域 + “/file/” + 页面地址, , , 局_ck, , #常量_ua, 局_返回协议头, 真, , , , , , , , , 局_结果, , , , ) ' 访问下载页面,获取返回协议头的Location,协议头Location的值为直链地址
直链地址 = 网页_协议头_取信息 (局_返回协议头, “Location”)
.如果真结束
调试输出 (“直链地址”, 直链地址)
.判断开始 (直链地址 = “”)
局_返回 = 到文本 (网页_GZIP解压 (局_结果))
acw_sc__v2 = 运行JS_取acw_sc_v2 (文本_取出中间文本 (局_返回, “arg1='”, “'”, , )) ' js
' acw_sc__v2 = compute_acw_sc_v2 (文本_取出中间文本 (局_返回, “arg1='”, “'”, , )) ' 纯易
局_ck = 网页_Cookie合并更新 (局_ck, acw_sc__v2)
网页_访问S (域 + “/file/” + 页面地址, , , 局_ck, , #常量_ua, 局_返回协议头, 真, , , , , , , , , , , , , ) ' 频繁解析会出现验证,需要携带ck(acw_sc__v2)进行访问
直链地址 = 网页_协议头_取信息 (局_返回协议头, “Location”)
调试输出 (“直链地址1”, 直链地址)
返回 (直链地址)
.默认
返回 (直链地址)
.判断结束
|
|