I wanna simule form filling and submission of this site.
Using postman, with cookie intercepter enabled, I got, However when I try do using nodejs code doesn't work.
My code snippet:
var http = require('https');
var fs = require('fs');
var agent = new http.Agent({ keepAlive: true });
const readline = require('readline');
var headers = {
'Content-type': 'application/x-www-form-urlencoded'
};
const rl = readline.createInterface({
input: process.stdin,
output: process.stdout
});
var options = {
host: 'satsp.fazenda.sp.gov.br',
port: 443,
path: '/COMSAT/Public/ConsultaPublica/ConsultaPublicaCfe.aspx',
method: 'POST',
timeout: 10000,
headers: headers,
};
var get = {
host: 'satsp.fazenda.sp.gov.br',
port: 443,
path: '/COMSAT/Public/ConsultaPublica/ConsultaPublicaCfe.aspx',
method: 'GET',
timeout: 10000,
}
var config={
'ctl00$conteudo$txtChaveAcesso':'3517 0375 3153 3301 3430 5900 0152 7490 1717 6387 3777',
'ctl00$conteudo$txtCaptcha':'h6fv',
'ctl00$conteudo$btnConsultar':'Consultar',
'__VIEWSTATE': '/wEPDwUJNDE0OTc1ODQ4D2QWAmYPZBYCAgQPZBYCAg8PZBYCAgEPFgIeBFRleHQFASBkZPtv9K3Q3UcvtPTWfgRECeVif2M4nvC8EjpYhKtxptOL',
'__EVENTVALIDATION': '/wEdAAT5Kf7rwmxsjeDMuL8q4dbtJSVMEMivlZPFl0BDl6eW9XgMV8zsabdGGJd1OGYOdk3ThK6ND5vy6bqhutCx8kRHqfn4i3UBedJXgCTA/W4ZVFSy5CEMDrmS4N6vBVeab04=',
'__VIEWSTATEGENERATOR': 'D0B6310E'
};
process.env.NODE_TLS_REJECT_UNAUTHORIZED = "0";
var reques = http.request(get, (response) => {
var text, results, error;
var { statusCode } = response;
options.headers['set-cookie']= response.headers['set-cookie'];
console.log(response.headers['set-cookie']);
if (statusCode !== 200) {
error = new Error(`Request Failed.\n` +
`Status Code: ${statusCode}`);
}
if (error) {
console.error(error.message);
res.resume();
return;
}
console.log('Response from SEFAZ:');
console.log(`STATUS: ${response.statusCode}`);
console.log(`HEADERS: ${JSON.stringify(response.headers)}`);
response.setEncoding('utf8');
response.on('data', (chunk) => {
//console.log(chunk);
rl.question('Captcha: ', (answer) => {
rl.close();
var reques2 = http.request(options, (response2) => {
console.log('Response2 from SEFAZ:');
console.log(`STATUS: ${response2.statusCode}`);
console.log(`HEADERS: ${JSON.stringify(response2.headers)}`);
response2.setEncoding('utf8');
response2.on('data', (chunk) => {
//console.log(chunk);
});
});
reques2.write("------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; "
+ "name=\"ctl00$conteudo$txtChaveAcesso\"\r\n\r\n3517 0375 3153 3301 3430 5900 0152 7490 1717 6387 3777\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; "
+ "name=\"ctl00$conteudo$txtCaptcha\"\r\n\r\n" + answer + "\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; "
+ "name=\"ctl00$conteudo$btnConsultar\"\r\n\r\nConsultar\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"__VIEWSTATE\"\r\n\r\n/wEPDwUJNDE0OTc1ODQ4D2QWAmYPZBYCAgQPZBYCAg8PZBYCAgEPFgIeBFRleHQFASBkZPtv9K3Q3UcvtPTWfgRECeVif2M4nvC8EjpYhKtxptOL\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\n"
+ "Content-Disposition: form-data; name=\"__EVENTVALIDATION\"\r\n\r\n/wEdAAT5Kf7rwmxsjeDMuL8q4dbtJSVMEMivlZPFl0BDl6eW9XgMV8zsabdGGJd1OGYOdk3ThK6ND5vy6bqhutCx8kRHqfn4i3UBedJXgCTA/W4ZVFSy5CEMDrmS4N6vBVeab04=\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"__VIEWSTATEGENERATOR\"\r\n\r\nD0B6310E\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW--");
reques2.end();
});
});
});
reques.end();
Basically, I do first request to get session cookies and captcha. After that I copy property "set-cookie" from response and send a POST, with form-data. But the response come back without cookies and It doesn't work. Someone knows what's going on?
via Rodolfo Oliveira
No comments:
Post a Comment