使用node发送请求

使用node发送请求没有同源限制

1.使用fiddler抓取需要发送的请求的包的信息
2.使用node做服务,获取传送的信息

var http=require("http");
var fs=require("fs");
var cheerio=require("cheerio");
const request = require('request')
const express=require('express')
const app=new express();
var time=new Date().getTime();
var cookie=""
var code=""
//保存网络图片
var imageUrl=`http://xg.swpu.edu.cn/SPCP/Web/Account/GetLoginVCode?dt=${time}.jpg`
function saveImage(imageUrl){
		return new Promise(function(resolve,reject){
			http.get(imageUrl, function (res) {
			res.setEncoding('binary');      //二进制(binary)

			var imageData ='';
			res.on('data',function(data){  //图片加载到内存变量
				imageData += data;
			}).on('end',function(){        //加载完毕保存图片
				if(!fs.existsSync("E:/项目/daka/images")){
					fs.mkdirSync("E:/项目/daka/images");
				}
				fs.writeFile(`E:/项目/daka/images/test.jpg`,imageData,'binary',function (err) {  //以二进制格式保存
					if(err) throw err;
					//console.log('保存成功');
				});
			});
		});
		resolve();
		})
	
}
async function qingqiu()
{
	//return new Promise(function(resolve,reject){
		await saveImage(imageUrl);
		setTimeout(function(){
			const axios = require('axios').default;
		const apiUrl = 'http://api.ttshitu.com/base64';//要使用点选请将地址修改为 http://api.ttshitu.com/imageXYPlus
		const imageFile = `E:/项目/daka/images/test.jpg`  //填写自己的文件路径
		let buff = fs.readFileSync(imageFile);
		let base64data = buff.toString('base64');

		axios.post(apiUrl, {
			'username': 'simpledev',//用户名
			'password': '123456',//密码
			'typeid': '2',//验证码类型(默认 3 数英混合):16:汉字 14:图片旋转 11:计算题 7:无感学习,4:闪动GIF,3:数英混合, 2:纯英文,1:纯数字.  //返回坐标类型(默认 19 一个坐标)。 19: 1个坐标, 20: 1 ~ 4个坐标, 21: 3 ~ 5个坐标, 22: 5 ~ 8个坐标。
			'image': base64data
		}).then(function (response) {
			let d = response.data;
			if (d.success){
				// handle success
				let {id, result} = d.data;
				code=result;
				console.log(result)
			} else {
				console.log(d.message)
			}
		});
		},2000)
	//})
}

qingqiu();
request(`http://xg.swpu.edu.cn/SPCP/Web/Account/GetLoginVCode?dt=${time}`, function (err, response, body) {
	var exp=/^ASP.NET_SessionId=[0-9A-Za-z]{24}/
	//console.log(exp.exec(response.headers['set-cookie'])[0])
	cookie=exp.exec(response.headers['set-cookie'])[0]
	console.log(cookie)
  if (!err && response.statusCode == 200) { 
    //console.log(body)
  }
})
var exportData={}
app.all('/server',(req,response)=>{
	response.setHeader('Access-Control-Allow-Origin',"*")
	const url="http://xg.swpu.edu.cn/SPCP/Web/";
	var strHtml="";
	var results=[];
	http.get(url,function(res){
		res.on("data",function(chunk){
			strHtml+=chunk;
			
		})
		res.on("end",function(){

			//console.log(strHtml);

			var $=cheerio.load(strHtml);
			var ReSubmiteFlag=$("input[name='ReSubmiteFlag']").val();
			//var imgs=$("img")[0];
			//console.log($.cookie)
			//console.log(ReSubmiteFlag)
			var data={
				ReSubmiteFlag:ReSubmiteFlag,
				imgs:`http://xg.swpu.edu.cn/SPCP/Web/Account/GetLoginVCode?dt=${time}`,
				cookie:cookie,
				code:code
            }
			response.json(data);
		});
	}) 

	
})
app.listen(8000,()=>{
	console.log("服务已启动");
})

3.发送请求

var http=require("http");
var fs=require("fs");
var cheerio=require("cheerio");
const request = require('request')
const express=require('express')
const app=new express();
var time=new Date().getTime();
var cookie=""
var code=""
const axios = require('axios')
var data={}
function getReSbumiteFlag()
{
	const url="http://localhost:8000/server"
    axios({
		method:"GET",
		url:url
	})
	.then(res=>{
		data=res.data
		console.log(data)
		})
}
getReSbumiteFlag()
setTimeout(()=>{
				var sendData={
				ReSubmiteFlag:data.ReSubmiteFlag,
				StuLoginMode:1,
				txtUid:201831082129,
				txtPwd:113135,
				code:data.code
				}
				axios({
				method:"POST",
				url:"http://xg.swpu.edu.cn/SPCP/Web/",
				data:sendData,
				headers:{
					'Content-Type':'application/x-www-form-urlencoded',
					'Connection':'keep-alive',
					'Cookie':data.cookie
					}
			  })
			  .then(res=>{
				console.log(res)
			  })
},1000)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值