木羊羽 发表于 2021-8-19 17:09:40

本帖最后由 木羊羽 于 2021-8-19 17:11 编辑


好尬尴啊{:4_96:},要尬死了{:4_98:}

目标网站:https://cl.308x.xyz/htm_mob/2107/7/4611108.html

!!!建议屏蔽图片!!!

bt网站:https://iurl302.icu/DiHEW6zlJT?_=000,这个网站的地址会变化,所以给的是短链


cookies失效需要更新cookies

我的计划是在第一个下载地址后面依次给出:名称,信息,磁力哈希

// ==UserScript==
// @name         bt搜索
// @namespace    http://tampermonkey.net/
// @version      0.1
// @description视频自动点赞,网页自动宽屏播放
// @author       木羊羽
// @include       https://cl.308x.xyz/*
// @require      https://cdn.bootcdn.net/ajax/libs/jquery/3.6.0/jquery.min.js
// @run-at       document-body
// @grant      GM_xmlhttpRequest
// ==/UserScript==

(function () {
    let header = {
      'accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9',
      'accept-encoding': 'gzip, deflate, br',
      'accept-language': 'zh-CN,zh;q=0.9',
      'cookie': 'JSESSIONID=0B904B22B2D367022FCE51C1104E25E3; aywcUid=P5R6Nrycwm_20210819090408; tet=1629365677915; tetm=48862',
      'dnt': '1',
      'referer': 'https://skrbtba.xyz/',
      'sec-fetch-dest': 'document',
      'sec-fetch-mode': 'navigate',
      'sec-fetch-site': 'same-origin',
      'sec-fetch-user': '?1',
      'upgrade-insecure-requests': '1',
      'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.198 Safari/537.36',
    }


    let content = $($('.tpc_cont'))
    let flag = content.find('a:even').css('color', 'red')
    let reg = /【影片名称】([\s\S]*?)<br>/g
    let title_list = content.html().match(reg)

    for (let i = 0; i < flag.length; i++) {
      let keywords = title_list.replace('【影片名称】', '')
      keywords = keywords.replace(':', '')
      keywords = keywords.replace('<br>', '')
      let search_url = `https://skrbtba.xyz/search?keyword=${keywords}`
      // console.log(`开搜索【${url}】`)


      GM_xmlhttpRequest({
            method: 'GET',
            url: search_url,
            headers: header,
            synchronous: true,
            onload: function (response) {

                let data_list = []
                let doc = $(response.responseText)
                console.clear()
                console.log(`搜索页url【${search_url}】`)
                console.log(`搜索页请求头【${header.referer}】`)
                // console.log(response.responseText)
                let search_results = $(doc.find('.list-unstyled'))
                let count = search_results.length


                if (doc.find('.sr-only').length) {

                  console.log('【【【【【【更新cookie】】】】】】')
                } else if (count === 0) {

                } else {
                  count <= 5 ? count : count = 5
                  for (let i = 0; i < count; i++) {
                        let title = $(search_results).children('li').innerText
                        let info = $(search_results).children('li').innerText
                        let href = 'https://skrbtba.xyz/' + $($(search_results).children('li')).children('a').attr("href")
                        data_list = title
                        data_list = info
                        data_list = href
                  }


                  for (let k = 0; k < data_list.length; k = k + 3) {
                        // console.log(`${data_list} ${data_list}`)
                        header.referer = search_url

                        let content_url = data_list


                        GM_xmlhttpRequest({
                            method: 'GET',
                            url: content_url,
                            headers: header,
                            synchronous: true,
                            onload: function (response) {

                              let doc = $(response.responseText)
                              // console.log(response.responseText)
                              // let doc = $('html')
                              try {
                                    data_list.splice(k + 3, 0, $(doc.find('.list-unstyled')).children('li').innerText.match(/{40,40}$/))
                              }

                              catch (err) {
                                    console.log(header.referer)
                                    // console.log(response.responseText)
                                    return console.log(`出错啦【${err.message}】`)
                              }


                              console.log(data_list)

                              $(flag).after(`<br>************${k}***********<br>${data_list} ${data_list} ${data_list}`)

                              header.referer = 'https://skrbtba.xyz/'


                            }
                        })


                  }
                }


            }
      })
    }
})()


木羊羽 发表于 2021-8-19 17:15:26

李恒道 发表于 2021-8-19 14:32
代码太多具体我也很难有什么判断
哥哥可以写个能触发的小例子我们大家一起调下? ...

https://gitee.com/myy_321/images/raw/master/picture/20210819/171515738-1.png

脚本体验师001 发表于 2021-8-19 18:28:15

木羊羽 发表于 2021-8-19 17:15


写的挺好,应该是需要的数据没正确截取到。建议把磁力链接那块a标签整个截取插入到白花花这个网页。还有打开白花花网页时,脚本运行次数太多了得想办法避免。挺好的。我再帮你仔细研究一下这个白花花网站

李恒道 发表于 2021-8-19 20:33:30

木羊羽 发表于 2021-8-19 17:15


好奇怪...我帮不到哥哥,xhr的post我这里post不出来,我日

cxxjackie 发表于 2021-8-19 22:11:02

调试了下你的代码,怎么说呢,老生常谈的问题了:**不要在遍历数组时修改数组长度!** 你在给数组添加磁力链的时候用了try catch,一旦这一步失败,你的数组长度就不再是4的倍数了,导致后续循环在取url时整个错位,取到的实际上是title、info这些东西,把它传给GM_xmlhttpRequest当然会出错了,你输出的东西全乱了也是这个原因。这个问题用对象解决是最简单的:

```javascript
//...
for (let i = 0; i < count; i++) {
let title = $(search_results).children('li').innerText
let info = $(search_results).children('li').innerText
let href = 'https://skrbtba.xyz/' + $($(search_results).children('li')).children('a').attr("href")
//data_list = title
//data_list = info
//data_list = 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
let content_url = data_list.href;
//...
//data_list.splice(k + 3, 0, $(doc.find('.list-unstyled')).children('li').innerText.match(/{40,40}$/))
data_list.magnet = $(doc.find('.list-unstyled')).children('li').innerText.match(/{40,40}$/);
//...
//$(flag).after(`<br>************${k}***********<br>${data_list} ${data_list} ${data_list}`)
$(flag).after(`<br>************${k}***********<br>${data_list.title} ${data_list.info} ${data_list.magnet}`)
//...
```

另外skrbtba.xyz这个网站我测试的时候不太稳定,似乎隔一段时间就会发生一次重定向,需要过一遍人工验证,这可能是GM_xmlhttpRequest失败的原因。

木羊羽 发表于 2021-8-20 08:30:11

cxxjackie 发表于 2021-8-19 22:11
调试了下你的代码,怎么说呢,老生常谈的问题了:**不要在遍历数组时修改数组长度!** 你在给数组添加 ...

感谢大佬!!!爱你么么哒{:4_101:}!!!

脚本体验师001 发表于 2021-8-21 12:59:35

木羊羽 发表于 2021-8-20 08:30
感谢大佬!!!爱你么么哒!!!

哥哥脚本优化好了没?发出来呀

李恒道 发表于 2021-8-21 14:08:01

脚本体验师001 发表于 2021-8-21 12:59
哥哥脚本优化好了没?发出来呀

虾仁诛心

水凛子 发表于 2021-8-21 14:29:47

本来以为是开玩笑,原来真的是草榴...

脚本体验师001 发表于 2021-8-21 15:41:10

孔曰:食色行也,不吃不喝不拉不撒不爱不恨,还是男人吗!
孟曰:说得对,俺举双手赞成!
页: 1 2 [3] 4
查看完整版本: 油猴脚本怎么实现跨域的同步请求