(没用,只是学习贴,可能永不会更新)Js 写《智慧树》自动评论脚本

本文只做学习用途,且功能不完整

我也不知道为什么,考研这么紧张的时候还要写个这个脚本,而且功能没有完全实现,现在前段写的越来越好了,写个好的脚本还是有点困难。

这里只算学习了吧,记录一下js的学习进步过程


一、脚本目的

        为了实现智慧树回答的自动评论。(左为原界面,右为代码运行后的界面)

        最终实现到这一步:

 


二、演示

1.打开评论

        在左上角加入功能键按钮。

        1. 其中“打开评论”针对         https://qah5.zhihuishu.com/qa.html#/web/home/**        父页面,可以实现打开多个评论页面,对应函数为以下的 opencomment():

// 打开评论函数
// i在setting中设置,是打开评论的条数

function opencomment(i){
    // 获取评论
        _self.comment = $('.question-content span:eq('+i+')').text();
        console.log(_self.comment);

        // 点击进入评论
        $('.question-content span:eq('+i+')').click();
}

 

2.一键评论

        针对  https://qah5.zhihuishu.com/qa.html#/web/questionDetail/**     子页面,读取第一个人的评论,并实现评论。(评论div点击未完成,智慧树的“发布”不是button,用的div-class)

// 评论函数
function comment(){
    // 获取评论
    _self.comment = $('.answer-content span:eq(0)').text();
    console.log(_self.comment);

    _self.document.getElementsByClassName("my-answer-btn tool-show")[0].click();// 点击进入评论

    // 延时评论 等对话框出来
    sleep(500).then(() => {
        _self.$('.el-textarea__inner').click();
        _self.$('.el-textarea__inner').val(_self.comment);// 写入评论
        _self.document.getElementsByClassName("up-btn")[0].className = "up-btn set-btn"; // 修改提交按钮,使其可以正常工作
        _self.document.getElementsByClassName("up-btn set-btn")[0].click();
    });
}

3.完整代码

// ==UserScript==
// @name         Automatic comments
// @namespace    http://tampermonkey.net/
// @version      0.1
// @description  Automatic comments
// @author       Ws3
// @match        https://qah5.zhihuishu.com/qa.html
// @icon         https://www.google.com/s2/favicons?domain=zhihuishu.com
// @grant        unsafeWindow
// @grant        GM_xmlhttpRequest
// @grant        GM_setClipboard
// @grant        GM_setValue
// @grant        GM_getValue
// ==/UserScript==

// 设置修改后,需要刷新或重新打开网课页面才会生效
var setting = {
    time: 8E3 // 默认响应速度为5秒,不建议小于3秒
    ,length: 3 // 评论条数

    , script: 'automatic_comment_WS3'
    , version: '1.0.0'
};

var _self = unsafeWindow,
    url = location.pathname,
    $ = _self.jQuery,
    xhr = _self.XMLHttpRequest;

const sleep = (time) => {
    return new Promise(resolve => setTimeout(resolve, time));
}

// 打开评论函数
function opencomment(i){
    // 获取评论
        _self.comment = $('.question-content span:eq('+i+')').text();
        console.log(_self.comment);

        // 点击进入评论
        $('.question-content span:eq('+i+')').click();
}

// 评论函数
function comment(){
    // 获取评论
    _self.comment = $('.answer-content span:eq(0)').text();
    console.log(_self.comment);

    _self.document.getElementsByClassName("my-answer-btn tool-show")[0].click();// 点击进入评论

    // 延时评论 等对话框出来
    sleep(500).then(() => {
        _self.$('.el-textarea__inner').click();
        _self.$('.el-textarea__inner').val(_self.comment);// 写入评论
        _self.document.getElementsByClassName("up-btn")[0].className = "up-btn set-btn"; // 修改提交按钮,使其可以正常工作
        _self.document.getElementsByClassName("up-btn set-btn")[0].click();
    });
}

setting.div = $(
     '<div style="border: 2px dashed #377DFF; width: 100px; position: fixed; top: 0; left: 0; z-index: 99999; background-color: #EBF2FF; overflow-x: auto;">' +
    '<span style="font-size: medium;"></span>' +
    '<button style="margin-right: 20px;">打开评论</button>'+
    '<button style="margin-right: 20px;">一键评论</button>'

).appendTo('body').on('click','button,td',function(){

    var len = $(this).prevAll('button').length;
    console.log("一键评论");

    if (len === 0) {
        console.log("打开评论");
        for (var i=0;i<setting.length;i++){
            opencomment(i);
    }}

    else {
        console.log("实现评论");
        comment(); // 获取并打开评论窗口
        }
})

三、总结与心得

1. bug

        1. 同时打开多个界面的时候,评论子界面会丢失评论按钮,无法评论;

        2. 评论界面应该是有js禁止了模拟输入,测试的的时候发现,直接给textarea赋值的时候“发布”按钮变灰无法工作,直接修改其class属性无法使其正常工作,但是接着手动输入字符的时候就可以发布,应该是模拟点击输入没有写好,无法绕过(这也是最主要的bug***)

2. 心得

        相比第一次写的脚本,第一个脚本实在看不过去,这次发现了unsafeWindow、jQuery、setTimeout等函数,使得可以实现更多功能。脚本要是写得好,真的方便很多,但是写脚本的资料感觉好少,智慧树的保护还不错(吧),至少把现在的我拦住了。

        或许可以试试selenium?只是学习而已,不会再往下做了,但是要是有同学有意愿或者会一些有想法解决这些问题,欢迎和我沟通,大家一起学习进步。

(写一个脚本真的好好玩哈哈哈哈)

 

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

1011 0011

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值