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

[脚本实战篇]分析网络请求

[复制链接]
  • TA的每日心情
    擦汗
    4 天前
  • 签到天数: 194 天

    [LV.7]常住居民III

    720

    主题

    6071

    回帖

    6850

    积分

    管理员

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

    积分
    6850

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

    发表于 2022-5-10 23:44:02 | 显示全部楼层 | 阅读模式

    之前知道我们点击章节会远程加载一下内容
    所以这节课目的主要是分析一下网络请求封装出一个函数
    抓包可以知道调用了一个getRess
    图片.png
    提交参数也非常简单
    是一个章节id
    图片.png
    那么我们的目标很简单了
    就是将之前得到的数组全部转化为章节id
    并实现请求,拿到相应数据
    我们再查看一下返回数据
    图片.png
    可以看到就是简单的章节内数据
    那我们开始写吧
    先从dom中读取到章节数据
    这里看到有两种元素,li的是主章节的,a是子章节的
    图片.png
    我们先看主章节,在data-id属性上
    图片.png
    而子章节的却在data-secid上
    图片.png
    那么我们可以直接写一个暴力判断
    通过读data-id属性,如果读不到直接写一个data-secid属性
    因为我们是遍历数组,所以可以直接写一个map属性,然后根据其返回值进行赋值

    ChapterList= ChapterList.map((item)=>item.getAttribute("data-id")??item.getAttribute("data-secid"))

    可以直接由dom数组转化成id的数组集合
    图片.png
    然后我们封装GM_Xhr制作一个简单的promise的post封装

    function GetRessList(id){
        return new Promise((resolve,reject)=>{
    
            GM_xmlhttpRequest({
                url:"https://service.icourses.cn/hep-company//sword/company/getRess",
                method :"POST",
                data:"sectionId="+id,
                headers: {
                    "Content-type": "application/x-www-form-urlencoded; charset=UTF-8"
                },
                onload:function(xhr){
                    try {
                        resolve(JSON.parse(xhr.responseText).model.listRes)
                    }
                    catch(err) {
                        resolve([])
                    }
                }
            });
        })
    }

    这里用了promise封装,然后直接json解析找到listRes,如果中间出现任何错误则返回一个空数组
    图片.png
    然后简单测试一下
    图片.png
    可以发现拿到了数组~
    那么这节课我们就搞定了
    下节课我们开始尝试操控网页的数据来实现自动刷课!

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

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

    发表回复

    本版积分规则

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