基于SpringBoot、Docker和阿里云的稀土掘金社区自动签到与自动抽奖脚本:设计、开发与部署实践

创建一个SpringBoot项目

添加依赖

<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>cn.hutool</groupId><artifactId>hutool-all</artifactId><version>${hutool.version}</version></dependency><dependency><groupId>com.squareup.okhttp3</groupId><artifactId>okhttp</artifactId></dependency>    
<!--        redis--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-redis</artifactId></dependency>   

开启定时任务

在这里插入图片描述

编写自动签到代码

@Api(tags = "掘金")
@RestController
@RequestMapping("/jue-jin")
@Slf4j
@ResponseInfoSkin
public class JueJin {public static final String COOKIE = ":cookie";public static final String JUEJIN="juejin";// 每天9点15中开始执行public static final String IN_TIME = "0 15 09 ? * *";// 每天9点17中开始执行public static final String DRAW_TIME = "0 17 09 ? * *";@Resourceprivate RedisServiceUtil redisServiceUtil;@SneakyThrows@GetMapping("sign-in")@ApiOperation("签到")@Scheduled(cron = IN_TIME)public String signIn() {log.info("掘金自动签到开始");String str = redisServiceUtil.get(JUEJIN + COOKIE);//List<String> list = JSONUtil.toBean(str, List.class);List<String> list = JsonUtils.toObject(str, List.class);if (CommUtil.isEmpty(list)) {return "失败";}Map<String, String> header = Maps.newHashMap();//签到任务接口String url = "https://api.juejin.cn/growth_api/v1/check_in";for (String id : list) {//你的cookieString juejinCookie =id;RequestBody requestBody = new FormBody.Builder().build();String post = post(url, juejinCookie, requestBody, header);log.info("执行成功的cookie:{},执行结果为::{}", id, post);}return "成功";}//post请求的工具类方法public static String post(String url, String cookie, RequestBody requestBody, Map<String, String> header) throws Exception {String userAgent = "okhttp/3.12.1;jdmall;android;version/10.3.4;build/92451;";OkHttpClient client = new OkHttpClient().newBuilder().build();Request request = new Request.Builder().url(url).post(requestBody).headers(Headers.of(header)).addHeader("Cookie", cookie).addHeader("User-Agent", userAgent).addHeader("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8").addHeader("Cache-Control", "no-cache").addHeader("connection", "Keep-Alive").addHeader("accept", "*/*").build();Response response = client.newCall(request).execute();String result = response.body().string();log.info("post请求,result:{}", result);return result;}@SneakyThrows@GetMapping("lottery-draw")@ApiOperation("抽奖")@Scheduled(cron = DRAW_TIME)public String lotteryDraw() throws Exception {log.info("掘金自动抽奖开始");String str = redisServiceUtil.get(JUEJIN + COOKIE);//List<String> list = JSONUtil.toBean(str, List.class);List<String> list = JsonUtils.toObject(str, List.class);if (CommUtil.isEmpty(list)) {return "失败";}Map<String, String> header = Maps.newHashMap();//抽奖接口String drawUrl = "https://api.juejin.cn/growth_api/v1/lottery/draw";for (String id : list) {//你的cookieString juejinCookie =id;RequestBody requestBody = new FormBody.Builder().build();String response = post(drawUrl, juejinCookie, requestBody, header);log.info("执行成功的cookie:{},执行结果为::{}", id, response);}return "success";}@PostMapping@ApiOperation("存cookie")public String set(@org.springframework.web.bind.annotation.RequestBody List<String> cookies) {String list = JSONUtil.toJsonStr(cookies);redisServiceUtil.set(JUEJIN + ":cookie", list);return "success";}
}

swagger 接口

在这里插入图片描述

如何找到自己的掘金cookie

在这里插入图片描述

复制自己的cookie

粘贴到接口:存cookie

在这里插入图片描述

定时:@Scheduled(cron = IN_TIME)

这个注解就不在这里展开了

编写Dockerfile

FROM eclipse-temurin:8-jre## 创建目录,并使用它作为工作目录
RUN mkdir -p /home/project/kkxx-poi
WORKDIR /home/project/kkxx-poi
## 将后端项目的 Jar 文件,复制到镜像中
COPY ./kkxx-poi-1.1-SNAPSHOT.jar app.jar## 设置 TZ 时区
## 设置 JAVA_OPTS 环境变量,可通过 docker run -e "JAVA_OPTS=" 进行覆盖
ENV TZ=Asia/Shanghai JAVA_OPTS="-Xms128m -Xmx512m"## 暴露后端项目的 9091 端口
EXPOSE 9091#  -Djava.security.egd=file:/dev/./urandom 这是加快生成随机数的配置
# https://blog.csdn.net/qq_39581637/article/details/122719838
## 启动后端项目
CMD java ${JAVA_OPTS}  -jar app.jar

复制到自己服务器某个目录

在这里插入图片描述

构建镜像

docker build -f /home/project/Dockerfile -t kkxx-poi-image:test .

启动镜像

docker run -d --name kkxx-poi-name -p 9092:9091 kkxx-poi-image:test

手动测试swagger文档地址

http://ip:9092/doc.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/466112.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

猫头虎分享已解决Bug || Error: Maximum Update Depth Exceeded in React ‍

博主猫头虎的技术世界 &#x1f31f; 欢迎来到猫头虎的博客 — 探索技术的无限可能&#xff01; 专栏链接&#xff1a; &#x1f517; 精选专栏&#xff1a; 《面试题大全》 — 面试准备的宝典&#xff01;《IDEA开发秘籍》 — 提升你的IDEA技能&#xff01;《100天精通鸿蒙》 …

matlab发送串口数据,并进行串口数据头的添加,我们来看下pwm解析后并通过串口输出的效果

uintt16位的话会在上面前面加上00&#xff0c;16位的话一定是两个字节&#xff0c;一共16位的数据 如果是unint8的话就不会&#xff0c; 注意这里给的是13&#xff0c;但是现实的00 0D&#xff0c;这是大小端的问题&#xff0c;在matlanb里设置&#xff0c;我们就默认用这个模式…

计算机网络——网络安全

计算机网络——网络安全 前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家&#xff0c; [跳转到网站](https://www.captainbed.cn/qianqiu) 小程一言专栏链接: [link](http://t.csdnimg.cn/ZUTXU) 网络安全何…

MATLAB知识点:isempty函数(★★★★☆)判断数组是否为空

​讲解视频&#xff1a;可以在bilibili搜索《MATLAB教程新手入门篇——数学建模清风主讲》。​ MATLAB教程新手入门篇&#xff08;数学建模清风主讲&#xff0c;适合零基础同学观看&#xff09;_哔哩哔哩_bilibili 节选自第3章&#xff1a;课后习题讲解中拓展的函数 在讲解第…

LLM大模型常见问题解答(3)

简要描述下列概念在大语言模型中的作用 Transformer 架构Attention 机制预训练与微调过拟合和欠拟合 Transformer 架构 Transformer是一种基于自注意力机制的深度学习模型&#xff0c;它在论文“Attention Is All You Need”中首次提出。与此前流行的循环神经网络&#xff0…

酷开科技荣获“消费者服务之星”称号后的未来展望

恭喜酷开科技荣获2023年第四季度黑猫平台“消费者服务之星”称号&#xff01;这是对酷开科技长期以来坚持用户至上、用心服务的肯定和认可。作为OTT行业的佼佼者&#xff0c;酷开科技一直秉承着“以用户为中心”的服务理念&#xff0c;不断追求卓越品质&#xff0c;为用户提供更…

2024年低代码平台概览:国内主流平台一览

低代码开发是一项革命性的技术&#xff0c;主要目的是尽量避免程序研发的复杂性&#xff0c;让外行开发者也能加入到应用程序的搭建中。低代码平台的核心概念和构成部分通常包括用户界面和拖拽设计、预构件和模块、自动化工作内容与数据库集成和扩展应用&#xff0c;应用低代码…

c++ 内存

c 内存 内存分区 1.代码区&#xff1a;程序的机器指令&#xff0c;可以被机器直接执行。 属性&#xff1a;只读和共享 代码区包含什么&#xff1a; 在程序编译时就已经被分配好了地址&#xff0c;并保存在可执行文件的代码段中。当程序运行时&#xff0c;操作系统会将代码段的…

Oracle的学习心得和知识总结(三十二)|Oracle数据库数据库回放功能之论文四翻译及学习

目录结构 注&#xff1a;提前言明 本文借鉴了以下博主、书籍或网站的内容&#xff0c;其列表如下&#xff1a; 1、参考书籍&#xff1a;《Oracle Database SQL Language Reference》 2、参考书籍&#xff1a;《PostgreSQL中文手册》 3、EDB Postgres Advanced Server User Gui…

高级自定义标记功能

高级自定义标记功能 自定义标记时用户定义的标记,它可通过创建可重用的组件来尽量较少JSP中复杂、重复的业务逻辑代码。这些组件可用于其他应用程序。Javax.servlet.jsp.tagtext包定义了开发自定义标记的类和接口。您可以使用此包的类和接口创建标记处理程序,这些程序可实现带…

【机器学习】卷积和反向传播

一、说明 自从 AlexNet 在 2012 年赢得 ImageNet 竞赛以来&#xff0c;卷积神经网络 (CNN) 就变得无处不在。从不起眼的 LeNet 到 ResNets 再到 DenseNets&#xff0c;CNN 无处不在。 您是否想知道 CNN 的反向传播中会发生什么&#xff0c;特别是反向传播在 CNN 中的工作原理。…

黄金交易策略(Nerve Nnife.mql4):趋势做单

完整EA&#xff1a;Nerve Knife.ex4黄金交易策略_黄金趋势ea-CSDN博客 当大小趋势相同行情走向也相同&#xff0c;就会开仓做顺势单&#xff0c;并会顺势追单&#xff0c;以达到快速止盈平仓的效果。大趋势追求稳定&#xff0c;小趋势追求敏捷&#xff0c;行情走向比小趋势更敏…