Fork me on GitHub

七夕,单身的我是如何在敲完代码之后收到12束玫瑰的

你们肯定要说:
No picture u say a jb!!!

--- 那就先上图吧

总结,本篇是要介绍博主的一个刷星星(闪存里面的)的脚本,用于挂机刷星星。在七夕就是刷的玫瑰,所以绝不是标题党,就让我带大家一起刷星星吧!

看请求并自己模拟发送


1
2
3
4
5
6
$.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

由命名可知(也确实如此),可以选择类型(我的,我回应,新回应,提到我,回复我,全站),第几页,每页数量。最后一个是时间戳。

我们模拟请求:

1
2
3
4
5
6
7
8
$.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条来判断,如果有3个人以上刚刚跟我一起刷闪存,那我就找不到啦...所以可以让每页多一点数量。

这是我找到并判断是否有星星的代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
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 {
                   //没找到星星,看来运气不好。那么就把刚刚那条删除吧!!!
               }

对于只要星星(玫瑰)的人来说,没用的就扔掉吧...

这个我也不发图了,直接上代码:
1
2
3
4
5
//删除闪存
function delMsg(id) {
    console.log("..............没有星星,删除该闪存,id为" + id);
    return $.post("http://ing.cnblogs.com/ajax/ing/del", JSON.stringify({ ingId: id }));
}


能否获取“星星”,真的跟脸有关,我6分钟刷一次,刷一下午一晚上才十几个。
现在是12点43,我很忐忑。我公司电脑挂这个脚本一直刷,我在家里看着没办法,不知道明天会不会小黑屋......明天早上早点去停了吧。
而且不知道是不是浏览器卡主了,偶尔有几个没有星星,它也没删掉...

以下是完整代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
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("https://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: "https://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 delA = feedDiv.find("a.recycle");
                if (delA.length > 0) {
                    console.log("..............找到发送的闪存,开始判断");
                } else {
                    console.log("..............未找到发送的闪存,可能脚本错误");
                }
                var id = delA.attr("onclick").match(/DelIng\((\d+)\)$/)[1];
                if (delA.prev("img.ing_icon_lucky").length > 0) {
                    console.log("..............幸运闪 +1 【星星】");
                } else {
                    delMsg(id);
                }               
            }
        });
    }
 
    //删除闪存
    function delMsg(id) {
        console.log("..............没有星星,删除该闪存,id为" + id);
        return $.post("https://ing.cnblogs.com/ajax/ing/del", JSON.stringify({ ingId: id }));
    }
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
// 更新于:2017/12/21
var ing = (function () {
    /**
 * 发布闪存
 *
 * @param {string} content
 * @returns {promiseLike}
 */
    function publishTxt(content) {
        var url = 'https://ing.cnblogs.com/ajax/ing/Publish';
        var dfd = $.Deferred();
        console.log('-----------------------------------------');
        console.log('...发送闪存');
        $.post(url, {
            content: content,
            publicFlag: 1
        }, function (result) {
            if (result.isSuccess) {
                console.log('...发送成功');
                dfd.resolve();
            } else {
                console.log('...发送失败');
                dfd.reject();
            }
        }, 'json');
        return dfd;
    }
 
    function checkHasStarAndDel() {
        var url = 'https://ing.cnblogs.com/ajax/ing/GetIngList?IngListType=my&PageIndex=1&PageSize=30&Tag=&_=' + +new Date;
        console.log('...检测是否有星星');
        $.get(url, function (result) {
            var $ele = $(result).eq(2);
            var $feedBody = $ele.find('ul>li:first .feed_body'); // wrap
            var hasStar = $feedBody.children('.ing-icon').length; // 是否有star
            var id = $feedBody.attr('id').replace('feed_content_', '');
            if (!hasStar) {
                delIng(id);
                console.log('...没有star,删除');
            } else {
                console.log('..............');
                console.log('【星星】 +1')
                console.log('..............');
            }
            console.log('-----------------------------------------');
        }, 'html');
    }
 
    function delIng(ingId) {
        $.post('/ajax/ing/del', {
            ingId: ingId
        });
    }
 
    return {
        send: function (content) {
            publishTxt(content).then(checkHasStarAndDel);
        },
        loop: function (content, interval) {
            var self = this;
            self.send(content);
            return setInterval(function () {
                self.send(content);
            }, interval);
        }
    };
})();

下面是厚颜无耻的求赞时间

您有没有对这篇文章感兴趣呢?










.

posted on   上位者的怜悯  阅读(13463)  评论(169编辑  收藏  举报

编辑推荐:
· 没有源码,如何修改代码逻辑?
· 一个奇形怪状的面试题:Bean中的CHM要不要加volatile?
· [.NET]调用本地 Deepseek 模型
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· .NET Core 托管堆内存泄露/CPU异常的常见思路
阅读排行:
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· 没有源码,如何修改代码逻辑?
· NetPad:一个.NET开源、跨平台的C#编辑器
· PowerShell开发游戏 · 打蜜蜂
· 在鹅厂做java开发是什么体验
< 2025年2月 >
26 27 28 29 30 31 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 1
2 3 4 5 6 7 8

统计

点击右上角即可分享
微信分享提示
咦你想做什么 oAo
menu