NodeJs模拟登陆正方教务


Posted in NodeJs onApril 28, 2017

网上已经有很多关于模拟登陆正方教务的作品了,基于 PHP,Python,Java,.Net 加上我自己尝试的NodeJs,这几门语言都可以实现模拟登陆,模拟登陆的技术点不是特别难,这里记录一下利用 Node 碰到的一些坑,以及一些我自己的解决思路。

1. 收集模拟登陆信息

这一步最基础,通过 chrome 的 network 就可以查看跳转的 post 或者 get 请求以及参数了。

注意勾选Preserve log 否则页面跳转你是看不到请求的。

NodeJs模拟登陆正方教务

注意点:出现 (unable to decode value) 表示经过 gbk 转码了,另外就是post的数据格式是 formdata

NodeJs模拟登陆正方教务

2. 登录过程中 302 重定向

之前利用 PHP 就死在 重定向上,没有搞定,总是会出现 object moved to here.不同语言都有相关的解决办法的,你用js库,那就查看API,php是curl有这个方法的

3. NodeJs 自身

1、回调-----使用了 async 这个库来解决回调。

2、异常处理-----express 框架就好了,自定义异常中间件,省心。

3、容易崩溃----- 使用 PM2 就好。

4、由于这里的使用场景相当于是每个用户登录后,后端都要发送一次模拟登陆,如果碰到长时间目标网站没有响应,那么我采取了重试当前操作的一种做法,所以如果响应时间很长,那么是否可以先返回一个 loading 的状态,然后执行完之后再通知前端?

这里我使用了 Socket-io 来搞定后端像前端定向通知的这么一种做法。

但是 socketio也有坑,就是服务端知道client id是可以发送数据给某一个客户端的,但是前端如果一刷新页面就会生成一个新的 client id,鉴于前端使用的单页框架,在应用启动的时候就向服务端请求一个 token 然后 socket 在通信的时候带上这个 token 和client id,并且保存在了 redis 中,这样当后端的异步请求抓取到数据的时候,只要通过这个 token 查找对应的client id 即可。

5、代码问题

刚开始犯了一个错,就是拿客户端编程的思维去写 Node 结果发现 当两个用户同时发送请求后,会导致变量数据发生冲突。换句话说,如果一开始定义了一个 aa 变量  A 用户发送请求 写入了数据到 aa ,B 用户此时也是操作 了 aa 那么这个 aa其实就是出问题了,也就是说当你启动 NodeJs 之后,你所写的全局变量将会永远存在(很正常...)。

暂时解决的办法就是 私有化,在入口统一使用了 new 的方式,这样无论你并发多少个请求,相互之间的数据都不会受到影响。 不知道还有没有更好的实现方式。

以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,同时也希望多多支持三水点靠木!

NodeJs 相关文章推荐
nodejs中使用多线程编程的方法实例
Mar 24 NodeJs
NodeJS与HTML5相结合实现拖拽多个文件上传到服务器的实现方法
Jul 26 NodeJs
nodejs搭建本地http服务器教程
Mar 13 NodeJs
nodejs开发——express路由与中间件
Mar 24 NodeJs
使用nodejs爬取前程无忧前端技能排行
May 06 NodeJs
nodejs利用ajax实现网页无刷新上传图片实例代码
Jun 06 NodeJs
Nodejs模块载入运行原理
Feb 23 NodeJs
基于Nodejs的Tcp封包和解包的理解
Sep 19 NodeJs
独立部署小程序基于nodejs的服务器过程详解
Jun 24 NodeJs
纯异步nodejs文件夹(目录)复制功能
Sep 03 NodeJs
nodejs中使用worker_threads来创建新的线程的方法
Jan 22 NodeJs
nodejs处理tcp连接的核心流程
Feb 26 NodeJs
用Nodejs搭建服务器访问html、css、JS等静态资源文件
Apr 28 #NodeJs
Nodejs读取文件时相对路径的正确写法(使用fs模块)
Apr 27 #NodeJs
详解nodejs express下使用redis管理session
Apr 24 #NodeJs
nodejs入门教程六:express模块用法示例
Apr 24 #NodeJs
Nodejs进阶:express+session实现简易登录身份认证
Apr 24 #NodeJs
nodejs入门教程五:连接数据库的方法分析
Apr 24 #NodeJs
nodejs入门教程四:URL相关模块用法分析
Apr 24 #NodeJs
You might like
最小化数据传输――在客户端存储数据
2006/10/09 PHP
php中使用DOM类读取XML文件的实现代码
2011/12/14 PHP
thinkphp文件处理类Dir.class.php的用法分析
2014/12/08 PHP
PHP使用pear自带的mail类库发邮件的方法
2015/07/08 PHP
Laravel执行migrate命令提示:No such file or directory的解决方法
2016/03/16 PHP
php上传后台无法收到数据解决方法
2019/10/28 PHP
JavaScript日期类型的一些用法介绍
2015/03/02 Javascript
Jquery全选与反选点击执行一次的解决方案
2015/08/14 Javascript
JavaScript的Backbone.js框架环境搭建及Hellow world示例
2016/05/07 Javascript
jQuery+CSS3+Html5实现弹出层效果实例代码(附源码下载)
2016/05/16 Javascript
Bootstrap3学习笔记(三)之表格
2016/05/20 Javascript
Vue应用部署到服务器的正确方式
2017/07/15 Javascript
jQuery图片加载失败替换默认图片方法汇总
2017/11/29 jQuery
实现高性能javascript的注意事项
2019/05/27 Javascript
微信小程序 授权登录详解(附完整源码)
2019/08/23 Javascript
微信小程序加载机制及运行机制图解
2019/11/27 Javascript
vue实现购物车的小练习
2020/12/21 Vue.js
Python装饰器用法实例总结
2018/05/26 Python
Python实现爬虫抓取与读写、追加到excel文件操作示例
2018/06/27 Python
django框架事务处理小结【ORM 事务及raw sql,customize sql 事务处理】
2019/06/27 Python
在python中用url_for构造URL的方法
2019/07/25 Python
python thrift 实现 单端口多服务的过程
2020/06/08 Python
python中的错误如何查看
2020/07/08 Python
Stubhub英国:购买体育、演唱会和剧院门票
2018/06/10 全球购物
英国现代家具和照明购物网站:Heal’s
2019/10/30 全球购物
酒店保安员岗位职责
2014/01/31 职场文书
2014道德模范事迹材料
2014/02/16 职场文书
《红军不怕远征难》教学反思
2014/04/14 职场文书
竞赛口号大全
2014/06/16 职场文书
购房协议书范本
2014/10/02 职场文书
警察正风肃纪剖析材料
2014/10/16 职场文书
人事局接收函
2015/01/30 职场文书
无保留意见审计报告
2015/06/05 职场文书
2016年寒假政治学习心得体会
2015/10/09 职场文书
2016年教师党员承诺书范文
2016/03/24 职场文书
Windows server 2012搭建FTP服务器
2022/04/29 Servers