欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

NodeJs模擬登陸正方教務

 更新時間:2017年04月28日 10:47:28   作者:chshpamo  
網(wǎng)上已經(jīng)有很多關于模擬登陸正方教務的作品了,基于 PHP,Python,Java,.Net 加上NodeJs,這幾門語言都可以實現(xiàn)模擬登陸,模擬登陸的技術點不是特別難,這里記錄一下利用Node碰到的一些坑,以及一些解決思路。

網(wǎng)上已經(jīng)有很多關于模擬登陸正方教務的作品了,基于 PHP,Python,Java,.Net 加上我自己嘗試的NodeJs,這幾門語言都可以實現(xiàn)模擬登陸,模擬登陸的技術點不是特別難,這里記錄一下利用 Node 碰到的一些坑,以及一些我自己的解決思路。

1. 收集模擬登陸信息

這一步最基礎,通過 chrome 的 network 就可以查看跳轉的 post 或者 get 請求以及參數(shù)了。

注意勾選Preserve log 否則頁面跳轉你是看不到請求的。

注意點:出現(xiàn) (unable to decode value) 表示經(jīng)過 gbk 轉碼了,另外就是post的數(shù)據(jù)格式是 formdata

2. 登錄過程中 302 重定向

之前利用 PHP 就死在 重定向上,沒有搞定,總是會出現(xiàn) object moved to here.不同語言都有相關的解決辦法的,你用js庫,那就查看API,php是curl有這個方法的

3. NodeJs 自身

1、回調(diào)-----使用了 async 這個庫來解決回調(diào)。

2、異常處理-----express 框架就好了,自定義異常中間件,省心。

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

4、由于這里的使用場景相當于是每個用戶登錄后,后端都要發(fā)送一次模擬登陸,如果碰到長時間目標網(wǎng)站沒有響應,那么我采取了重試當前操作的一種做法,所以如果響應時間很長,那么是否可以先返回一個 loading 的狀態(tài),然后執(zhí)行完之后再通知前端?

這里我使用了 Socket-io 來搞定后端像前端定向通知的這么一種做法。

但是 socketio也有坑,就是服務端知道client id是可以發(fā)送數(shù)據(jù)給某一個客戶端的,但是前端如果一刷新頁面就會生成一個新的 client id,鑒于前端使用的單頁框架,在應用啟動的時候就向服務端請求一個 token 然后 socket 在通信的時候帶上這個 token 和client id,并且保存在了 redis 中,這樣當后端的異步請求抓取到數(shù)據(jù)的時候,只要通過這個 token 查找對應的client id 即可。

5、代碼問題

剛開始犯了一個錯,就是拿客戶端編程的思維去寫 Node 結果發(fā)現(xiàn) 當兩個用戶同時發(fā)送請求后,會導致變量數(shù)據(jù)發(fā)生沖突。換句話說,如果一開始定義了一個 aa 變量  A 用戶發(fā)送請求 寫入了數(shù)據(jù)到 aa ,B 用戶此時也是操作 了 aa 那么這個 aa其實就是出問題了,也就是說當你啟動 NodeJs 之后,你所寫的全局變量將會永遠存在(很正常...)。

暫時解決的辦法就是 私有化,在入口統(tǒng)一使用了 new 的方式,這樣無論你并發(fā)多少個請求,相互之間的數(shù)據(jù)都不會受到影響。 不知道還有沒有更好的實現(xiàn)方式。

以上就是本文的全部內(nèi)容,希望本文的內(nèi)容對大家的學習或者工作能帶來一定的幫助,同時也希望多多支持腳本之家!

相關文章

  • node的process以及child_process模塊學習筆記

    node的process以及child_process模塊學習筆記

    這篇文章主要介紹了node的process以及child_process模塊學習筆記,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-03-03
  • 利用PM2部署node.js項目的方法教程

    利用PM2部署node.js項目的方法教程

    pm2 = P (rocess) M (anager)2,是可以用于生產(chǎn)環(huán)境的Nodejs的進程管理工具,并且它內(nèi)置一個負載均衡。下面這篇文章主要給大家介紹了利用PM2部署node.js項目的方法教程,需要的朋友可以參考借鑒,下面來一起看看吧。
    2017-05-05
  • Node.js實現(xiàn)一個HTTP服務器的方法示例

    Node.js實現(xiàn)一個HTTP服務器的方法示例

    這篇文章主要介紹了Node.js實現(xiàn)一個HTTP服務器的方法示例,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-05-05
  • Node.js創(chuàng)建子進程的幾種實現(xiàn)方式

    Node.js創(chuàng)建子進程的幾種實現(xiàn)方式

    這篇文章主要介紹了Node.js創(chuàng)建子進程的幾種實現(xiàn)方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-10-10
  • Node.js學習入門

    Node.js學習入門

    本文主要介紹了Node.js的入門知識,包括:Node.js的特點,運行環(huán)境以及應用小例。具有一定的參考價值,下面跟著小編一起來看下吧
    2017-01-01
  • NVM管理Node.js實現(xiàn)不同版本Angular環(huán)境切換

    NVM管理Node.js實現(xiàn)不同版本Angular環(huán)境切換

    Node Version Manager(NVM)是一個用于管理多個Node.js版本的工具,它允許用戶在同一臺機器上安裝和使用多個Node.js版本,本文將給大家介紹NVM管理Node.js實現(xiàn)不同版本Angular環(huán)境切換的流程步驟,需要的朋友可以參考下
    2024-05-05
  • Node.js完整實現(xiàn)博客系統(tǒng)詳解

    Node.js完整實現(xiàn)博客系統(tǒng)詳解

    這篇文章主要介紹了Node.js完整實現(xiàn)一個博客系統(tǒng)的流程,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2022-08-08
  • NodeJs使用Mysql模塊實現(xiàn)事務處理實例

    NodeJs使用Mysql模塊實現(xiàn)事務處理實例

    本篇文章主要介紹了NodeJs使用Mysql模塊實現(xiàn)事務處理 ,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-05-05
  • node.js中的fs.writeSync方法使用說明

    node.js中的fs.writeSync方法使用說明

    這篇文章主要介紹了node.js中的fs.writeSync方法使用說明,本文介紹了fs.writeSync的方法說明、語法、接收參數(shù)、使用實例和實現(xiàn)源碼,需要的朋友可以參考下
    2014-12-12
  • Node.js之readline模塊的使用詳解

    Node.js之readline模塊的使用詳解

    這篇文章主要介紹了Node.js之readline模塊的使用詳解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-03-03

最新評論