本帖最后由 Takitooru 于 2022-11-1 18:20 编辑
2022/11/1/18:05更新。
有部分网友复制代码后,显示正则错误,是因为复制代码的时候,其中的<符号转码了,变成了<,请自行<更改<,或对照代码更正即可。
代码无错误,请复制代码后,注意复制后被转码
var reg = /(?<=data-landurl\=")(.*?)(?=")|(?<=mu\=")
更正
var reg = /(?<=data-landurl\=")(.*?)(?=")|(?<=mu\=")
根据会员反馈星愿浏览器没有生效问题,原因是该浏览器一项设置引起,打开星愿浏览器设置---找到搜索引擎---取消显示搜索辅助工具条即可。
另外,如取消后,刷新浏览器依然没有生效,请手动点击一下搜索按钮。
经过调试星愿浏览器,发现其他浏览器有极少特殊情况与上述发生没有生效的现象,请尝试刷新+手动点击一次搜索按钮。
星愿截图
===================分割线====================
===================分割线====================
感谢,nicen2会员提醒,发现论坛编辑器回自动把某些代码过滤掉了
其中let Matches = [...Arrlist.outerHTML.matchAll(reg)];这句,i变量被论坛过滤了
代码已更新,用编辑器上的MD功能代码就保证完整性
另外再次更新一下说明,油猴脚本不要安装bate版本,要安装正式版。
截至2022/11/1/11:13,发现某会员反馈的心愿浏览器没有生效也没有报错,调试发现,似乎被浏览器自带的js异步覆盖了脚本,解决方法:待处理。
错误1
Failed to load resource: net::ERR_BLOCKED_BY_CLIENT
处理结果:出现上述情况,这是浏览器广告插件扩展引起,如AdGuard插件AdBlock插件之类,请关闭此类型插件后再尝试调试脚本,直至油猴脚本图标出现红色数字1标记,代表脚本运行成功。
错误2
处理结果:win10 Edge浏览器版本105.0.1343.27以及最新版本107.0.1418.26,同环境调试后,无任何报错,
如出现该情况,请尝试关闭浏览器所有扩展以及其他脚本,或清理下缓存以及强制刷新搜索页面,直至油猴脚本图标出现红色数字1标记,代表脚本运行成功。
错误3
处理结果:经过调试,排除浏览器插件扩展引起外,部分浏览器没有立刻生效,请清理下缓存以及刷新搜索页面,直至油猴脚本图标出现红色数字1标记,代表脚本运行成功。
更新后的一些结语
只要浏览器支持油猴脚本,100%是运行成功的。
最后再啰嗦一句,脚本是基于原始数据以及浏览器默认状态(指无按照任何插件或其他)下运行成功的,如出现无效果,请尝试关闭其他引起冲突的插件扩展,或刷新搜索页面,直至油猴脚本图标出现红色数字1标记,代表脚本运行成功。
或者你第一次添加油猴脚本,按照一下截图方法添加即可,基本所有主流浏览器添加方法一样,添加后没有立刻生效的,请刷新搜索页面,直至油猴脚本图标出现红色数字1标记,代表脚本运行成功。
添加教程以及成功截图
=====================================分割线=========================================
=====================================分割线=========================================
截至2022/10/31/19:05,已收到部分网友反馈代码无效果,首先我会跟进反馈的问题,在修复前,希望你看完这段更新说明
如你有在使用油猴脚本,请检查有同类型脚本或美化以及去广告之类的脚本,可能会产生冲突,导致代码失效等等。
如果脚本无效,请尝试关闭其他油猴脚本试试,这个脚本是基于原始数据界面获取链接,
最后,如果无效,请反馈错误信息或截图。
废话少说,起因见如下链接
优化更新发布出来,造福人类,所有搜索结果都可以显示真实的直链,并可点击以新窗口打开直链。
不知道对百度的蛋糕有没有影响,所以完整代码设置为回复可见。日后如果失效且有能力可自行修复,又或者百度更改加密方式,那就是没得玩了。
又废话少说,直接看截图效果
核心代码
[JavaScript] 纯文本查看 复制代码 document.querySelector('#wrapper_wrapper').addEventListener("DOMNodeInserted",function(e) {
if (e.target.id == 'container') {
setTimeout(function() {
let Arrlist = document.querySelectorAll('' + classNameList + '');
for (let i = Arrlist.length - 1; i >= 0; i--) {
let Matches = [...Arrlist[i].outerHTML.matchAll(reg)];
for (let Mat of Matches) {
let ifMatNull = Mat[0] == '' ? '链接已被加密': '<a href="' + Mat[0] + '" target="_blank">' + Mat[0] + '</a>';
Arrlist[i].insertAdjacentHTML('beforeend', '<div style="' + styleList + '">' + diyText + ':' + ifMatNull + '</div>');
}
}
}, 1000);
}
});
完整代码
// ==UserScript==
// @name 百度搜索结果真实链接
// @namespace To2nUrlBaidu Scripts
// @author Takitooru
// @match https://www.baidu.com
// @match https://www.baidu.com/s*
// @grant none
// @version 2.1.5
// @description 获取百度搜索结果真实链接
// ==/UserScript==
(function() {
'use strict';
//正则表达式
var reg = /(?<=data-landurl\=\")(.*?)(?=\")|(?<=mu\=\")(.*?)(?=\")/g;
//元素类名合集
var classNameList = ['.result.c-container.xpath-log.new-pmd', '.result-op.c-container.xpath-log.new-pmd', '.result-op.c-container.new-pmd', 'h3.t.ec_title', 'h3.c-title'];
//显示链接的样式
var styleList = ['color:red;background-color:yellow;display:inline-block;'];
//显示链接的提示文字
var diyText = ['真实链接'];
//(link?url=**)常规编码链接 ※※※※※ (baidu.php?url=**)加密编码链接
document.querySelector('#wrapper_wrapper').addEventListener("DOMNodeInserted",function(e) {
if (e.target.id == 'container') {
setTimeout(function() {
let Arrlist = document.querySelectorAll('' + classNameList + '');
for (let i = Arrlist.length - 1; i >= 0; i--) {
let Matches = [...Arrlist[i].outerHTML.matchAll(reg)];
for (let Mat of Matches) {
let ifMatNull = Mat[0] == '' ? '链接已被加密': '<a href="' + Mat[0] + '" target="_blank">' + Mat[0] + '</a>';
Arrlist[i].insertAdjacentHTML('beforeend', '<div style="' + styleList + '">' + diyText + ':' + ifMatNull + '</div>');
}
}
}, 1000);
}
});
})();
|