调试了下你的代码,怎么说呢,老生常谈的问题了:不要在遍历数组时修改数组长度! 你在给数组添加磁力链的时候用了try catch,一旦这一步失败,你的数组长度就不再是4的倍数了,导致后续循环在取url时整个错位,取到的实际上是title、info这些东西,把它传给GM_xmlhttpRequest当然会出错了,你输出的东西全乱了也是这个原因。这个问题用对象解决是最简单的:
//...
for (let i = 0; i < count; i++) {
let title = $(search_results[i]).children('li')[0].innerText
let info = $(search_results[i]).children('li')[1].innerText
let href = 'https://skrbtba.xyz/' + $($(search_results[i]).children('li')[0]).children('a').attr("href")
//data_list[data_list.length] = title
//data_list[data_list.length] = info
//data_list[data_list.length] = href
data_list.push({
title: title,
info: info,
href: href
});
}
//for (let k = 0; k < data_list.length; k = k + 3) {
for(let k = 0; k < data_list.length; k++) {
header.referer = search_url
//let content_url = data_list[k + 2]
let content_url = data_list[k].href;
//...
//data_list.splice(k + 3, 0, $(doc.find('.list-unstyled')[0]).children('li')[3].innerText.match(/[A-Z0-9]{40,40}$/)[0])
data_list[k].magnet = $(doc.find('.list-unstyled')[0]).children('li')[3].innerText.match(/[A-Z0-9]{40,40}$/)[0];
//...
//$(flag[i]).after(`<br>************${k}***********<br>${data_list[k]} ${data_list[k + 1]} ${data_list[k + 3]}`)
$(flag[i]).after(`<br>************${k}***********<br>${data_list[k].title} ${data_list[k].info} ${data_list[k].magnet}`)
//...
另外skrbtba.xyz这个网站我测试的时候不太稳定,似乎隔一段时间就会发生一次重定向,需要过一遍人工验证,这可能是GM_xmlhttpRequest失败的原因。