elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Guía actualizada para evitar que un ransomware ataque tu empresa


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  Obtener noticias desde Google Reader con NodeJs
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Obtener noticias desde Google Reader con NodeJs  (Leído 1,901 veces)
WHK
Moderador Global
***
Desconectado Desconectado

Mensajes: 6.589


Sin conocimiento no hay espíritu


Ver Perfil WWW
Obtener noticias desde Google Reader con NodeJs
« en: 26 Noviembre 2012, 16:53 pm »

Estaba terminando un pequeño Script en mis ratos libres para obtener noticias desde google reader con un simple Script hecho en javascript con node, envía las cabeceras de autentificación de forma automática, espero que a mas de alguno les sirva:

Código
  1. /* Google Reader in NodeJS by WHK */
  2.  
  3. var http = require("http");
  4. var https = require("https");
  5.  
  6. /* Configuración */
  7. var sesion = {
  8. SID : '',
  9. LSID : '',
  10. Auth : '',
  11. token : ''
  12. };
  13. var bufferIO = '';
  14. var obNoticias = {};
  15.  
  16. var loginData = {
  17. mail : 'correo@gmail.com',
  18. pass : '**********'
  19. };
  20.  
  21. console.log(' - Conectando al servidor de Google Reader ...');
  22.  
  23. https.get('https://www.google.com/accounts/ClientLogin?service=reader&source=reader&Email=' + escape(loginData.mail) + '&Passwd=' + escape(loginData.pass),
  24. function(res){
  25.  
  26. /* esperando un HTTP 200 */
  27. if(res.statusCode == 200){
  28. console.log(' - Obteniendo llaves de acceso ...');
  29.  
  30. /* Procesa el contenido */
  31. res.on('data', function(chunk){
  32. bufferIO += chunk.toString() + '';
  33. }).on('end', function(){
  34.  
  35. bufferIO = bufferIO.trim(); /* Limpia el buffer de cualquier basura extra */
  36.  
  37. /* Autentificado? */
  38. if(bufferIO == 'Error=BadAuthentication'){
  39. console.log(' - Clave de acceso erronea.');
  40. return false;
  41. }
  42.  
  43. var partes = bufferIO.split('\n');
  44. if(!partes.length){
  45. console.log(' - Imposible ingresar, google no ha respondido correctamente.');
  46. return false;
  47. }
  48. bufferIO = ''; /* Limpia la memoria */
  49.  
  50. var linea;
  51. for(_id in partes){
  52. linea = partes[_id].trim().split('=');
  53. if((linea[0] == 'SID') || (linea[0] == 'LSID') || (linea[0] == 'Auth')){
  54. sesion[linea[0]] = linea[1];
  55. }
  56. }
  57.  
  58. console.log(' - Obteniendo token de seguridad ...');
  59. http.get({
  60. host : 'www.google.com',
  61. port : 80,
  62. path : '/reader/api/0/token',
  63. headers: {
  64.                'Authorization': 'GoogleLogin auth=' + sesion['Auth']
  65.            }
  66.  
  67. }, function(res2){
  68.  
  69. /* esperando un HTTP 200 */
  70. if(res2.statusCode == 200){
  71.  
  72. /* Procesa el contenido */
  73. res2.on('data', function(chunk2){
  74. bufferIO += chunk2.toString() + '';
  75. }).on('end', function(){
  76. sesion['token'] = bufferIO;
  77. console.log(' - Acceso concedido!');
  78.  
  79. bufferIO = ''; /* Limpia la memoria */
  80.  
  81. console.log(' - Obteniendo temas ...');
  82. /* ############################ Obtiene las noticias ############################ */
  83. http.get({
  84. host : 'www.google.com',
  85. port : 80,
  86. path : '/reader/api/0/stream/contents/user/-/state/com.google/reading-list?ck=' + Math.floor(new Date().getTime() / 1000),
  87. headers: {
  88.            'Authorization': 'GoogleLogin auth=' + sesion['Auth']
  89.        }
  90.  
  91. }, function(res3){
  92. /* esperando un HTTP 200 */
  93. if(res3.statusCode == 200){
  94.  
  95. bufferIO = '';
  96. /* Procesa el contenido */
  97. res3.on('data', function(chunk3){
  98. bufferIO += chunk3.toString() + '';
  99. }).on('end', function(){
  100. try{
  101. eval('obNoticias = ' + bufferIO + ';'); /* Procesa el Json entregado por Google */
  102.  
  103. for(_id in obNoticias.items){
  104. console.log('  [' + parseInt((parseInt(_id) + 1)) + '] ' + obNoticias.items[_id].title.trim().substr(0, 67) + ' ...');
  105. }
  106. console.log(' - ' + parseInt((parseInt(_id) + 1)) + ' Items obtenidos.');
  107.  
  108. return true;
  109.  
  110. }catch(e){
  111. console.log(' - Error en el servidor de Google Reader : Json corrupto.');
  112. return false;
  113. }
  114. });
  115.  
  116. }else{
  117. console.log(' - Error en el servidor de Google Reader : ' + res3.statusCode);
  118. return false;
  119. }
  120.  
  121. }).on('error', function(e){
  122. console.log(' - Imposible conectar al servidor de Google Reader.');
  123. return false;
  124. });
  125.  
  126. });
  127.  
  128. }else{
  129. console.log(' - Error en el servidor de Google Reader : ' + res2.statusCode);
  130. return false;
  131. }
  132.  
  133. }).on('error', function(e){
  134. console.log(' - Imposible conectar al servidor de Google Reader.');
  135. return false;
  136. });
  137. });
  138.  
  139. }else{
  140. console.log(' - Error en el servidor de cuentas de Google : ' + res.statusCode);
  141. return false;
  142. }
  143.  
  144. }
  145. ).on('error', function(e){
  146. console.log(' - Imposible conectar al servidor de cuentas de Google.');
  147. return false;
  148. });
  149.  
  150.  
  151. return true;

Código
  1. whk@packardbell $ node bot.js
  2. - Conectando al servidor de Google Reader ...
  3. - Obteniendo llaves de acceso ...
  4. - Obteniendo token de seguridad ...
  5. - Acceso concedido!
  6. - Obteniendo temas ...
  7.  [1] Cómo prueba Samsung la resistencia de sus dispositivos: los Stress  ...
  8.  [2] El sitio web de la Policía de Lituania ha sido hackeado y modificad ...
  9.  [3] Mozilla estudia lanzar Firefox 17.0.1 para corregir un problema con ...
  10.  [4] Logran regenerar cartílagos gracias a una impresora 3D ...
  11.  [5] La web avanza a un ritmo trepidante... pero el vídeo sigue como sie ...
  12.  [6] El 34% de los españoles ha encontrado empleo a través de las redes  ...
  13.  [7] ICO Reino Unido publica el código de buenas prácticas para la anoni ...
  14.  [8] Detenido un adolescente por abusar de otros menores a los que su ma ...
  15.  [9] Big News te ofrece tus feeds con estilo y con widget de lockscreen ...
  16.  [10] Sony patenta un stylus con retroalimentación háptica ...
  17.  [11] Skobbler lanza una aplicación de Mapas online/offline para demostra ...
  18.  [12] "e-Bottle", conectando el mundo de forma diferente ...
  19.  [13] Vulnerabilidades en Novell File Reporter ...
  20.  [14] Un iPhone libre de 200 euros amenazará a Android en el año 2014 ...
  21.  [15] El servicio de atención al cliente de los operadores sigue siendo m ...
  22.  [16] Confirmados cuatro años de soporte para la Surface con Windows RT ...
  23.  [17] El extraño comportamiento del fuego en el espacio ...
  24.  [18] Cracking con OllyDbg ...
  25.  [19] Descubre qué está drenando y gastando tu batería con Battery Stats  ...
  26.  [20] El mercado negro de teléfonos móviles ...
  27. - 20 Items procesados.
  28. whk@packardbell $

Lo entretenido es que funciona en cualquier sistema operativo compatible con node, mac, linux, windows, etc.

:)


« Última modificación: 26 Noviembre 2012, 16:58 pm por WHK » En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines