Foros del Web » Programación para mayores de 30 ;) » C/C++ »

[SOLUCIONADO] Web login y descargar archivo

Estas en el tema de Web login y descargar archivo en el foro de C/C++ en Foros del Web. Buenas a todos, ¿Como podría hacer para conseguir logarme a una pagina web para después descargar un archivo? Si alguien me pudiera pasar algo de ...
  #1 (permalink)  
Antiguo 09/02/2013, 13:11
 
Fecha de Ingreso: octubre-2009
Mensajes: 47
Antigüedad: 14 años, 6 meses
Puntos: 0
Web login y descargar archivo

Buenas a todos,

¿Como podría hacer para conseguir logarme a una pagina web para después descargar un archivo?

Si alguien me pudiera pasar algo de código para poder ojearlo se lo agradecería

Saludos
  #2 (permalink)  
Antiguo 10/02/2013, 06:04
 
Fecha de Ingreso: agosto-2012
Mensajes: 601
Antigüedad: 11 años, 8 meses
Puntos: 83
Respuesta: Web login y descargar archivo

"...¿Como podría hacer para conseguir logarme a una pagina web para después descargar un archivo?..."

Con el navegador: Vas a la pestaña de login, entras usr y psw, pinchas conectar, luego vas a descargas, seleccionas el archivo y aparace una ventana de 'guardar como', si lo guardas en escritorio siempre lo encuentras, asegurate de pasar el antivirus por todas las descargas que hagas, etc, etc...

Con un lenguaje de programacion: con sockets; la respuesta es simple pero la implementacion depende de muchas cosas: esta web requiere ssl con https o funciona con cookies de servidor? Tienes algo mas de informacion? Tal vez ayudaria que indicases el lenguaje, tu nivel de programacion de red, no se que mas lo que sea.

Saludos
vosk

Última edición por vosk; 10/02/2013 a las 06:11
  #3 (permalink)  
Antiguo 10/02/2013, 07:29
 
Fecha de Ingreso: octubre-2009
Mensajes: 47
Antigüedad: 14 años, 6 meses
Puntos: 0
Respuesta: Web login y descargar archivo

Gracias vosk por responder,

He programado algo en C++ pero no es para tirar cohetes. Con respecto a la informacion necesaria sobre la web no tengo demasiados conocimiento como para obtenerlos pero si te puedo pasar una de las Web similares de login

http://ge.com/webim


Lo estuve intentado con javascript http://www.forosdelweb.com/f13/logar...chero-1036170/ ya que en el trabajo no hay problemas de licencias con este lenguaje, tras ver que no es posible, me preferi acercar a C++, no puedo usarlo en el curro pero podria usar la solucion para pasarlo a visual usando una macro en microsoft excel.

Como ves voy dando palos de ciego usando solo las herramientas que puedo

Saludos
  #4 (permalink)  
Antiguo 10/02/2013, 09:32
 
Fecha de Ingreso: agosto-2012
Mensajes: 601
Antigüedad: 11 años, 8 meses
Puntos: 83
Respuesta: Web login y descargar archivo

La direccion de logeo de la web que has colgado es https, lo que significa que tendras que usar ssl.

Puedes comenzar con mirar algun manual se sockets (la guia beej es una buena opcion http://beej.us/guide/bgnet/, para windows tendras que usar winsocks http://tangentsoft.net/wskfaq/); esto te servirá para ver de que va la programacion de redes, protocolos, capas/niveles y encapsulacion de datos. Luego tendras que mirar de que va lo de ssl (puedes mirar en http://www.openssl.org/ que es una libreria para trabajar con ssl.

Si no puedes usar c++ no hay problema, seguramente microsoft tienen implementadas todas las librerias necesarias para vb (pero no hagas una macro en excel, que queda muy cutre).

Otra cosa que puedes probar es con php, que hay miles de 'cosas' implementadas para facilitar el trabajo y creo te será bastante facil hacer un cliente de este tipo (bueno no se si es facil pq nunca he echo un cliente con php, pero parece que tendria que serlo)

Hace unos dias en este mismo foro creo recordar que se comento algo de un plugin para navegador que 'repite' lo que haces, tal vez te interese echarle un vistazo antes de liarte con la programacion de redes.

Saludos
vosk
  #5 (permalink)  
Antiguo 10/02/2013, 10:00
 
Fecha de Ingreso: julio-2012
Mensajes: 375
Antigüedad: 11 años, 9 meses
Puntos: 28
Respuesta: Web login y descargar archivo

Cita:
Iniciado por vosk Ver Mensaje
Hace unos dias en este mismo foro creo recordar que se comento algo de un plugin para navegador que 'repite' lo que haces, tal vez te interese echarle un vistazo antes de liarte con la programacion de redes.
Sí, hay un plugin llamado imacros (tanto para firefox como para chrome) y sirve para crear macros que hacen tareas automatizadas:

- Para Firefox: https://addons.mozilla.org/es/firefo...s-for-firefox/
- Para Chrome: https://chrome.google.com/webstore/d...fgfijoopmnlemp

Si lo que quieres es simplemente descargar el archivo, puedes crear una macro que al activarlo. Se loguee en la pagina web, y se descargue el archivo.

El uso de este plugin es muy sencillo, le das a "record" y haces la tarea. El plugin guardará todos los pasos que hagas y los repetirá cuando ejecutes la macro.
  #6 (permalink)  
Antiguo 20/02/2013, 15:27
 
Fecha de Ingreso: octubre-2009
Mensajes: 47
Antigüedad: 14 años, 6 meses
Puntos: 0
Respuesta: Web login y descargar archivo

Buenas,

Lo primero gracias por las respuestas.

Al final me he decantado por java, así es como lo he hecho;


Código:
import java.util.Date;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.File;
import java.io.OutputStream;
import java.io.IOException;
import java.net.URL;
import com.gargoylesoftware.htmlunit.WebClient;
import com.gargoylesoftware.htmlunit.html.HtmlElement;
import com.gargoylesoftware.htmlunit.html.HtmlPage;
import com.gargoylesoftware.htmlunit.WebWindowListener;
import com.gargoylesoftware.htmlunit.WebWindowEvent;
import com.gargoylesoftware.htmlunit.BrowserVersion;

public class Test1
 {
 public static void main(String[] args) throws Exception
  {
  String User = "tu nombre de usuario";
  String Password = "tu password";

  System.out.println("El directorio temporal del sistema es " + System.getProperty("java.io.tmpdir"));
  System.out.println(new Date() + "\tStarting...");

  WebClient Browser = new WebClient();
  Browser.getOptions().setJavaScriptEnabled(false); //Dependiendo de la pagina te veras obligado a dejarlo activo (true) para que te coga el login correctamente

  System.out.println(new Date() + "\tCalling Web Site...");
  LogingWeb(Browser,"https://la pagina de login/",User, Password);

  AddWindowListener(Browser);
  System.out.println(new Date() + "\tGetting files...");

  System.out.println(new Date() + "\tGetting file...\n##################################################################");
  DownloadFile(Browser,"http://www.lulu.com/items/volume_5/173000/173784/1/preview/Glossary-demo.pdf","C:\\0\\Glossary-demo.pdf");
  System.out.println("##################################################################\n");

  System.out.println(new Date() + "\tGetting file...\n##################################################################");
  DownloadFile(Browser,"http://www.loadingsite.com/dl79b/HowToCreatePDFproducts.zip","C:\\0\\HowToCreatePDFproducts.zip");
  System.out.println("##################################################################\n");

  System.out.println(new Date() + "\tGetting file...\n##################################################################");
  DownloadFile(Browser,"http://download.microsoft.com/download/7/2/2/7224E39E-E884-43F9-B7D2-1823623C8C51/Microsoft_Dynamics_CRM_Service_Provider_Planning_and_Deployment_Guide.docx","C:\\0\\Microsoft_Dynamics_CRM_Service_Provider_Planning_and_Deployment_Guide.docx");
  System.out.println("##################################################################\n");

  System.out.println(new Date() + "\tGetting file...\n##################################################################");
  DownloadFile(Browser,"http://www.officehelp.biz/officehelp/DEMOS/CalendarPlan4AdvDemo.xls","C:\\0\\CalendarPlan4AdvDemo.xls");
  System.out.println("##################################################################\n");

  System.out.println(new Date() + "\tGetting file...\n##################################################################");
  DownloadFile(Browser,"http://www.google.es//","C:\\0\\Google.html"); //lo tengo restrinjido para no bajar archivos tipo "text/html", en webWindowContentChanged lo podeis cambiar
  System.out.println("##################################################################\n");

  System.out.println(new Date() + "\tFiles downloaded...");
  System.out.println(new Date() + "\tClosing all windows...");
  Browser.closeAllWindows();
  System.out.println(new Date() + "\tFinish...");
  }

 public static void LogingWeb(WebClient webClient, String UrlLogin, String sUser, String sPassword) throws Exception
  {
  //System.out.println(RefPage.getTitleText());
  //System.out.println(RefPage.asXml());

  HtmlPage Page = webClient.getPage(UrlLogin);
  HtmlElement obj;

  try{obj = Page.getElementByName("username");}catch(Exception e){obj = Page.getElementByName("USER");}
  obj.click();
  obj.type(sUser);
  
  try{obj = Page.getElementByName("password");}catch(Exception e){obj = Page.getElementByName("PASSWORD");}
  obj.click();
  obj.type(sPassword);

  try{obj = Page.getElementByName("Submit");}catch(Exception e){obj = Page.getElementByName("submit1");}
  obj.click();
  }

 public static void StreamToFile(InputStream In, String path) throws Exception
  {
  OutputStream out = new FileOutputStream(new File(path));

  int read = 0;
  byte[] bytes = new byte[1024];
  
  while((read = In.read(bytes)) != -1)
   out.write(bytes, 0, read);

  In.close();
  out.flush();
  out.close();
  }

 public static void DownloadFile(WebClient webClient, String Url, String FullPathFile)
  {
  String TempPath = System.getProperty("java.io.tmpdir") + "tmpFileDownload";
  File afile = new File(TempPath);
  afile.delete();
  try{webClient.getPage(Url);}catch(Exception e){}
  File bfile = new File(TempPath);
  if(bfile.exists())
   {
   MoveAndRenameFile(TempPath, FullPathFile);
   }
  }

 public static boolean MoveAndRenameFile(String Source, String Destination)
  {
  try{File afile = new File(Destination);afile.delete();}catch(Exception e){}
  try{
   File bfile = new File(Source);
   if(bfile.renameTo(new File(Destination)))
    return true;
   else
    return false;
   }catch(Exception e){}
  return false;
  }

 public static void AddWindowListener(final WebClient Browser)
  {
  Browser.addWebWindowListener(new WebWindowListener(){
   public void webWindowOpened(WebWindowEvent event)
    {}
   public void webWindowContentChanged(WebWindowEvent event)
    {
    System.out.println(new Date() + "\t" + event.getWebWindow().getEnclosedPage().getUrl());
    System.out.println(new Date() + "\t" + event.getWebWindow().getEnclosedPage().getWebResponse().getStatusCode());
    System.out.println(new Date() + "\t" + event.getWebWindow().getEnclosedPage().getWebResponse().getStatusMessage());
    System.out.println(new Date() + "\t" + event.getWebWindow().getEnclosedPage().getWebResponse().getContentType());
    System.out.println(new Date() + "\t" + event.getWebWindow().getEnclosedPage().getWebResponse().getResponseHeaderValue("Content-Disposition"));
    System.out.println(new Date() + "\t" + System.getProperty("java.io.tmpdir") + "tmpFileDownload"); 
    try{
    System.out.println(new Date() + "\t" + event.getWebWindow().getEnclosedPage().getWebResponse().getContentAsStream());
    if(!event.getWebWindow().getEnclosedPage().getWebResponse().getContentType().equals("text/html"))
     StreamToFile(event.getWebWindow().getEnclosedPage().getWebResponse().getContentAsStream(),System.getProperty("java.io.tmpdir") + "tmpFileDownload");
    else
     System.out.println(new Date() + "\tUPS!!!");
    }
   catch(Exception e){}
    }
   public void webWindowClosed(WebWindowEvent event)
    {}
   });
  }
 }

http://htmlunit.sourceforge.net/

http://webdesign.about.com/od/multim...ntent-type.htm

Etiquetas: login
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 15:55.