Skip to content

Instantly share code, notes, and snippets.

@icaromh
Created August 5, 2015 23:33
Show Gist options
  • Save icaromh/1df8f166cfef095dd572 to your computer and use it in GitHub Desktop.
Save icaromh/1df8f166cfef095dd572 to your computer and use it in GitHub Desktop.
Script em nodejs para navegar até o portal do aluno do SENACRS e buscar as informações financeiras :)
var timeInit = new Date();
var Nightmare = require('nightmare');
// Dados de acesso
var Aluno = {
usuario : 'seu_usuario',
senha : 'sua_senha',
unidade : '1' // número da unidade, ex.: 63
};
// URLS utilizadas
var Portal = {
'login' : 'http://apsweb.senacrs.com.br/modulos/aluno/login.php5?',
'financeiro' : 'http://apsweb.senacrs.com.br/modulos/aluno/consultaAreaFinanceira.php5',
'ajaxFinanceiro' : 'http://apsweb.senacrs.com.br/modulos/aluno/consultaAreaFinanceira.php5?ViewConsultaAreaFinanceiraXmlXsl[method]=loadParcelas&gvroute=f1d7198dfddbbeeb432fa3f8727a6da8ef3a063c&httpReferer=http://apsweb.senacrs.com.br/modulos/aluno/consultaAreaFinanceira.php5&enturmacao=null'
};
new Nightmare()
// .viewport(800, 600) // Seta o viewport da "janela" para 800x600
.goto(Portal.login) // navega até a página inicial
.wait() // espera carregamento da página
.wait() // espera pelo redirecionamento
// espera até serem carregadas as unidades
.wait(function(){
document.getElementById('carregandoUnidades').getAttribute('style')
}, "visibility: hidden;")
// preenche os dados do aluno
.select('#lstUnidades', '1,' + Aluno.unidade)
.type('#usr', Aluno.usuario)
.type('input[type="password"]', Aluno.senha)
.evaluate(function(){
FazerLogin(); // efetua o login
})
.wait() // espera o usuário logar
// Executa uma requisição SINCRONA para buscar todos os dados financeiros do aluno
.evaluate(function(url){
var xhr = new XMLHttpRequest();
var postData = 'aluno=Todos&ano=Todos&tipo=Todos';
xhr.open("POST", url, false);
xhr.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
xhr.setRequestHeader("Content-length", postData.length);
xhr.setRequestHeader("Connection", "close");
xhr.send(postData);
var response = xhr.responseText;
return response;
}, function(data){
// Cria um arquivo JSON com os dados obtidos :)
try{
var fs = require('fs');
fs.writeFile('financeiro.json', data, function (err) {
if (err) throw err;
console.log('Arquivo salvo com sucesso :)');
});
}catch(ex){
console.log('Problemas ao tentar transformar em JSON os dados :(');
}
}, Portal.ajaxFinanceiro)
.run(function(){
var timeEnd = new Date();
var difference = (timeEnd - timeInit) / 1000;
console.log('----------------------------------------------------');
console.log('Executado em ' + difference + 's');
console.log('----------------------------------------------------\n');
});
{
"name": "gvdata",
"version": "1.0.0",
"description": "Busca e salva os dados financeiros em JSON",
"main": "gvdata.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"author": "@icaromh",
"license": "WTFPL",
"dependencies": {
"nightmare": "^1.8.2"
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment