上一主题 下一主题
ScriptCat,新一代的脚本管理器脚本站,与全世界分享你的用户脚本油猴脚本开发指南教程目录
返回列表 发新帖
楼主: 木羊羽 - 

油猴脚本怎么实现跨域的同步请求

[复制链接]
  • TA的每日心情
    开心
    2023-2-28 23:59
  • 签到天数: 191 天

    [LV.7]常住居民III

    637

    主题

    5194

    回帖

    6076

    积分

    管理员

    非物质文化遗产社会摇传承人

    积分
    6076

    荣誉开发者管理员油中2周年生态建设者喜迎中秋

    发表于 2021-8-19 09:21:38 | 显示全部楼层
    cxxjackie 发表于 2021-8-18 23:52
    [md]查了一下,`GM_xmlhttpRequest`确实支持同步:

    ```javascript

    ggnb...冷知识又增加了
    混的人。
    ------------------------------------------
    進撃!永遠の帝国の破壊虎---李恒道

    入驻了爱发电https://afdian.net/a/lihengdao666
    个人宣言:この世界で私に胜てる人とコードはまだ生まれていません。死ぬのが怖くなければ来てください。
    回复
    订阅

    使用道具 举报

  • TA的每日心情
    开心
    2022-11-5 13:01
  • 签到天数: 3 天

    [LV.2]偶尔看看I

    12

    主题

    35

    回帖

    59

    积分

    荣誉开发者

    积分
    59

    荣誉开发者

    发表于 2021-8-19 09:31:17 | 显示全部楼层
    李恒道 发表于 2021-8-18 21:47
    使用的时候
    async function UploadTextToAliYunpan(text) {
        await UploadTextBin(createurl, text)
    1. // ==UserScript==
    2. // @name         bt搜索
    3. // @namespace    http://tampermonkey.net/
    4. // @version      0.1
    5. // @description  视频自动点赞,网页自动宽屏播放
    6. // @author       木羊羽
    7. // @include       *
    8. // @require      https://cdn.bootcdn.net/ajax/libs/jquery/3.6.0/jquery.min.js
    9. // @run-at       document-body
    10. // @grant        GM_xmlhttpRequest
    11. // ==/UserScript==

    12. (function () {

    13.     let header = {
    14.         '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',
    15.         'accept-encoding': 'gzip, deflate, br',
    16.         'accept-language': 'zh-CN,zh;q=0.9',
    17.         'cookie': 'JSESSIONID=0B904B22B2D367022FCE51C1104E25E3; aywcUid=P5R6Nrycwm_20210819090408; tet=1629338648883; tetm=29100',
    18.         'dnt': '1',
    19.         'referer': 'https://skrbtba.xyz/',
    20.         'sec-fetch-dest': 'document',
    21.         'sec-fetch-mode': 'navigate',
    22.         'sec-fetch-site': 'same-origin',
    23.         'sec-fetch-user': '?1',
    24.         'upgrade-insecure-requests': '1',
    25.         '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',
    26.     }


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

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


    37.         GM_xmlhttpRequest({
    38.             method: 'GET',
    39.             url: search_url,
    40.             headers: header,
    41.             synchronous: true,
    42.             onload: function (response) {

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


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

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

    54.                 } else {
    55.                     count <= 5 ? count : count = 5
    56.                     for (let i = 0; i < count; i++) {
    57.                         let title = $(search_results[i]).children('li')[0].innerText
    58.                         let info = $(search_results[i]).children('li')[1].innerText
    59.                         let href = 'https://skrbtaa.xyz/' + $($(search_results[i]).children('li')[0]).children('a').attr("href")
    60.                         data_list[data_list.length] = title
    61.                         data_list[data_list.length] = info
    62.                         data_list[data_list.length] = href
    63.                     }


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

    67.                         let content_url = data_list[k + 2]


    68.                         GM_xmlhttpRequest({
    69.                             method: 'GET',
    70.                             url: content_url,
    71.                             headers: header,
    72.                             synchronous: true,
    73.                             onload: function (response) {

    74.                                 let doc = $(response.responseText)
    75.                                 // console.log(response.responseText)
    76.                                 // let doc = $('html')
    77.                                 try {
    78.                                     data_list.splice(k + 3, 0, $(doc.find('.list-unstyled')[0]).children('li')[3].innerText.match(/[A-Z0-9]{40,40}$/)[0])
    79.                                 }

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


    85.                                 console.log(data_list)

    86.                                 $(flag[i]).after(`<br>${data_list[k]} ${data_list[k + 1]} ${data_list[k + 3]}`)

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


    88.                             }
    89.                         })


    90.                     }
    91.                 }


    92.             }
    93.         })
    94.     }
    95. })()

    复制代码

    我需要使用GM_xmlhttpRequest请求搜索关键词,获取搜索结果列表网页的数据,然后再次使用GM_xmlhttpRequest请求具体的搜索结果。需要在GM_xmlhttpRequest中嵌套GM_xmlhttpRequest,但是由于GM_xmlhttpRequest是异步的,将会导致第二个GM_xmlhttpRequest的请求头无法正确修改。我之前尝试了新建一个包含GM_xmlhttpRequest的函数,使用
    async和await语法糖,但是在GM_xmlhttpRequest中的数据无法传出,我哭了
    回复

    使用道具 举报

  • TA的每日心情
    开心
    2022-11-5 13:01
  • 签到天数: 3 天

    [LV.2]偶尔看看I

    12

    主题

    35

    回帖

    59

    积分

    荣誉开发者

    积分
    59

    荣誉开发者

    发表于 2021-8-19 09:32:03 | 显示全部楼层
    脚本体验师001 发表于 2021-8-18 20:52
    https://www.liaoxuefeng.com/wiki/1022910821149312/1023024413276544
    http://www.ruanyifeng.com/blog/20 ...
    1. // ==UserScript==
    2. // @name         bt搜索
    3. // @namespace    http://tampermonkey.net/
    4. // @version      0.1
    5. // @description  视频自动点赞,网页自动宽屏播放
    6. // @author       木羊羽
    7. // @include       *
    8. // @require      https://cdn.bootcdn.net/ajax/libs/jquery/3.6.0/jquery.min.js
    9. // @run-at       document-body
    10. // @grant        GM_xmlhttpRequest
    11. // ==/UserScript==

    12. (function () {

    13.     let header = {
    14.         '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',
    15.         'accept-encoding': 'gzip, deflate, br',
    16.         'accept-language': 'zh-CN,zh;q=0.9',
    17.         'cookie': 'JSESSIONID=0B904B22B2D367022FCE51C1104E25E3; aywcUid=P5R6Nrycwm_20210819090408; tet=1629338648883; tetm=29100',
    18.         'dnt': '1',
    19.         'referer': 'https://skrbtba.xyz/',
    20.         'sec-fetch-dest': 'document',
    21.         'sec-fetch-mode': 'navigate',
    22.         'sec-fetch-site': 'same-origin',
    23.         'sec-fetch-user': '?1',
    24.         'upgrade-insecure-requests': '1',
    25.         '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',
    26.     }


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

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


    37.         GM_xmlhttpRequest({
    38.             method: 'GET',
    39.             url: search_url,
    40.             headers: header,
    41.             synchronous: true,
    42.             onload: function (response) {

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


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

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

    54.                 } else {
    55.                     count <= 5 ? count : count = 5
    56.                     for (let i = 0; i < count; i++) {
    57.                         let title = $(search_results[i]).children('li')[0].innerText
    58.                         let info = $(search_results[i]).children('li')[1].innerText
    59.                         let href = 'https://skrbtaa.xyz/' + $($(search_results[i]).children('li')[0]).children('a').attr("href")
    60.                         data_list[data_list.length] = title
    61.                         data_list[data_list.length] = info
    62.                         data_list[data_list.length] = href
    63.                     }


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

    67.                         let content_url = data_list[k + 2]


    68.                         GM_xmlhttpRequest({
    69.                             method: 'GET',
    70.                             url: content_url,
    71.                             headers: header,
    72.                             synchronous: true,
    73.                             onload: function (response) {

    74.                                 let doc = $(response.responseText)
    75.                                 // console.log(response.responseText)
    76.                                 // let doc = $('html')
    77.                                 try {
    78.                                     data_list.splice(k + 3, 0, $(doc.find('.list-unstyled')[0]).children('li')[3].innerText.match(/[A-Z0-9]{40,40}$/)[0])
    79.                                 }

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


    85.                                 console.log(data_list)

    86.                                 $(flag[i]).after(`<br>${data_list[k]} ${data_list[k + 1]} ${data_list[k + 3]}`)

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


    88.                             }
    89.                         })


    90.                     }
    91.                 }


    92.             }
    93.         })
    94.     }
    95. })()

    复制代码

    我需要使用GM_xmlhttpRequest请求搜索关键词,获取搜索结果列表网页的数据,然后再次使用GM_xmlhttpRequest请求具体的搜索结果。需要在GM_xmlhttpRequest中嵌套GM_xmlhttpRequest,但是由于GM_xmlhttpRequest是异步的,将会导致第二个GM_xmlhttpRequest的请求头无法正确修改。我之前尝试了新建一个包含GM_xmlhttpRequest的函数,使用
    async和await语法糖,但是在GM_xmlhttpRequest中的数据无法传出,我哭了
    回复

    使用道具 举报

  • TA的每日心情
    开心
    2022-11-5 13:01
  • 签到天数: 3 天

    [LV.2]偶尔看看I

    12

    主题

    35

    回帖

    59

    积分

    荣誉开发者

    积分
    59

    荣誉开发者

    发表于 2021-8-19 09:32:32 | 显示全部楼层
    cxxjackie 发表于 2021-8-18 23:52
    [md]查了一下,`GM_xmlhttpRequest`确实支持同步:

    ```javascript
    1. // ==UserScript==
    2. // @name         bt搜索
    3. // @namespace    http://tampermonkey.net/
    4. // @version      0.1
    5. // @description  视频自动点赞,网页自动宽屏播放
    6. // @author       木羊羽
    7. // @include       *
    8. // @require      https://cdn.bootcdn.net/ajax/libs/jquery/3.6.0/jquery.min.js
    9. // @run-at       document-body
    10. // @grant        GM_xmlhttpRequest
    11. // ==/UserScript==

    12. (function () {

    13.     let header = {
    14.         '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',
    15.         'accept-encoding': 'gzip, deflate, br',
    16.         'accept-language': 'zh-CN,zh;q=0.9',
    17.         'cookie': 'JSESSIONID=0B904B22B2D367022FCE51C1104E25E3; aywcUid=P5R6Nrycwm_20210819090408; tet=1629338648883; tetm=29100',
    18.         'dnt': '1',
    19.         'referer': 'https://skrbtba.xyz/',
    20.         'sec-fetch-dest': 'document',
    21.         'sec-fetch-mode': 'navigate',
    22.         'sec-fetch-site': 'same-origin',
    23.         'sec-fetch-user': '?1',
    24.         'upgrade-insecure-requests': '1',
    25.         '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',
    26.     }


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

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


    37.         GM_xmlhttpRequest({
    38.             method: 'GET',
    39.             url: search_url,
    40.             headers: header,
    41.             synchronous: true,
    42.             onload: function (response) {

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


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

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

    54.                 } else {
    55.                     count <= 5 ? count : count = 5
    56.                     for (let i = 0; i < count; i++) {
    57.                         let title = $(search_results[i]).children('li')[0].innerText
    58.                         let info = $(search_results[i]).children('li')[1].innerText
    59.                         let href = 'https://skrbtaa.xyz/' + $($(search_results[i]).children('li')[0]).children('a').attr("href")
    60.                         data_list[data_list.length] = title
    61.                         data_list[data_list.length] = info
    62.                         data_list[data_list.length] = href
    63.                     }


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

    67.                         let content_url = data_list[k + 2]


    68.                         GM_xmlhttpRequest({
    69.                             method: 'GET',
    70.                             url: content_url,
    71.                             headers: header,
    72.                             synchronous: true,
    73.                             onload: function (response) {

    74.                                 let doc = $(response.responseText)
    75.                                 // console.log(response.responseText)
    76.                                 // let doc = $('html')
    77.                                 try {
    78.                                     data_list.splice(k + 3, 0, $(doc.find('.list-unstyled')[0]).children('li')[3].innerText.match(/[A-Z0-9]{40,40}$/)[0])
    79.                                 }

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


    85.                                 console.log(data_list)

    86.                                 $(flag[i]).after(`<br>${data_list[k]} ${data_list[k + 1]} ${data_list[k + 3]}`)

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


    88.                             }
    89.                         })


    90.                     }
    91.                 }


    92.             }
    93.         })
    94.     }
    95. })()

    复制代码

    我需要使用GM_xmlhttpRequest请求搜索关键词,获取搜索结果列表网页的数据,然后再次使用GM_xmlhttpRequest请求具体的搜索结果。需要在GM_xmlhttpRequest中嵌套GM_xmlhttpRequest,但是由于GM_xmlhttpRequest是异步的,将会导致第二个GM_xmlhttpRequest的请求头无法正确修改。我之前尝试了新建一个包含GM_xmlhttpRequest的函数,使用
    async和await语法糖,但是在GM_xmlhttpRequest中的数据无法传出,我哭了
    回复

    使用道具 举报

  • TA的每日心情
    开心
    2024-4-14 00:00
  • 签到天数: 119 天

    [LV.6]常住居民II

    29

    主题

    598

    回帖

    535

    积分

    专家

    积分
    535

    油中2周年生态建设者油中3周年挑战者 lv2

    发表于 2021-8-19 11:08:54 | 显示全部楼层
    木羊羽 发表于 2021-8-19 09:32
    我需要使用GM_xmlhttpRequest请求搜索关键词,获取搜索结果列表网页的数据,然后再次使用GM_xmlhttpRequ ...

    好像不是异不异步的问题,根本原因是脚本在哪个页面运行?bt链接能直接在页面播放吗?像“主播”这样的搜索结果也能播放吗?播放会不会卡?不要着急大家慢慢帮你排查原因。先把// @include       * 改了
    入驻爱发电 让这世界充满爱 https://afdian.net/a/vpannice
    回复

    使用道具 举报

  • TA的每日心情
    开心
    2022-11-5 13:01
  • 签到天数: 3 天

    [LV.2]偶尔看看I

    12

    主题

    35

    回帖

    59

    积分

    荣誉开发者

    积分
    59

    荣誉开发者

    发表于 2021-8-19 11:33:26 | 显示全部楼层
    脚本体验师001 发表于 2021-8-19 11:08
    好像不是异不异步的问题,根本原因是脚本在哪个页面运行?bt链接能直接在页面播放吗?像“主播”这样的搜 ...

    *源地址是caoliu社区你懂的
    回复

    使用道具 举报

  • TA的每日心情
    开心
    2024-4-14 00:00
  • 签到天数: 119 天

    [LV.6]常住居民II

    29

    主题

    598

    回帖

    535

    积分

    专家

    积分
    535

    油中2周年生态建设者油中3周年挑战者 lv2

    发表于 2021-8-19 12:43:34 | 显示全部楼层
    似乎明白了脚本的中心思想和深远含义,隐约觉得这是一个好的脚本,不禁为哥哥的聪明才智所折服。不如哥哥私信我一个那啥社区的网址,省的我去找了。我要实地运行一下这个脚本。看看问题所在。跨域要加// @connect,您加了没
    入驻爱发电 让这世界充满爱 https://afdian.net/a/vpannice
    回复

    使用道具 举报

  • TA的每日心情
    慵懒
    2022-3-8 11:41
  • 签到天数: 2 天

    [LV.1]初来乍到

    22

    主题

    862

    回帖

    1361

    积分

    荣誉开发者

    积分
    1361

    荣誉开发者卓越贡献油中2周年生态建设者油中3周年挑战者 lv2

    发表于 2021-8-19 13:54:54 | 显示全部楼层

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

    我需要使用GM_xmlhttpRequest请求搜索关键词,获取搜索结果列表网页的数据,然后再次使用GM_xmlhttpRequ ...

    我觉得问题可能出在你的header上,有些header是被保护的无法修改,这是浏览器限制(参考这里),至于async/await,可以自己封装一个GM_xmlhttpRequest的ajax函数,数据无法传出可能是你的封装方式不对,一定要用Promise封装。简单示例:

    function ajax(url, options = {}) {
      return new Promise((resolve, reject) => {
        options.url = url;
        options.method = options.method || 'get';
        options.responseType = options.responseType || 'json';
        options.onload = res => res.status === 200 ? resolve(res.response) : reject(res.status);
        options.onerror = () => reject('error');
        options.ontimeout = () => reject('timeout');
        GM_xmlhttpRequest(options);
      });
    }
    已有1人评分油猫币 理由
    李恒道 + 1 ggnb!

    查看全部评分 总评分:油猫币 +1 

    回复

    使用道具 举报

  • TA的每日心情
    开心
    2023-2-28 23:59
  • 签到天数: 191 天

    [LV.7]常住居民III

    637

    主题

    5194

    回帖

    6076

    积分

    管理员

    非物质文化遗产社会摇传承人

    积分
    6076

    荣誉开发者管理员油中2周年生态建设者喜迎中秋

    发表于 2021-8-19 14:32:15 | 显示全部楼层
    木羊羽 发表于 2021-8-19 09:31
    我需要使用GM_xmlhttpRequest请求搜索关键词,获取搜索结果列表网页的数据,然后再次使用GM_xmlhttpRequ ...

    代码太多具体我也很难有什么判断
    哥哥可以写个能触发的小例子我们大家一起调下?
    混的人。
    ------------------------------------------
    進撃!永遠の帝国の破壊虎---李恒道

    入驻了爱发电https://afdian.net/a/lihengdao666
    个人宣言:この世界で私に胜てる人とコードはまだ生まれていません。死ぬのが怖くなければ来てください。
    回复

    使用道具 举报

  • TA的每日心情
    开心
    2022-11-5 13:01
  • 签到天数: 3 天

    [LV.2]偶尔看看I

    12

    主题

    35

    回帖

    59

    积分

    荣誉开发者

    积分
    59

    荣誉开发者

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

    好尬尴啊,要尬死了

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

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

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


    cookies失效需要更新cookies

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

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

    12. (function () {
    13.     let header = {
    14.         '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',
    15.         'accept-encoding': 'gzip, deflate, br',
    16.         'accept-language': 'zh-CN,zh;q=0.9',
    17.         'cookie': 'JSESSIONID=0B904B22B2D367022FCE51C1104E25E3; aywcUid=P5R6Nrycwm_20210819090408; tet=1629365677915; tetm=48862',
    18.         'dnt': '1',
    19.         'referer': 'https://skrbtba.xyz/',
    20.         'sec-fetch-dest': 'document',
    21.         'sec-fetch-mode': 'navigate',
    22.         'sec-fetch-site': 'same-origin',
    23.         'sec-fetch-user': '?1',
    24.         'upgrade-insecure-requests': '1',
    25.         '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',
    26.     }


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

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


    37.         GM_xmlhttpRequest({
    38.             method: 'GET',
    39.             url: search_url,
    40.             headers: header,
    41.             synchronous: true,
    42.             onload: function (response) {

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


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

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

    54.                 } else {
    55.                     count <= 5 ? count : count = 5
    56.                     for (let i = 0; i < count; i++) {
    57.                         let title = $(search_results[i]).children('li')[0].innerText
    58.                         let info = $(search_results[i]).children('li')[1].innerText
    59.                         let href = 'https://skrbtba.xyz/' + $($(search_results[i]).children('li')[0]).children('a').attr("href")
    60.                         data_list[data_list.length] = title
    61.                         data_list[data_list.length] = info
    62.                         data_list[data_list.length] = href
    63.                     }


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

    67.                         let content_url = data_list[k + 2]


    68.                         GM_xmlhttpRequest({
    69.                             method: 'GET',
    70.                             url: content_url,
    71.                             headers: header,
    72.                             synchronous: true,
    73.                             onload: function (response) {

    74.                                 let doc = $(response.responseText)
    75.                                 // console.log(response.responseText)
    76.                                 // let doc = $('html')
    77.                                 try {
    78.                                     data_list.splice(k + 3, 0, $(doc.find('.list-unstyled')[0]).children('li')[3].innerText.match(/[A-Z0-9]{40,40}$/)[0])
    79.                                 }

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


    85.                                 console.log(data_list)

    86.                                 $(flag[i]).after(`<br>************${k}***********<br>${data_list[k]} ${data_list[k + 1]} ${data_list[k + 3]}`)

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


    88.                             }
    89.                         })


    90.                     }
    91.                 }


    92.             }
    93.         })
    94.     }
    95. })()

    复制代码

    回复

    使用道具 举报

    发表回复

    本版积分规则

    快速回复 返回顶部 返回列表