当前位置 博文首页 > 梦想橡皮擦,专栏100例写作模式先行者:Amazing!在CSDN官方插件

    梦想橡皮擦,专栏100例写作模式先行者:Amazing!在CSDN官方插件

    作者:[db:作者] 时间:2021-08-16 18:54

    每天都登录 CSDN,但是总是忘记签到,虽然签到也抽不到奖,但是先签了再说。
    本款插件实现了,只要当天打开 CSDN 任意一篇文章,后台默认自动签到。

    在这里插入图片描述

    梳理插件逻辑

    手动签到逻辑:
    打开 https://i.csdn.net/#/user-center/draw?type=reward,点击签到按钮。

    自动签到逻辑:

    1. 找到签到接口,查看请求接口与请求参数;
    2. 通过 jQuery 模拟请求;

    逻辑梳理清楚之后,就可以准备相关开发素材了:

    抓取到的接口如下:
    https://me.csdn.net/api/LuckyDraw_v2/signIn

    抓取到参数格式如下:
    payload,具体数据如下

    {
      "product": "pc",
      "username": "你的ID",
      "ip": "",
      "user_agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:90.0) Gecko/20100101 Firefox/90.0",
      "platform": "pc-my",
      "uuid": "你的UUID"
    }
    

    数据请求格式如下:
    POST

    接口响应数据如下:

    因为签到之后,我们不需要后续操作,所以响应内容可忽略。
    在这里插入图片描述
    隐藏逻辑
    发送请求时,需要携带 cookie 信息,该 cookie 信息主要用于验证当前签到人是谁。

    该类接口不好测试,因为每天只能签到 1 次,用完就要换号。

    编码时间

    逻辑整理完毕,可直接进入插件编写环节,本次依旧在CSDN 开发者工具中进行扩展,创建插件步骤直接参考官方说明即可。

    插件匹配规则如下

    *://*.csdn.net/*
    

    插件增加外部资源如下

    // 引入 jquery
    https://cdn.bootcss.com/jquery/1.12.4/jquery.js
    // 引入 jquery cookie,用于操作 cookie
    https://cdn.bootcdn.net/ajax/libs/jquery-cookie/1.3.1/jquery.cookie.js
    

    在这里插入图片描述
    核心 JS 编写如下,相关说明,在注释与代码下方

    (function () {
      // Your code here...
      // 获取cookie中的 uuid,用户标致
      uuid = $.cookie("uuid_tt_dd");
      // 获取cookie中的username
      name = $.cookie("UserName");
      // 用于每天请求一次签到地址
      is_signin = $.cookie("ca_is_signin");
      //console.log(is_signin);
    
      var expire = new Date();
      //console.log(expire.getTime());
      // 设置 cookie 失效时间为每日 23:55:00
      date_str = expire.toLocaleDateString() + " 23:55:00";
    
      var newdate = new Date(date_str);
    
      if (is_signin == null) {
        $.cookie("ca_is_signin", "yijingqiandao", {
          expires: newdate,
          path: "/",
          domain: "csdn.net",
        });
        // 请求注册
        $.ajax({
          type: "POST",
          url: "https://me.csdn.net/api/LuckyDraw_v2/signIn",
          contentType: "application/json;charset=UTF-8",
          xhrFields: {
            withCredentials: true,
          }, //该参数非常重要,缺失将无法成功签到
          data: JSON.stringify({
            product: "pc",
            username: name,
            ip: "",
            user_agent:
              "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36",
            platform: "pc-my",
            uuid: uuid,
          }),
          success: function (cb) {
            console.log("签到成功");
          },
        });
      } else {
        console.log("今天已经签到过了");
      }
    })();
    

    在签到请求中,有两个参数是签到者本人标志数据,其一是 username,其二是 uuid,二者可以通过 cookie 进行获取。

    在后面的逻辑中,通过一个有失效时间的 cookie 去判断用户今日是否签到,该 cookie 为 ca_is_signin,如果该值为空,即未签到,否则为已签到。

    该特定时间设置为每日的 23:55:00,即该时间点 cookie 失效。

    $.ajax 请求为普通的请求,只是在请求时增加一个参数,即 xhrFields,并将该值中的 withCredentials 设置为 true,用于表示跨域请求带上 cookie,即抓取当前域下的所有 cookie ,一起发送到服务器端。

    至此,该款插件研发完成,你具备了一款能自动签到的插件,只要当天你打开过 CSDN,默认就会签到。

    写在后面

    插件下载地址:https://plugin.csdn.net/plugin?pluginId=CSDNPlugin-54538234-1626751424012-43890936

    今天是持续写作的第 187 / 200 天。
    可以关注点赞评论收藏,拉进你我缘分。

    更多精彩

    • Python 爬虫 100 例教程导航帖(抓紧订阅啦)
    cs
    下一篇:没有了