easyac-crawler
Nesse repositório estão os crawlers usados para buscar dados do portal do aluno.
Dentro de suas funcionalidades estão Login e Consultar Frequencia, por exemplo.
Foi desenvolvido principalmente utilizando Nightmarejs como navegação inicial e Cheerio para as demais requisições.
Instalação
Instale
npm install easyac-crawler
Use
const senacApi = ;
Exemplos
Login
Para efetuar o login, basta fazer a chamada ao login passando o usuário, senha e unidade. Caso o login seja efetuado com sucesso, será retornado o cookie contento o valor de sua sessão. É a partir dele que as próximas requisições serão feitas.
senacApi ;
Ver Frequência
Para retornar a frequência são nessesários alguns passos:
- Buscar o código do Aluno
- Buscar os parâmetros disponíveis para o usuário
- A partir dos dados acima, consultar a frequência da turma.
No exemplo abaixo lemos o cookie já salvo e buscamos a frequência do primeiro semestre de 2016.
fs;
API
login(user, pass, unidade)
Chamada de login ao portal do aluno. A api cria uma nova "janela" com o Nightmare, navega até o formulário de login do portal e preenche as credenciais.
Caso o login seja efetuado com sucesso, será retornado o cookie contendo o valor da sessão. Se o login for negado, retornada um erro.
Parâmetros:
user
: Usuário usado para acessar o portalpass
: Senha do usuáriounidade
: Unidade do usuário
Retorno:
- Promise.resolved: String do cookie
- Promise.rejected: String "Login failed"
isLoggedIn(cookie)
Verifica se a sessão ainda está ativa para o cookie passado.
Parâmetros:
cookie
: Valor paraPHPSESSID
, ou cookie.value retornado do login
getCodigoAluno(cookie)
Retorna o código do aluno, esse código é mutável a cada semestre.
Parâmetros:
cookie
: Valor paraPHPSESSID
, ou cookie.value retornado do login
getParamsSituacaoCurricular(cookie, codAluno)
Navega até a página de situação curricular e retorna os dados necessários para o método getSituacaoCurricular.
Parâmetros:
cookie
: Valor paraPHPSESSID
, ou cookie.value retornado do logincodAluno
: Valor retornado em getCodigoAluno
getSituacaoCurricular(cookie, codAluno, codTurma)
Retorna o histórico de disciplinas. É possível visualizar as disciplinas aprovadas, cursando e reprovadas(ou que não compareceu).
Parâmetros:
cookie
: Valor paraPHPSESSID
, ou cookie.value retornado do logincodAluno
: Valor retornado em getCodigoAlunocodTurma
: Valor retornado em getParamsSituacaoCurricular
getTitulos(cookie)
Retorna todos os dados financeiros do Aluno. Quais títulos já foram pagos, seus valores e quais ainda não foram pagos.
Parâmetros:
cookie
: Valor paraPHPSESSID
, ou cookie.value retornado do login
getParamsFrequencia(cookie, codigoAluno)
Retorna os parâmetros necessários para efetuar a requisição getFrequencia.
Parâmetros:
cookie
: Valor paraPHPSESSID
, ou cookie.value retornado do logincodAluno
: Valor retornado em getCodigoAluno
getFrequencia(cookie, codigoAluno, codigoTurma)
Retorna os dados de frequência do aluno.
Parâmetros:
cookie
: Valor paraPHPSESSID
, ou cookie.value retornado do logincodAluno
: Valor retornado em getCodigoAlunocodTurma
: Valor retornado em getParamsSituacaoCurricular
Testar
Basta clonar o projeto, instalar as dependências e rodar os testes
git clone git@github.com:easyac/crawler.git
cd crawler
npm install
npm test
FAQ
Nome
O nome easyac vem da combinação de Easy ("fácil", em inglês) e Senac (nome da instituição de ensino). Uma analogia ao que está sendo pregado nesse projeto: a facilidade de acesso aos dados do Portal do aluno.
É seguro?
O projeto é opensource por alguns motivos, um deles é: Você pessoalmente pode verificar todas as requições feitas, de onde vem e para onde vai. Não guardamos sua senha em nenhum local, pode ficar tranquilo 😄.
É legal?
Não sou perito em leis mas acho que é sim 😄. Não há nenhum tipo de invasão sendo feita. O que é feito é uma automação de ações comumente tomadas por você, após o login o Easyac apenas navega por você e exibe os dados de forma mais limpa.
Meus dados são gravados?
Sim e Não. Não gravamos seus dados de acesso (usuário, senha, unidade), mas criamos uma camada de cache com a data de última atualização dos dados. Funciona assim: Ao acessar o Easyac o sistema faz, sem você perceber, uma busca nos dados no Portal do aluno, esses dados são salvos dentro de uma camada de Cache e a próxima vez que você acessar o Easyac os dados serão buscados diretamente do cache local e não mais do portal do aluno.
Posso ajudar?
Toda e qualquer ajuda, crítica, pull request, são bem vindas. Basta criar uma issue para isso 😄
Instituição
Esse projeto não possue NENHUM vínculo com a Faculdade SENACRS nem com a empresa GVDASA.