手机版

NodeJs模拟登陆教务

时间:2021-09-05 来源:互联网 编辑:宝哥软件园 浏览:

网上有很多关于模拟着陆的作品。基于PHP、Python、Java、Net和NodeJs,这些语言可以实现模拟着陆。模拟着陆的技术要点不是特别难。在这里,我将记录一些使用Node遇到的坑和一些我自己的解决方案。

1.收集模拟着陆信息

这一步是最基本的。你可以查看跳转帖子或者通过chrome的网络获取请求和参数。

注意检查保留日志,否则页面跳转时看不到请求。

注:(无法解码值)表示已被gbk转码,post的数据格式为formdata

2.登录期间重定向302

在使用php之前,我死于重定向。如果我没有得到它,总会有对象搬到这里。不同的语言有相关的解决方案。如果你用js库,那就查API。PHP在curl中有这个方法

3.NodeJs本人

1.回调-异步库用于解决回调。

2.异常处理- express框架很好。定制异常中间件,省心。

3.这很容易崩溃,只要使用PM2。

4.因为这里的使用场景相当于每个用户登录后后端发送一个模拟登录,如果目标网站长时间没有响应,那么我已经采取了重试当前操作的方法,那么如果响应时间很长,我是不是可以先返回到加载状态,执行后再通知前端?

在这里,我使用Socket-io来处理前端定向通知这样的实践。

但是socketio也有一个漏洞,就是服务器知道客户端id可以向某个客户端发送数据,但是如果前端刷新页面,就会生成一个新的客户端id。针对前端使用的单页框架,当应用程序启动时,它向服务器请求一个令牌,然后套接字在通信时获取这个令牌和客户端id,并保存在redis中,所以当后端的异步请求捕获数据时,它只需要通过这个令牌找到对应的客户端id。

5.代码问题

一开始我犯了一个错误,就是用客户端编程的思维写Node,发现当两个用户同时发送请求时,会导致变量数据的冲突。换句话说,如果一开始定义了一个aa变量,A用户向aa发送写数据的请求,此时B用户也操作aa,那么这个aa实际上是乱序的,也就是说你启动NodeJs后,你写的全局变量将一直存在(正常.).

暂时的解决办法是私有化,在入口处统一使用新的方法,这样不管你并发多少请求,相互的数据都不会受到影响。不知道有没有更好的方法实现。

以上就是本文的全部内容。希望本文的内容能给大家的学习或工作带来一些帮助,也希望多多支持我们!

版权声明:NodeJs模拟登陆教务是由宝哥软件园云端程序自动收集整理而来。如果本文侵犯了你的权益,请联系本站底部QQ或者邮箱删除。