准备:云服务器(域名可有可无,不过既然都上云,建议买域名做个自己的网站)
技术栈:lnmp+python+android前端
重点学习内容是php和python脚本和android前端
本文重在服务器,不在前端与脚本

一、环境配置

服务端环境配置,基本都是傻瓜式一键操作,没有难度。

云服务器如何搭建,推荐这篇文章
涉及第一次购买服务器的基本配置+LNMP环境搭建
注意:php版本建议选择7.x以上,如果不考虑wordpress搭建网站,看到第六部分之前即可
链接: https://blog.csdn.net/u014557455/article/details/124858175

确认已经搭建好宝塔界面,后续操作全部在宝塔界面实现
下面搭建网站,这里不使用任何框架

宝塔-》网站-》添加站点

添加站点,这里直接用ip创建(有域名的可以用域名)
把177.77.77.77替换成你的公网ip
同时创建个数据库

记得还得在php.ini配置文件中找到

;extension=mysqli

把;符号去掉
因为这个数据库默认用的是mysqli
但在配置文件里默认不用

然后访问http://177.77.77.77/
得到如下界面代表创建成功

至此网站,以及数据库搭建完成
后续在服务器部署python环境

在软件商店里找到python项目管理器,安装

然后设置,版本管理,安装一个版本,这里安装的是3.9.7

安装完成以后python环境就部署好了。

剩下的部分就是android前端,我依然还记得被andorid studio搞崩溃的日子,导入了别人的项目,却怎么都配置不好依赖库…不过android前端肯定还是要学,工具:android studio,用java和kotlin哪个语言去学都可以,熟悉java的话肯定首选Java。重点学习ui,控件事件,http部分。

正常的话就用Android studio开发最后的app了。但我没用Android studio做过完整的项目,正好之前用autojs写过一个运行脚本的android app,所以这里直接套壳使用。如果你一样懒,那么可以尝试autojs开发(这个是专门用来做手机脚本的),下面放上相关学习资料。

链接: Auto.JS 教程(1)

链接: autojs官方文档

链接: autojs实例

二、正式开发

往路径www/wwwroot/ip
这个ip就是你建网站的时候用的公网ip
这个路径下上传php文件

上传个my.php文件,里面随便写点,比如用echo输出一句话
通过下面的网址访问测试一下
http://服务器IP地址/my.php

如果觉得我写的比较简单,这里有一篇非常详细的文章可以参考
链接: https://blog.csdn.net/weixin_44634727/article/details/113641930

php接口测试完毕,下面就是php与android端的交互
这里以php与autojs下的前端交互为例

提交数据用http.post,不要用提交json
http.post
接收用$_POST数组

前端代码:

var url = "http://177.77.77.77/my_sql.php";
var username = "你的用户名";
var password = "你的密码";
var res = http.post(url, {"TPL_username": "usernavv","TPL_password": "passwovv"
});

服务端代码my_sql.php:

$temp1=$_POST['TPL_username'];
$temp2=$_POST['TPL_password'];
echo $temp1;
echo $temp2;

返回数据以json格式传递,前提以上例post方式向服务器发出了请求

服务端:

header('Content-Type:application/json; charset=utf-8');
//以json的格式返回数据
$res_js=["temp1"=>$temp1, "temp2"=>$temp2 ];
exit(json_encode($res_js));
//以json的格式返回查询到的数据

前端代码:

var data=res.body.json();
toast(data.temp1);
toast(data.temp2);
});

python脚本部分
一开始我是想用php curl模块实现模拟登录功能的
通过数据抓包看了一下

我是看到登陆页面传输的数据是我的明文账号+密码+一堆未知字符串
作为一个小白我看到的是这些,心中窃喜,明文也太好搞了吧

结果等到健康信息上报页面,传递的东西就看不懂了,有些字符串你能读出来,有些不知道是什么含义


只能说还是太菜了,到这心凉了半截,白做这么多了

不甘心,去github上一搜,果然有neu健康打卡脚本,其中有两个python脚本都可以成功

链接: 东北大学自动健康打卡体温打卡

链接: 东北大学每日健康打卡脚本

我用的是第一个链接的脚本,作为一个小白去看他脚本里的内容感觉没涉及到加密,逻辑也不是很复杂。日后如果有时间学习,再做说明。(我是很佩服这些大佬的,也很感谢他们的开源)

所以最后我的核心逻辑竟然是别人写的,有点…不过不重要,本文重点是搭建简单服务器以及实现与前端的交互。

后续对于第一个健康上报python脚本的解析来了

链接: https://blog.csdn.net/weixin_51659963/article/details/126543630

下面介绍如何在服务端用php运行python脚本

这篇文章非常不错
链接: https://blog.csdn.net/weixin_43639287/article/details/122632541

system() passthru() shell_exec() 同理
可能会遇到exec函数被禁用,用如下方式开启
链接: https://blog.csdn.net/weixin_34401851/article/details/115143684

链接: exec函数使用方法

python脚本与php文件放在同一目录下

调用代码:

exec("python3 run.py $temp1 $temp2 2>&1",$rec_py,$res_py);

至于为什么是python3,我linux学的不好,不是很懂,可以看这篇文章(话说linux的用户与文件权限问题真地让我头大)
链接: https://yiyuewangchao.blog.csdn.net/article/details/122910412

简单来说就是执行下面这两端代码,然后你会发现pyhton3,pip3已经存在了

ln -s /www/server/panel/pyenv/bin/python3.7    /usr/bin/python3ln -s /www/server/panel/pyenv/bin/pip3   /usr/bin/pip3
//以json的格式返回查询到的数据

上诉还有一个问题,我们是使用exec调用python脚本,类似win下的cmd输入指令。 t e m p 1 与 temp1与 temp1与temp2是传递的参数,账户与密码,所以不能直接调用gethub上的python脚本项目,要通过sys模块传递参数给run.py

简单解析一下第一个github脚本项目,config.py是配置文件,主要包括账号密码,以及通知打卡成功的邮箱,sendMsg.py主要是发邮件功能实现,我们不需要这两部分,直接用sys配置参数。
改起来你一看就懂,或者看我github上改好的也行

还有一点就是脚本需要requests库,直接在命令行安装就行

pip3 install requests

关于前端,学习的时间太久了,好多细节都忘了,就不做具体阐述了
简单说一下,核心函数是function myPHP ,大约892行左右,这个函数写在了整个代码的最后

function myPHP(idk,passwordk)
{var url = "http://177.77.77.77/my_sql.php";log("线程中");log(idk);log(password);var r = http.post(url, {"TPL_username": idk,"TPL_password": passwordk});var data=r.body.json();//toast(data.a);log("返回的数据");log(data.temp1);log(data.temp2);if(data.sql==200){//数据库插入成功log("登数据库插入成功");}else if(data.sql==201){//数据库修改成功log("数据库修改成功");}else if(data.sql==500){//数据库操作失败log("数据库操作失败");}if(data.python_login==1200){//登陆成功log("登陆成功");}else if(data.python_login==1500){//登陆失败log("登陆失败");}if(data.python_daka==2200){//打卡成功log("打卡成功");}else if(data.python_daka==2500){//打卡失败log("打卡失败");}if(data.python_login==1200 && data.python_daka==2200){toast("打卡成功");}else{toast("打卡失败");}

三、neu部分(给东大学子看的):

如果你自己有服务器,或者使用腾讯云的云函数。把py脚本放在云上,可以实现云端每天自动打卡。不需要自己再操作了。这个当然我也可以实现,放到app里,为什么没呢,相信大家懂得都懂,大家自己去实现吧。疫情期间,注意安全。

之前有个叫neu的软件,下面是他们的技术栈,不得不说不是一个级别,太牛了

四、总结

至此配置全部结束,说起来挺简单点,但对我一个新手而言过程很折磨,希望能帮到你。源码全部放在github上了,我抹掉了所有与我ip有关的内容,换成了177.77.77.77。如果有忘记了抹掉的地方露出真ip,也请你不要攻击一个新手的服务器。谢谢谢!!!别拿我练手。

简单说一下文件结构,前端是一个new_app.js文件,用autojs相关的打包插件可以自动打包成apk。
服务端:run.py是python脚本,my_sql.php接受软件数据,调用run.py脚本。

链接: https://github.com/yearn19/NEU_daka_app

相关学习资源我这里有以下电子书:
鸟的linux私房菜:基础学习篇(第四版)
细说php(第四版)
http抓包实战(肖佳 著)
需要在评论区说,看到了会发

五、其他

在ui控件中,控件的id千万不要直接就叫id

<input id="id"  lines="1" hint="{{this.id}}"  textSize="18sp" margin="5 0 5 10"/>

直接叫id一会使用的时候调用会出错,可以改成idk

<input id="idk"  lines="1" hint="{{this.id}}"  textSize="18sp" margin="5 0 5 10"/>

下面说一个我在autojs数据库上遇到的一个数据库问题,成功让我通宵,如果你没用auto.js可以点赞推出了。

这样一个报错
android.database.sqlite.SQLiteException: no such column

问题:在数据库里找不到你所说的列
原因:你之前创建过数据库,后来你又创建了一个新的,你在对你的新数据进行操作,但其实连接的还是你的旧数据库,造成操作不必配。真的脑火,明明名字都不一样。

android开发解释如下:
链接: https://blog.csdn.net/weixin_40707866/article/details/79794762

autojs开发解决方法:
在手机文件中找到如下全中两个文件,删除即可(一般就在根目录下,不行搜索也行)

搭建自己的健康上报APP全栈开发教学相关推荐

  1. 用python写web网页实现音乐数据库查询_Python tornado用40行代码搭建数据库交互网页实现快速全栈开发...

    作为数据分析师,我们大部分时间做的事情都是搭建线下Excel报表,这既有优点也有缺点 优点是: 开发效率 快速建模,最快十分钟就可以建模 数据传播 便于传播,发文件就是发模型 交互友好 对使用者门槛低 ...

  2. web全栈开发项目搭建整体思路和学习路线

    web全栈开发 全栈开发技术介绍: 全栈技术指可以完整整个项目搭建的有效集合. 包括:网站的设计,web前端开发,web后端开发,数据库设计,接口和组件,移动端开发,产品设计,系统架构,产品的理念和用 ...

  3. 3.1【微信小程序全栈开发课程】在本地搭建后端开发环境

    第二章将前端页面的框架基本搭建好了,第三章,我们来做登录功能,登录功能需要在后端获取到用户信息,返回到前端.所以先来搭建后端开发环境 1.后端开发环境介绍 我们的项目用的是前后端分离开发 前端可以理解 ...

  4. Vue3 Typescript + Axios 全栈开发教程:手把手教你写「待办清单」APP

    本文完整版:<Vue3 Typescript + Axios 全栈开发教程:手把手教你写「待办清单」APP> Vue3 Typescript + Axios 全栈开发教程 前端 Vue3 ...

  5. 7.4【微信小程序全栈开发课程】小程序上线--基于Ubuntu搭建小程序运行环境

    上一节我们安装了nginx和SSL证书,这一节继续来搭建小程序运行环境 1.配置nodeJs环境 (1)安装node.npm 我们云服务器是Ubuntu系统,通过apt-get安装即可 //下载nod ...

  6. eslint不报错 vue_2-2【微信小程序全栈开发课程】index页面搭建--ESlint格式错误

    1.修改入口文件 也就是src/pages/index/main.js文件 main.js是入口文件,通过main.js来加载index.vue文件.每个页面文件夹中都要有main.js文件 //加载 ...

  7. APP全栈工程师修炼之路(一)

    第一章 全栈导论 1.1 概述 全栈工程师,也叫全端工程师,英文名Full Stack developer.是指掌握多种技能,并能利用各种技能独立完成产品的人.全栈工程师按照产品的类型不同又分为:We ...

  8. 【完整版】蜂群奖券世界系产品全栈开发动态 元宇宙世界城app

    ​蜂群联盟奖券世界APP近期频道改版和上线故宫升阶玩法主要是为接下来的世界系产品做参考和准备.4月将会有4款产品上线:世界城APP(优先) 消消世界APP 潮玩世界APP(优先) 走路世界APP等. ...

  9. Python全栈开发(一)——环境搭建和入门

    今天是2023年的第一天,接下来的一个月里,我将持续更新关于python全栈开发的相关知识,前面一段时间都是基础语法.主要分成四大块:基础.面向对象.MYSQL数据库.Django框架.话不多说,进入 ...

最新文章

  1. ipvsadm的命令参考
  2. MapReduce基础开发之十读写ORC File
  3. 理解extract_patches_2d
  4. 几句话就能让你明白:IPv6与Voip
  5. Sql养成一个好习惯是一笔财富
  6. centos7.2 mysql集群_Centos7.2下安装mysql-group-replication数据库集群
  7. 华为笔记本会不会用鸿蒙,华为MateBook Pro笔记本为什么不用鸿蒙操作系统HarmonyO?...
  8. service XXX does not support chkconfig(service报错)
  9. 计算机开关电源接线标准,开关电源通用技术标准.pdf
  10. linux命令快速手记 — 让手指跟上思考的速度(四)
  11. win32截屏并rgb24转yuv420
  12. Vista下调整硬盘分区大小的方法
  13. c++ primer plus 内存模型和名称空间
  14. 本机 Hosts 管理神器 SwitchHosts
  15. G120变频器如何通过BOP-2操作面板或Startdrive复位出厂参数?
  16. html旅游网站设计与实现——绿色古典旅游景区 HTML+CSS+JavaScript
  17. 怎样缩小图片大小kb?
  18. python 多重类继承__init__
  19. Google的愚人节
  20. i5 12400f参数 i512400f评测

热门文章

  1. Flutter开发:设置应用名称以及图标
  2. 捣蒜机器人_世界上第一个机器人之死(转载)
  3. 设置下载安装 桌面_仅152KB的电脑桌面玩具软件下载 自制力弱千万别装它!
  4. concat()函数用法
  5. 06-ES6ES11
  6. 关于Ubuntu下传感器导致屏幕反转的问题
  7. hive基本hql语句
  8. mysql删减表的关键字_Mysql 删除数据及数据表
  9. Python urllib、urllib2、urllib3用法及区别
  10. 了解undertow容器