superagent版本:3.8.3

样例代码:

var process = require('process');
var superagent = require('superagent');
var http = require('http');
var fs = require('fs');
var readline = require('readline'); var picUrl = "http://192.168.1.125:9080/acps-mgm/login/changeValidateCode";
var postUrl = "http://192.168.1.125:9080/acps-mgm/login/login";
var testUrl = "http://192.168.1.125:9080/acps-mgm/merchant/view/235162";
var username = "username";
var password = "e99a18c428cb38d5f260853678922e03"; // "abc123"加密后
var initCookie = "JSESSIONID=00000twI_3HQFk__rHfRohzQJiU:-1"; var options = {
hostname: "192.168.1.125",
port: 9080,
path: "/acps-mgm/login/changeValidateCode",
method: "GET",
headers: {
'Accept' : 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8',
'Accept-Encoding': 'gzip, deflate',
'Accept-Language': 'zh-CN,zh;q=0.9',
'Cache-Control': 'max-age=0',
'Connection': 'keep-alive',
'Cookie': initCookie,
'Host': '192.168.1.125:9080',
'Upgrade-Insecure-Requests': '1',
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/64.0.3282.140 Safari/537.36'
}
}
console.log('111');
var reqForPic = http.request(options, function (res) {
console.log("ReqForPic: status = " + res.statesCode);
console.log('ReqForPic: headers = ' + JSON.stringify(res.headers)); var picCookie = res.headers['set-cookie'][0].split(';')[0];
console.log("pic cookie: " + picCookie);
res.setEncoding('binary');
var content = "";
res.on('data', data => content += data)
.on('end', function () {
fs.writeFileSync(__dirname + '/valiCode.jpg', content, 'binary');
console.log('成功下载验证码');
var rl = readline.createInterface({
input: process.stdin,
output: process.stdout
});
rl.question("请输入验证码?", answer => {
var valiCode = answer;
rl.close();
console.log("输入的验证码是:" + valiCode); // post部分
superagent.post(postUrl)
.type("form")
.set("Accept", "application/json, text/javascript, */*; q=0.01")
.set("Accept-Encoding", "gzip, deflate")
.set("Accept-Language", "zh-CN,zh;q=0.9")
.set("Connection", "keep-alive")
.set("Content-Length", "72")
.set("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8")
.set("Cookie", picCookie)
.set("Host", "192.168.1.125:9080")
.set("Origin", "http://192.168.1.125:9080")
.set("Referer", "http://192.168.1.125:9080/acps-mgm/login.html")
.set("User-Agent", "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/64.0.3282.140 Safari/537.36")
.set("X-Requested-With", "XMLHttpRequest")
.send({
password: password,
username: username,
vailCode: valiCode
})
.end( function (err, res) { if (err) {
console.log("出错:" + err);
} else {
console.log(res.text); superagent.get(testUrl)
.set("Accept", "*/*")
.set("Accept-Encoding", "gzip, deflate")
.set("Accept-Language", "zh-CN,zh;q=0.9")
.set("Connection", "keep-alive")
.set("Cookie", picCookie)
.set("Host", "192.168.1.125:9080")
.set("Referer", "http://192.168.1.125:9080/acps-mgm/")
.set("User-Agent", "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/64.0.3282.140 Safari/537.36")
.end( (err2, res2)=> {
if (err2) {
console.log("出错2:" + err2);
} else {
console.log(res2.text);
}
} );
} } ); });
});
}); reqForPic.on('error', err => console.log("请求验证码的时候发生错误:" + err.message)); reqForPic.end();

node.js使用superagent实现模拟登陆功能(包含下载验证码功能)的更多相关文章

  1. Node.js创建服务器和模拟客户端请求

    1. 何为服务器 服务器是某种长期运行,等待请求资源的应用程序 2. 常见Web应用架构 3. 如何创建web服务器 Web服务器是使用HTTP协议,等待客户端连接后请求资源的驻守应用程序:HTTP协 ...

  2. node.js 使用 superagent 与 cheerio 完成简单爬虫

    目标 建立一个 lesson3 项目,在其中编写代码. 当在浏览器中访问 http://localhost:3000/ 时,输出 CNode(https://cnodejs.org/ ) 社区首页的所 ...

  3. Vue2.0+Node.js+MongoDB全栈打造商城系统 免费下载

    <ignore_js_op> 课程目录||--第01章 课程介绍|    01-01 课程-导学.mp4|    01-02 前端框架回顾.mp4|    01-03 vue概况以及核心思 ...

  4. Node.js使用superagent模拟GET/POST请求样例

    示例代码: var superagent = require('superagent'); superagent.get("http://localhost:8091/user/all?re ...

  5. Node.js 博客实例(五)编辑与删除功能

    原教程 https://github.com/nswbmw/N-blog/wiki/_pages的第五章,因为版本号等的原因,在原教程基础上稍加修改就可以实现. 如今给博客加入编辑文章与删除文章的功能 ...

  6. node.js 使用 net 模块模拟 websocket 握手,进行数据传递。

    websocket 是一种让浏览器与服务器之间建立持久的连接,并能进行双向数据传输的一种协议. websocket 属性应用层协议,基于tcp传输协议,并复用http的握手通道. 一.如何进行webs ...

  7. 原创:用node.js搭建本地服务模拟接口访问实现数据模拟

    前端开发中,数据模拟是必要的,这样就能等后台接口写完,我们直接把接口请求的url地址从本地数据模拟url换成后台真实地址就完成项目了.传参之类的都不用动. 之前网上找了很多类似于mock等感觉都不太实 ...

  8. php 模拟登陆(不带验证码)采集数据

    这里模拟表单登陆窗口 提交代码部分 1,生成session_id保存到 cookie $login_url = 'http://www.96net.com.cn/Login.php';$cookie_ ...

  9. Node.js 使用http客户端得到网站的图片下载到本地

    以下代码有些冗余,大家捡核心看就好. // 内置http模块,提供了http服务器和客户端功能 var http=require("http"); // cheerio模块,提供了 ...

随机推荐

  1. 创建型模式(一) 单例模式(Singleton)

    一.动机(Motivation) 在软件系统中,经常有这样一些特殊的类,必须保证它们在系统中只存在一个实例,才能确保它们的逻辑正确性.以及良好的效率. 如何绕过常规的构造器,提供一种机制来保证一个类只 ...

  2. 使用bootstrap的栅格布局,用row后出现横向滚动条

    原因: **row默认有:margin-left:-15px; margin-right:-15px: 解决办法: **row外层需要包裹container或者container-fluid,一句话就 ...

  3. mongodb存储引擎WiredTiger

      MongoDB3.2后默认采用WiredTiger存储引擎. 组成 WiredTiger由三部分组成: Mongos: 负责查询请求的路由和对ShardServer的管理: ConfigServe ...

  4. CF843D Dynamic Shortest Path spfa+剪枝

    考试的T3,拿暴力+剪枝卡过去了. 没想到 CF 上也能过 ~ code: #include <bits/stdc++.h> #define N 100004 #define LL lon ...

  5. docker部署springboot应用

    1.安装运行node image docker pull java:8 2.将编译后的jar包上传到主机上 3.编写dockerfile,并创建镜像 Dockerfile FROM java:8MAI ...

  6. luogu_P4767 [IOI2000]邮局

    传送门 Description 高速公路旁边有一些村庄.高速公路表示为整数轴,每个村庄的位置用单个整数坐标标识.没有两个在同样地方的村庄.两个位置之间的距离是其整数坐标差的绝对值. 邮局将建在一些,但 ...

  7. [HNOI2011]括号修复 / [JSOI2011]括号序列

    传送门 Solution 一道题花费了两天的时间-- 在大佬@PinkRabbit的帮助下,终于AC了,感动-- 首先,我们考虑一个括号序列被修改成合法序列需要的次数: 我们需要修改的其实是形如... ...

  8. dubbo+zookeeper示例记录

    提示:要直接看搭建例子的可以跳到 三 一.项目架构的发展 传统的mvc架构项目将整个系统功能实现全部写在一个项目中,部署在一个机器上,随着用户量的增涨,单个项目服务器无法承受暴增的用户请求时需要增加服 ...

  9. stdu1309(不老的传说)

    题目链接:http://acm.sdut.edu.cn/onlinejudge2/index.php/Home/Index/problemdetail/pid/1309.html 不老的传说问题 Ti ...

  10. vue实现element-ui对话框可拖拽功能

    element-ui对话框可拖拽及边界处理 应业务需求,需要实现对话框可拖拽问题,应element-ui没有提供官方支持,于是便参考大神的文章,得出了适合业务需要的解决方案.很多大神给出的代码是没有解 ...