1. 程式人生 > >nodejs模擬get,post 進行字元統計功能

nodejs模擬get,post 進行字元統計功能

 可能會修改,若修改我會更新地址的

demo:沒有demo..倒是有個圖


題目
    
  http://ctf.idf.cn/game/pro/37/
給你2秒鐘的時間,告訴我下面這坨字元中有多少個w,多少個o,多少個l,多少個d和多少個y。 把這些數字串成一個字串提交一下就可以了,
很簡單吧~
    A`6D]k&7y$l25s_xZ?v]vJ2-?A3aNR[ec*E,ej&A6(mfENHm.1J[a1C|-dZ([email protected]{X#NwUnf.^rKW$,irW[qRoV*SO

答案 input 提交

1.require 需要的依賴

var 
express = require('express');//一個web框架 var cheerio = require('cheerio');//nodejs 端的jquery 處理html var superagent = require('superagent');//伺服器端傳送get post請求
2啟動伺服器,監聽埠3000. 
var app = express();
app.listen(3000);
console.log("3000");

3.設定get請求的處理
app.get('/',function(req,res){
   //當瀏覽器訪問localhost:3000 時 執行這裡面的函式});
4.在處理get請求的回撥函式裡,執行如下操作:

a.伺服器以get方式訪問網站,

儲存cookie,

處理get到的文件  用cheerio來得到字串

進行演算法核心部分,也就是遍歷字串,得到個數

b.用post方式提交結果

這裡要設定cookie,設定提交方式等,也就是請求頭

c.處理post返回的資料,並返回給伺服器(最外層是通過瀏覽器訪問的,要響應結果)

superagent.get('http://ctf.idf.cn/game/pro/37/')
    .end(function (err, sres) {
        if (err) {
            console.log('err');
return next(err);
}
        console.log(sres.header
['set-cookie']); var cookie = sres.header['set-cookie']; var $ = cheerio.load(sres.text); var str = $('hr').eq(1)['0'].prev.data; // console.log(tt); 文字 var w=0; var o=0; var l=0; var d = 0 ; var y = 0; for(var i in str) { if(str[i]=='w') w++; else if(str[i]=='o') o++; else if(str[i]=='l') l++; else if(str[i]=='d') d++; else if(str[i]=='y') y++; } var anwser=(""+w+o+l+d+y); superagent.post('http://ctf.idf.cn/game/pro/37/') .send({anwser: anwser}) .set('Cookie',cookie) .set('Content-Type', 'application/x-www-form-urlencoded') .set('Accept', 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8') .end(function(err, ssres){ if(err){ return next(err); } var $ = cheerio.load(ssres.text); var tt = $('hr').eq(0)['0'].prev.data; res.send(tt); console.log(tt); }); });