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

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

[复制链接]
  • TA的每日心情
    开心
    2022-11-5 13:01
  • 签到天数: 3 天

    [LV.2]偶尔看看I

    12

    主题

    35

    回帖

    59

    积分

    荣誉开发者

    积分
    59

    荣誉开发者

    发表于 2021-8-19 17:09:40 | 显示全部楼层
    本帖最后由 木羊羽 于 2021-8-19 17:11 编辑

    好尬尴啊,要尬死了

    目标网站: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. })()

    复制代码

    回复
    订阅

    使用道具 举报

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

    [LV.2]偶尔看看I

    12

    主题

    35

    回帖

    59

    积分

    荣誉开发者

    积分
    59

    荣誉开发者

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

    回复

    使用道具 举报

  • TA的每日心情
    开心
    3 天前
  • 签到天数: 119 天

    [LV.6]常住居民II

    29

    主题

    598

    回帖

    535

    积分

    专家

    积分
    535

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

    发表于 2021-8-19 18:28:15 | 显示全部楼层

    写的挺好,应该是需要的数据没正确截取到。建议把磁力链接那块a标签整个截取插入到白花花这个网页。还有打开白花花网页时,脚本运行次数太多了得想办法避免。挺好的。我再帮你仔细研究一下这个白花花网站
    入驻爱发电 让这世界充满爱 https://afdian.net/a/vpannice
    回复

    使用道具 举报

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

    [LV.7]常住居民III

    632

    主题

    5161

    回帖

    6041

    积分

    管理员

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

    积分
    6041

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

    发表于 2021-8-19 20:33:30 | 显示全部楼层

    好奇怪...我帮不到哥哥,xhr的post我这里post不出来,我日
    混的人。
    ------------------------------------------
    進撃!永遠の帝国の破壊虎---李恒道

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

    使用道具 举报

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

    [LV.1]初来乍到

    22

    主题

    860

    回帖

    1359

    积分

    荣誉开发者

    积分
    1359

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

    发表于 2021-8-19 22:11:02 | 显示全部楼层

    调试了下你的代码,怎么说呢,老生常谈的问题了:不要在遍历数组时修改数组长度! 你在给数组添加磁力链的时候用了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失败的原因。

    已有1人评分油猫币 理由
    李恒道 + 1 ggnb!

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

    回复

    使用道具 举报

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

    [LV.2]偶尔看看I

    12

    主题

    35

    回帖

    59

    积分

    荣誉开发者

    积分
    59

    荣誉开发者

    发表于 2021-8-20 08:30:11 | 显示全部楼层
    cxxjackie 发表于 2021-8-19 22:11
    [md]调试了下你的代码,怎么说呢,老生常谈的问题了:**不要在遍历数组时修改数组长度!** 你在给数组添加 ...

    感谢大佬!!!爱你么么哒!!!
    回复

    使用道具 举报

  • TA的每日心情
    开心
    3 天前
  • 签到天数: 119 天

    [LV.6]常住居民II

    29

    主题

    598

    回帖

    535

    积分

    专家

    积分
    535

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

    发表于 2021-8-21 12:59:35 | 显示全部楼层
    木羊羽 发表于 2021-8-20 08:30
    感谢大佬!!!爱你么么哒!!!

    哥哥脚本优化好了没?发出来呀
    入驻爱发电 让这世界充满爱 https://afdian.net/a/vpannice
    回复

    使用道具 举报

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

    [LV.7]常住居民III

    632

    主题

    5161

    回帖

    6041

    积分

    管理员

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

    积分
    6041

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

    发表于 2021-8-21 14:08:01 | 显示全部楼层
    脚本体验师001 发表于 2021-8-21 12:59
    哥哥脚本优化好了没?发出来呀

    虾仁诛心
    混的人。
    ------------------------------------------
    進撃!永遠の帝国の破壊虎---李恒道

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

    使用道具 举报

  • TA的每日心情
    开心
    2022-9-11 10:49
  • 签到天数: 19 天

    [LV.4]偶尔看看III

    13

    主题

    276

    回帖

    251

    积分

    版主

    积分
    251
    发表于 2021-8-21 14:29:47 | 显示全部楼层
    本来以为是开玩笑,原来真的是草榴...
    回复

    使用道具 举报

  • TA的每日心情
    开心
    3 天前
  • 签到天数: 119 天

    [LV.6]常住居民II

    29

    主题

    598

    回帖

    535

    积分

    专家

    积分
    535

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

    发表于 2021-8-21 15:41:10 | 显示全部楼层
    孔曰:食色行也,不吃不喝不拉不撒不爱不恨,还是男人吗!
    孟曰:说得对,俺举双手赞成!
    入驻爱发电 让这世界充满爱 https://afdian.net/a/vpannice
    回复

    使用道具 举报

    发表回复

    本版积分规则

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