-
Star
(100)
You must be signed in to star a gist -
Fork
(9)
You must be signed in to fork a gist
-
-
Save dcatanzaro/5fc1bbd4753403305be7543d28b2eddf to your computer and use it in GitHub Desktop.
| const axios = require("axios"); | |
| let lastIndexMovement = 0; | |
| const TELEGRAM_BOTID = ""; | |
| const TELEGRAM_CHATID = ""; | |
| class Telegram { | |
| sendTelegramMessage(message) { | |
| const botId = TELEGRAM_BOTID; | |
| const chatId = TELEGRAM_CHATID; | |
| if (!botId || !chatId) { | |
| return; | |
| } | |
| try { | |
| const telegramMsg = encodeURIComponent(message); | |
| const url = `https://api.telegram.org/${botId}/sendMessage?chat_id=${chatId}&text=${telegramMsg}&parse_mode=HTML`; | |
| axios.get(url); | |
| } catch (e) { | |
| console.log(e); | |
| } | |
| } | |
| } | |
| const telegram = new Telegram(); | |
| const getMovimientosGalicia = async () => { | |
| const url = | |
| "https://cuentas.bancogalicia.com.ar/Cuentas/GetMovimientosCuenta"; | |
| const cookies = | |
| ""; | |
| const headers = { | |
| accept: "application/json, text/javascript, */*; q=0.01", | |
| "accept-language": "en-US,en;q=0.9,es;q=0.8", | |
| "content-type": "application/x-www-form-urlencoded; charset=UTF-8", | |
| "sec-fetch-dest": "empty", | |
| "sec-fetch-mode": "cors", | |
| "sec-fetch-site": "same-origin", | |
| "x-requested-with": "XMLHttpRequest", | |
| cookie: cookies, | |
| Referer: "https://cuentas.bancogalicia.com.ar/cuentas/mis-cuentas", | |
| "Referrer-Policy": "strict-origin-when-cross-origin", | |
| }; | |
| const body = ""; | |
| const result = await axios.post(url, body, { headers }); | |
| return result.data.Model.Movimientos; | |
| }; | |
| const init = async () => { | |
| let movementsGalicia = await getMovimientosGalicia(); | |
| movementsGalicia = movementsGalicia.reverse(); | |
| movementsGalicia.forEach((movement) => { | |
| if (movement.IndiceMovimiento > lastIndexMovement) { | |
| lastIndexMovement = movement.IndiceMovimiento; | |
| if (movement.ImporteCredito !== "0,00") { | |
| telegram.sendTelegramMessage( | |
| `<strong>馃彟 Banco</strong>: Galicia\n<strong>鉂楋笍 Nuevo movimiento:</strong> ${movement.DescripcionAMostrar}\n<strong>馃挵 Ingreso:</strong> ${movement.ImporteCreditoLabel}` | |
| ); | |
| } else { | |
| telegram.sendTelegramMessage( | |
| `<strong>馃彟 Banco</strong>: Galicia\n<strong>鉂楋笍 Nuevo movimiento:</strong> ${movement.DescripcionAMostrar}\n<strong>馃挵 Gasto:</strong> ${movement.ImporteDebitoLabel}` | |
| ); | |
| } | |
| } | |
| }); | |
| }; | |
| setInterval(init, 10000); |
Gracias! 馃憦 馃憦 馃憦
Pregunta, no deberias actualizar las cookies cada vez que se caduquen?
misma pregunta, hacia un extractor de cookie simulando el login con selenium
Hace unos meses empec茅 a hacer esto mismo y me distraje. Protip (?): si le peg谩s a cierto endpoint keepalive, el homebanking no cierra la sesi贸n nunca, y pod茅s seguir pidiendo este dato sin volver a loguearte.
Hola @dcatanzaro .
Vos sab茅s que miro esto para arriba y para abajo y no me termino de dar cuenta en d贸nde le dec铆s que traiga los datos de TU cuenta. Cuando puedas, me cont谩s c贸mo lo est谩s haciendo?
Gracias!
Hola @dcatanzaro . Vos sab茅s que miro esto para arriba y para abajo y no me termino de dar cuenta en d贸nde le dec铆s que traiga los datos de TU cuenta. Cuando puedas, me cont谩s c贸mo lo est谩s haciendo?
Gracias!
Entiendo que de las cookies no?
Sale repo donde adicionemos los dem谩s bancos?
Para mandar el request a trav茅s de la API de Telegram, est谩 bien que sea un GET en vez de un POST? O es indiferente?
Sale repo donde adicionemos los dem谩s bancos?
Estar铆a genial
el cookies="" es la cookie que obtiene una vez que inicia sesi贸n no? supongo est谩 vac铆o para no pasar la info no? Otra cosa, el endpoint de galicia como lo obtiene ? hay alguna API para esto?
Muy bueno! una consulta!
Que tipo de Cookie se utiliza para poder leer el contenido de la pagina?
como puedo descargarlo y empezar a usarlo?
como puedo descargarlo y empezar a usarlo?
ten茅s que instalar nodeJS y correr este script en un terminal, o bien instalarlo como servicio para no tener que tener la ventanita del terminal abierta todo el tiempo
Muy bueno Damian!
Alguien tiene idea si se puede hacer para Santander?
Muy bueno Damian! Alguien tiene idea si se puede hacer para Santander?
@tstambulsky
Reci茅n de curioso estuve chequeando, hay que adaptar algunas cositas pero se puede seguir la misma l贸gica tranquilamente
驴Alguien que averig眉e si es factible hacerlo para ICBC? Necesito obtener datos de transferencias recibidas en una cuenta (titular origen, n煤mero de operaci贸 o algo) para validar pagos.
- La cookie podr铆a estar en una variable de entorno
- No tiene rate limiter la API del banco?
- Habr铆a que averiguar si tiene paginado para traerte pocos elementos. Si el tiempo entre requests es bajo, no necesitas traerte muchos elementos. Por lo contrario subir el tiempo entre requests hace que te tengas que traer mas elementos para estar actualizado y no perder ninguno.
movementsGalicia.reverse()se puede reemplazar por leer el array al rev茅s y te evitas una operaci贸n costosa- El
forEachlo pod茅s romper (break) cuando elmovimientos.IndiceMovimiento < lastIndexMovement - El
lastIndexMovementse te va a resetear si reinicias la app. Tendr铆a que quedar persistido en alg煤n lado (un redis, por ejemplo). De lo contrario cada vez que levantes la app te va a tirar los mensajes por todos los movimientos que te devuelve la API (que ya envi贸). - Faltan tests (?) JAJAJAJAJA
- La cookie podr铆a estar en una variable de entorno
- No tiene rate limiter la API del banco?
- Habr铆a que averiguar si tiene paginado para traerte pocos elementos. Si el tiempo entre requests es bajo, no necesitas traerte muchos elementos. Por lo contrario subir el tiempo entre requests hace que te tengas que traer mas elementos para estar actualizado y no perder ninguno.
movementsGalicia.reverse()se puede reemplazar por leer el array al rev茅s y te evitas una operaci贸n costosa- El
forEachlo pod茅s romper (break) cuando elmovimientos.IndiceMovimiento < lastIndexMovement- El
lastIndexMovementse te va a resetear si reinicias la app. Tendr铆a que quedar persistido en alg煤n lado (un redis, por ejemplo). De lo contrario cada vez que levantes la app te va a tirar los mensajes por todos los movimientos que te devuelve la API (que ya envi贸).- Faltan tests (?) JAJAJAJAJA
Excelente analisis.
- La cookie podr铆a estar en una variable de entorno
- No tiene rate limiter la API del banco?
- Habr铆a que averiguar si tiene paginado para traerte pocos elementos. Si el tiempo entre requests es bajo, no necesitas traerte muchos elementos. Por lo contrario subir el tiempo entre requests hace que te tengas que traer mas elementos para estar actualizado y no perder ninguno.
movementsGalicia.reverse()se puede reemplazar por leer el array al rev茅s y te evitas una operaci贸n costosa- El
forEachlo pod茅s romper (break) cuando elmovimientos.IndiceMovimiento < lastIndexMovement- El
lastIndexMovementse te va a resetear si reinicias la app. Tendr铆a que quedar persistido en alg煤n lado (un redis, por ejemplo). De lo contrario cada vez que levantes la app te va a tirar los mensajes por todos los movimientos que te devuelve la API (que ya envi贸).- Faltan tests (?) JAJAJAJAJA
Hice el bot en 2 minutos, para mi caso me servia :P, al pedo darle complejidad a un botcito asi.
Hace unos meses empec茅 a hacer esto mismo y me distraje. Protip (?): si le peg谩s a cierto endpoint keepalive, el homebanking no cierra la sesi贸n nunca, y pod茅s seguir pidiendo este dato sin volver a loguearte.
Bue, me siento tan seguro en este momento 馃憖
si pongo lo que trae document.cookie la repsonse es = >
data: {
IsError: true,
Model: {
Codigo: 'NULLJSONEXCP',
Descripcion: "Error en 'ErrorAjaxJSon', exception es null",
CerrarSesion: false
}
}a alguien le paso? como se soluciona?
alguien lo hizo para el BBVA?
alguien lo hizo para el BBVA?
https://github.com/yagopajarino/bot-bbva
馃殌
Muchas gracias!! Te puedo hacer una consulta?
En cookies mandas toda la cookie quw se genera cuando haces login o solo algunos valores??
alguien lo hizo para el BBVA?
Muchas gracias!! Te puedo hacer una consulta? En cookies mandas toda la cookie quw se genera cuando haces login o solo algunos valores??
Hola! Se la paso entera ;)
alguien lo hizo para el BBVA?
Muchas gracias!! Te puedo hacer una consulta? En cookies mandas toda la cookie quw se genera cuando haces login o solo algunos valores??
Hola! Se la paso entera ;)
tenes idea por que me puede tirar este error? le estoy pasando el 'x-xsrf-token' de la sesion..
data: 'Error 403: Expected CSRF token not found. Has your session expired?\n'
Mandame un dm o un mail y lo vemos
alguien lo hizo para el BBVA?
Muchas gracias!! Te puedo hacer una consulta? En cookies mandas toda la cookie quw se genera cuando haces login o solo algunos valores??
Hola! Se la paso entera ;)
tenes idea por que me puede tirar este error? le estoy pasando el 'x-xsrf-token' de la sesion..
data: 'Error 403: Expected CSRF token not found. Has your session expired?\n'
Mandame un dm por twitter o un mail y lo vemos
Muy bueno Damian! Alguien tiene idea si se puede hacer para Santander?
@tstambulskyReci茅n de curioso estuve chequeando, hay que adaptar algunas cositas pero se puede seguir la misma l贸gica tranquilamente
intente hacerlo para el santander y no me funcion贸.. si alguno lo hizo y lo quiere compartir, bienvenido ser谩..

Pregunta, no deberias actualizar las cookies cada vez que se caduquen?