最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

NodeJs模擬登陸正方教務(wù)

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

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

1. 收集模擬登陸信息

這一步最基礎(chǔ),通過(guò) chrome 的 network 就可以查看跳轉(zhuǎn)的 post 或者 get 請(qǐng)求以及參數(shù)了。

注意勾選Preserve log 否則頁(yè)面跳轉(zhuǎn)你是看不到請(qǐng)求的。

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

2. 登錄過(guò)程中 302 重定向

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

3. NodeJs 自身

1、回調(diào)-----使用了 async 這個(gè)庫(kù)來(lái)解決回調(diào)。

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

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

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

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

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

5、代碼問(wèn)題

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

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

以上就是本文的全部?jī)?nèi)容,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作能帶來(lái)一定的幫助,同時(shí)也希望多多支持腳本之家!

相關(guān)文章

  • 安裝node-sass的方法步驟

    安裝node-sass的方法步驟

    本文主要介紹了安裝node-sass的方法步驟,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-05-05
  • Node.js API詳解之 vm模塊用法實(shí)例分析

    Node.js API詳解之 vm模塊用法實(shí)例分析

    這篇文章主要介紹了Node.js API詳解之 vm模塊用法,結(jié)合實(shí)例形式分析了Node.js API中vm模塊基本功能、函數(shù)、使用方法及相關(guān)操作注意事項(xiàng),需要的朋友可以參考下
    2020-05-05
  • 淺談Node異步編程的機(jī)制

    淺談Node異步編程的機(jī)制

    本篇文章主要介紹了淺談Node異步編程的機(jī)制,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-10-10
  • 教你用NodeJs構(gòu)建屬于自己的前端腳手工具

    教你用NodeJs構(gòu)建屬于自己的前端腳手工具

    對(duì)于腳手架我們可能天天都在接觸,像npm包管理工具,vue-cli,webpack…,但是這些腳手架是怎么做出來(lái)的,我們自己能不能做一個(gè)出來(lái)玩玩,下面這篇文章主要給大家介紹了關(guān)于如何利用NodeJs構(gòu)建屬于自己的前端腳手工具的相關(guān)資料,需要的朋友可以參考下
    2022-05-05
  • nodejs入門教程三:調(diào)用內(nèi)部和外部方法示例

    nodejs入門教程三:調(diào)用內(nèi)部和外部方法示例

    這篇文章主要介紹了nodejs入門教程之調(diào)用內(nèi)部和外部方法,結(jié)合實(shí)例形式分析了nodejs內(nèi)部與外部方法的定義與調(diào)用相關(guān)操作實(shí)現(xiàn)技巧,需要的朋友可以參考下
    2017-04-04
  • Node.js中的cluster模塊深入解讀

    Node.js中的cluster模塊深入解讀

    NodeJS引入了Cluster模塊試圖簡(jiǎn)化這些體力勞動(dòng),使用Cluster模塊可以運(yùn)行并管理多個(gè)實(shí)例進(jìn)程,下面這篇文章主要給大家介紹了關(guān)于Node.js中cluster模塊的相關(guān)資料,需要的朋友可以參考借鑒,下面來(lái)一起看看吧
    2018-06-06
  • 解決Mac node版本升級(jí)失敗的問(wèn)題

    解決Mac node版本升級(jí)失敗的問(wèn)題

    今天小編就為大家分享一篇解決Mac node版本升級(jí)失敗的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2018-05-05
  • Nodejs Express 通過(guò)log4js寫日志到Logstash(ELK)

    Nodejs Express 通過(guò)log4js寫日志到Logstash(ELK)

    這篇文章主要介紹了Nodejs Express 通過(guò)log4js寫日志到Logstash(ELK),小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2018-08-08
  • nodejs中art-template模板語(yǔ)法的引入及沖突解決方案

    nodejs中art-template模板語(yǔ)法的引入及沖突解決方案

    本篇文章主要介紹了nodejs中art-template模板語(yǔ)法的引入及沖突解決方案,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-11-11
  • node.js連接mongoose數(shù)據(jù)庫(kù)方法詳解

    node.js連接mongoose數(shù)據(jù)庫(kù)方法詳解

    之前我們都是通過(guò)shell來(lái)完成對(duì)數(shù)據(jù)庫(kù)的各種操作的,在開(kāi)發(fā)中大部分時(shí)候我們都需要通過(guò)程序來(lái)完成對(duì)數(shù)據(jù)庫(kù)的操作。而Mongoose就是一個(gè)讓我們可以通過(guò)Node來(lái)操作MongoDB的模塊
    2022-08-08

最新評(píng)論

濮阳县| 巩留县| 岳阳县| 汪清县| 福鼎市| 寿阳县| 麻城市| 陕西省| 武强县| 武义县| 呼图壁县| 越西县| 平安县| 永嘉县| 麻江县| 新沂市| 讷河市| 花莲市| 乌鲁木齐县| 高州市| 革吉县| 台中市| 习水县| 芦山县| 安溪县| 秦皇岛市| 扎赉特旗| 平陆县| 五指山市| 北海市| 临漳县| 离岛区| 奉新县| 台南县| 新蔡县| 柏乡县| 襄城县| 凤翔县| 安平县| 泗阳县| 赫章县|