Shell抓包

小程序抓包

#!/usr/bin/env node

'use strict';

var request = require('request');

const orderIds = [12321,123123];

for (let orderId of orderIds) {

	var options = { 
		method: 'GET',
		url: `http://orderver.jd.care/orderXml.txt?orderId=${orderId}&ver=0`,
		encoding: null,
		headers: { 
			'Content-Type': 'text/html;charset=UTF-8',
			'Cookie': 'sso.jd.com=BJ.0134A5C56E770859978DBA2D9BCF19FF7320210831103700;'
		}
	};

	request(options, function (error, response, body) {
		if (error) throw new Error(error);

		const value = Buffer.from(body,"utf8").toString();
		const index = value.indexOf("greetingCardContent");
		const frag = value.substr(index,50);
		console.log(orderId , index, frag);
	});

}

/** 
Request是一个简化的http客户端,它和Python的request库很像。这个库比默认的 http模块更好用,多年来被开源社区作为开发首选。
*/

chmod a+x 1.txt

快速建包
mkdir TestProject
cd TestProject
npm init --yes

npm install request --save


var request = require('request');
request('http://www.google.com', function (error, response, body) {
  if (!error && response.statusCode == 200) {
    console.log(body); // Print the google web page.
  }
});


node test.js

sudo npm install -g request    // If you would like to globally install。。。。。

配置NODE_PATH环境变量.

vim ~/.bash_profile

export NODE_PATH=/usr/local/lib/node_modules

上面的程序数据大的时候会堵死网卡。。。

#!/usr/bin/env node --max-old-space-size=12096

'use strict';
/** 
Request是一个简化的http客户端,它和Python的request库很像。这个库比默认的 http模块更好用,多年来被开源社区作为开发首选。
*/
var request = require('request');
const fs = require('fs');


fs.readFile('./orderIds.txt', (error, data) => {
  if (error) return console.log("读取文件失败,内容是" + error.message);
	
let	allOrderIds = data.toString()
let orderIds = allOrderIds.split(',');


let set = new Set();
orderIds.forEach(item => set.add(item))

let arr= Array.from(set)

console.log(orderIds.length, arr.length);

let index=1
for (let orderId of arr) {
index++;

setTimeout(function(){

	const options = { 
		method: 'GET',
		url: `http://10.172.154.214/cartXml.txt?orderId=${orderId}&ver=0`,
		encoding: null,
		headers: { 
			'Content-Type': 'text/html;charset=UTF-8',
			'Cookie': 'sso.jd.com=BJ.0134A5C56E770859978DBA2D9BCF19FF7320210831103700;'
		}
	};
	request(options, function (error, response, body) {
		if (error) {
			console.log(orderId, "error", error);
			return;
		}
		const index = body.indexOf('14234')
		if (index > -1) {
			console.log(orderId , index);
			fs.writeFile('./target.txt', orderId+",", { flag: 'a+' }, err => {})
		}
		else {
			console.log(orderId , 'not match');
		}

//i		const value = Buffer.from(body,"utf8").toString();
//		const frag = value.substr(1,50);
});




	},1000*index)

}

});

西面

# 修改linux端口分配范围

net.ipv4.ip_local_port_range = 32768 60999

改成 net.ipv4.ip_local_port_range = 15000 60999

sudo sysctl -w net.ipv4.ip_local_port_range="15000 60999"

# 修改timewait状态的存在时长

sysctl net.ipv4.tcp_fin_timeout = 60

改成sysctl net.ipv4.tcp_fin_timeout = 30

sudo sysctl -w net.ipv4.tcp_fin_timeout=30

# 修改timewait最大值

net.ipv4.tcp_max_tw_buckets = 262144

改成net.ipv4.tcp_max_tw_buckets = 40000

sudo sysctl -w net.ipv4.tcp_max_tw_buckets=40000

原始方法

//  http.request 请求 ,相信大家都用过。

let http = require('http');

for(let i =0;i<10;i++){

let http = require('http');

let post_data =JSON.stringify({

'txid':Math.random().toString(32).slice(2),

'dataHash':Math.random().toString(32).slice(2),

'data':Math.random().toString(32).slice(2),

'publicKey':Math.random().toString(32).slice(2),

'signature':Math.random().toString(32).slice(2),

'remark':'',

'appId':Math.random().toString(32).slice(2)

});

console.log(post_data);

let options = {

hostname:'10.10.144.30',//此处不能写协议,如 : http://,https://  否则会报错

      port:7451,

path:'/UChains/poe/poe/transaction',

method:'POST',

headers: {

'Content-Type':'application/x-www-form-urlencoded',

'Content-Length':Buffer.byteLength(post_data)

}

};

console.log('________Send__________');

let req =http.request(options,function(res){

console.log('________success_________');

console.log('STATUS:'+res.statusCode);

console.log('HEADERS:'+JSON.stringify(res.headers));

res.on('data',function(chunk){

console.log('BODY:'+chunk);

});

});

req.write(post_data);

req.end();

}


正确 Buffer拼接:

var data = "";  
res.on('data', function (chunk) {  
  data += chunk;  
})  
.on("end", function () {  
});

段代码在chunk都是ascii码数据或者数据量比较少时是没有问题,但如果你的数据是大量中文的话,恭喜你,中枪了,会出现乱码。其原因是两个chunk(Buffer对象)的拼接并不正常,相当于进行了buffer.toString() + buffer.toString()。如果buffer不是完整的,则toString出来后的string是存在问题的(比如一个中文字被截断)。

var chunks = [];  
var size = 0;  
res.on('data', function (chunk) {  
  chunks.push(chunk);  
  size += chunk.length;  
});  
res.on('end', function () {  
  var data = null;  
  switch(chunks.length) {  
    case 0: data = new Buffer(0);  
      break;  
    case 1: data = chunks[0];  
      break;  
    default:  
      data = new Buffer(size);  
      for (var i = 0, pos = 0, l = chunks.length; i < l; i++) {  
        var chunk = chunks[i];  
        chunk.copy(data, pos);  
        pos += chunk.length;  
      }  
      break;  
  }  
});  

request的promise化

var Promise = require('bluebird')

var request = Promise.promisify(request)

var wechat = new 

 stringify。

 promisifyAll

--

const Promise = require('bluebird'),

  fs = require('fs'),

  path = require('path');

Promise.promisifyAll(fs);

 

 

fs.readFileAsync(path.join(__dirname, 'sample.txt'), 'utf-8')

  .then(data => console.log(data))

  .catch(err => console.error(err));

--

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值