基于CSDN闪存接口的自动化刷星星脚本实现

作者:栖木时间:2026-10-29 14:06:03浏览:542

本文介绍了一个基于JavaScript的自动化脚本,通过模拟CSDN闪存(Ing)的Ajax接口实现自动发布、检测幸运闪并清理无效内容的功能。文章详细解析了发送消息、获取列表判断星星以及删除无星星闪存的核心逻辑,提供了完整的代码实现与关键参数说明,旨在帮助用户通过挂机方式获取平台奖励。

脚本效果展示与概述

首先展示最终运行效果的截图。

脚本效果展示与概述

本文主要介绍一个用于CSDN闪存自动刷取星星的脚本,该脚本支持挂机运行。虽然标题提及情人节玫瑰,但核心功能仍是针对闪存星星的自动化获取,并非标题党,接下来将详细讲解具体实现过程。

发送消息接口模拟

第一步:发送消息

通过分析网络请求,手动模拟发送消息接口。

脚本效果展示与概述


$.post("http://ing.cnblogs.com/ajax/ing/Publish",   //地址
 JSON.stringify({ "content": content, "publicFlag": 1 }), //参数,json格式字符串
 function (result) {          //回调
  console.log("..............发送成功了,接下来判断是否有星星");
  result && result.IsSuccess && judgeStar(content)
 }, "json");            //返回的内容转成js对象

幸运闪判断逻辑

第二步:判断刚发送的消息是否包含幸运闪

同样通过观察请求响应来验证逻辑。

脚本效果展示与概述 

查询幸运闪的接口地址为:http://ing.cnblogs.com/ajax/ing/GetIngList?IngListType=all&PageIndex=1&PageSize=30&Tag=&_=1440087133884

从接口命名可以看出,该接口支持多种类型筛选(如我的、我回应、新回应、提到我、回复我、全站),并可指定页码和每页数量,末尾参数为时间戳。

以下是模拟请求的代码示例:


$.ajax({
   url: "http://ing.cnblogs.com/ajax/ing/GetIngList?IngListType=all&PageIndex=1&PageSize=3&Tag=&_=" + (+new Date),
   type: "get",
   dataType: "text",
   success: function (result) {
    //处理的逻辑<br>    //window.doc=$(result); //可以在控制台看看出来的是什么鬼
   }
  });

这里使用 dataType:"text" 的原因在于:

脚本效果展示与概述

接口返回的是HTML代码。通过 $(result) 在控制台查看,发现结果分为三部分。我们需要定位到刚刚发送的那部分,并判断其中是否包含幸运闪。为了简化处理,这里仅获取前3条进行判断;如果同时与我一起刷闪存的人数超过3人,可能无法准确定位,因此建议适当增加每页返回的数量。

以下是查找并判断是否存在星星的代码片段:


var feedDiv = $(result).eq(2);
    var msgSpan = feedDiv.find("span:contains('" + msg + "')");
    //这样找其实不严谨,尤其在大晚上的找的全是自己的...
    if (msgSpan.length > 0) {
     console.log("..............找到发送的闪存,开始判断");
    } else {
     console.log("..............未找到发送的闪存,可能脚本错误");
    }
    var id = msgSpan.attr("id").match(/body_(\d+)$/)[1];
    if (msgSpan.next("img.ing_icon_lucky").length > 0) {
     console.log("..............幸运闪 +1 【星星】");
    } else {
     //没找到星星,看来运气不好。那么就把刚刚那条删除吧!!!
    }

无效闪存清理机制

第三步:删除没有星星的无效闪存

对于只关注星星(或玫瑰)的用户来说,没有获得奖励的闪存应当被清理。

此处不再配图,直接提供删除逻辑的代码:


//删除闪存
function delMsg(id) {
 console.log("..............没有星星,删除该闪存,id为" + id);
 return $.post("http://ing.cnblogs.com/ajax/ing/del", JSON.stringify({ ingId: id }));
}

运行结果与注意事项

第四步:总结

能否获取“星星”确实存在随机性,受运气影响较大。笔者测试中每6分钟执行一次,持续挂机一下午和一晚,仅获得十几个星星。

当前时间为12点43分,对此脚本的长期运行效果感到担忧。在公司电脑上挂机运行此脚本,而本人在家中监控,不确定是否会被平台限制(小黑屋),计划明早早点去停止运行。

此外,由于浏览器偶尔可能出现卡顿,导致部分没有星星的闪存未被及时删除,这也是需要注意的问题。

以下是完整的脚本代码:


function memeda(input) {
 var times = 0;
 shuaXingXing(input);
 function shuaXingXing(content) {
  sendMsg(content);
  setInterval(function () {
   sendMsg(content);
  }, 1000 * 60 * 6 + 100);
 }
 //发送闪存消息
 function sendMsg(content) {
  console.log("....................................................................");
  times++;
  console.log("当前时间:" + new Date().toLocaleTimeString() + "  第" + times + "次发送闪存");
  console.log("..............发送闪存");
  return $.post("http://ing.cnblogs.com/ajax/ing/Publish", JSON.stringify({ "content": content, "publicFlag": 1 }), function () { }, "json")
   .done(function (result) {
    console.log("..............判断是否有星星");
    result && result.IsSuccess && judgeStar(content)
   });
 }
 //判断是否有星星
 function judgeStar(msg) {
  $.ajax({
   url: "http://ing.cnblogs.com/ajax/ing/GetIngList?IngListType=all&PageIndex=1&PageSize=3&Tag=&_=" + (+new Date),
   type: "get",
   dataType: "text",
   success: function (result) {
    var feedDiv = $(result).eq(2);
    var msgSpan = feedDiv.find("span:contains('" + msg + "')");
    if (msgSpan.length > 0) {
     console.log("..............找到发送的闪存,开始判断");
    } else {
     console.log("..............未找到发送的闪存,可能脚本错误");
    }
    var id = msgSpan.attr("id").match(/body_(\d+)$/)[1];
    if (msgSpan.next("img.ing_icon_lucky").length > 0) {
     console.log("..............幸运闪 +1 【星星】");
    } else {
     delMsg(id);
    }
   }
  });
 }
 //删除闪存
 function delMsg(id) {
  console.log("..............没有星星,删除该闪存,id为" + id);
  return $.post("http://ing.cnblogs.com/ajax/ing/del", JSON.stringify({ ingId: id }));
 }
}

以上就是本文关于情人节单身人士如何通过代码获取12束玫瑰的完整教程,希望对大家有所帮助。

作者最新文章