nodejs怎么nodejs 模拟登录陆

2被浏览82分享邀请回答01 条评论分享收藏感谢收起写回答分享到微博匿名用户不能发表回复!|
每天回帖即可获得10分可用分!小技巧:
你还可以输入10000个字符
(Ctrl+Enter)
请遵守CSDN,不得违反国家法律法规。
转载文章请注明出自“CSDN(www.csdn.net)”。如是商业用途请联系原作者。  最近学习了node,试着写了个爬虫,这是模拟登陆的一部分。
  1、需要的工具
  2、superagent用法的简述
  3、抓包分析
  4、最小示例
二、需要的工具
  nodejs,superagent,wireshark。
  nodejs没什么可介绍的。
  superagent是nodejs众多插件之一,用npm命令安装。是一个超轻的ajax api,有着可读性强,高度灵活,学习曲线低的优点。
  wireshark是一个抓包工具,很强大。之后我们需要用它来分析post请求与cookie。
三、superagent用法的简述
  以下是最简单的用法。
&& 向本地&/search&发出get请求,end()内的是回调函数。
request('GET', '/search').end(callback);
.get('/search')
.end(function(err, res){
  这是post请求,set是设置http的header,之后我们cookie就是靠这个设置的。send是post传送的参数
request.post('/user')
.set('Content-Type', 'application/json')
.send('{"name":"tj","pet":"tobi"}')
.end(callback)
  更具体的可以见。
四、抓包分析
  在我们登录网站的时候,其向我们发送的response中会设置cookie,用来之后的浏览中验证我们的身份。
  因此我们不仅仅需要利用post模拟登录,更要保存好其发给我们的cookie,在之后的请求中将其设置在请求头中。
  红色框框中就是我们需要保存下来的cookie。
五、最小示例
var superagent = require('superagent');
var events = require("events");
var emitter = new events.EventEmitter()
setCookeie ();
emitter.on("setCookeie", getTitles)
//监听setCookeie事件
function setCookeie () {
superagent.post('http://www.ourob.cn/bbs/member.php?mod=logging&action=login&loginsubmit=yes&infloat=yes&lssubmit=yes&inajax=1')
//学校里的一个论坛,这是登录提交地址
.type("form")
.send({fastloginfield:"username"})
.send({username:"foo"})
//这肯定不是我真的用户名和密码啦
.send({password:"bar"})
.send({quickforward:"yes"})
.send({handlekey:"ls"})
.end(function(err, res){
if (err) throw
var cookie = res.header['set-cookie']
//从response中得到cookie
emitter.emit("setCookeie", cookie)
function getTitles (cookie) {
superagent.get("http://www.ourob.cn/bbs/forum.php?mod=forumdisplay&fid=82&filter=typeid&typeid=185")
//随便论坛里的一个地址
.set("Cookie", cookie[3])
//在resquest中设置得到的cookie,只设置第四个足以(具体情况具体分析)
.end(function(err, res){
//do something
阅读(...) 评论()推荐这篇日记的豆列
&&&&&&&&&&&&

我要回帖

更多关于 nodejs 模拟登陆 的文章

 

随机推荐