Ir al contenido


Foto

Guardar una Imagen de una web Ayuda


  • Por favor identifícate para responder
11 respuestas en este tema

#1 Lynn

Lynn

    Member

  • Miembros
  • PipPip
  • 11 mensajes

Escrito 02 enero 2011 - 08:48

Hola Todos tengo una web en donde colocando mi numero de identificacion "DNI" me arroja la web con mi foto lo que deseo es guardar la foto de esta web en una carpeta "X"  con el mismo Numero de DNI
Imagen Enviada

bueno solo he usado una linea de codigo y colocado en un boton para que e visualize en un webBrowser en delphi


delphi
  1. WebBrowser1.Navigate('[url]http://www.infogob.com.pe/erm_2010/ficha.aspx?IdDni='+Edit1.TEXT+'&IdTab=0'[/url])


  • 0

#2 Caral

Caral

    Advanced Member

  • Moderador
  • PipPipPip
  • 4.266 mensajes
  • LocationCosta Rica

Escrito 02 enero 2011 - 09:03

Hola
Es un tema que no manejo, estoy seguro que encontraras respuesta pronto.
Si averiguo como hacerlo con gusto lo posteo.
Saludos
  • 0

#3 IcebergDelphi

IcebergDelphi

    Advanced Member

  • Moderadores
  • PipPipPip
  • 176 mensajes
  • LocationVillaflores, Chiapas, Mexico

Escrito 02 enero 2011 - 09:11

Hola Todos tengo una web en donde colocando mi numero de identificacion "DNI" me arroja la web con mi foto lo que deseo es guardar la foto de esta web en una carpeta "X"  con el mismo Numero de DNI
Imagen Enviada

bueno solo he usado una linea de codigo y colocado en un boton para que e visualize en un webBrowser en delphi


delphi
  1. WebBrowser1.Navigate('[url]http://www.infogob.com.pe/erm_2010/ficha.aspx?IdDni='+Edit1.TEXT+'&IdTab=0'[/url])



Hola Lynn mira este enlace:
http://www.delphidab...cles?article=14

aca hay otro mas facil: http://www.swissdelp...ode.php?id=1924

  • 0

#4 seoane

seoane

    Advanced Member

  • Administrador
  • 1.259 mensajes
  • LocationEspaña

Escrito 03 enero 2011 - 04:04

Me parece increíble  :| . No se que leyes sobre protección de datos hay en Peru, pero aquí si alguien hace una pagina como esa lo despellejan vivo (no literalmente  :D ). Con solo poner un numero de Dni ya te dan la FOTO  :| , el nombre y hasta la zona donde vive.

Esto es muy grave, teniendo en cuenta que el numero de Dni no es un numero especialmente secreto, es mas, son números consecutivos por lo que hacer un "backup" de todas las fotos de Dni es tan sencillo como hacer un "for ... do". En paginas similares se suele pedir algún otro dato, como la fecha de caducidad, que son mas difíciles de averiguar.

Ahora vamos con un poco de código:


delphi
  1. uses Wininet;
  2.  
  3. const
  4.   Etiqueta = &#39;<img id="ctl00_ContentPlaceHolder1_imgPolitico" src="&#39;;
  5.  
  6. procedure SendRequest(Stream: TStream; Url: String);
  7. var
  8.   hNet: HINTERNET;
  9.   hCon: HINTERNET;
  10.   hReq: HINTERNET;
  11.   Context: DWORD;
  12.   BytesRead: DWORD;
  13.   Success: Boolean;
  14.   Buffer: PChar;
  15. begin
  16.   Context:= 0;
  17.   hNet := InternetOpen(&#39;Agente86&#39;, INTERNET_OPEN_TYPE_PRECONFIG, nil, nil, 0);
  18.   if (hNet <> nil) then
  19.   begin
  20.     hCon:= InternetConnect(hNet,&#39;[url=http://www.infogob.com.pe]www.infogob.com.pe[/url]&#39;,80,nil,nil,
  21.       INTERNET_SERVICE_HTTP,0,Context);
  22.     if (hCon <> nil) then
  23.     begin
  24.       hReq:= HttpOpenRequest(hCon,&#39;GET&#39;,PChar(Url),nil,nil,nil,
  25.           INTERNET_FLAG_RELOAD,Context);
  26.       if (hReq <> nil) then
  27.       begin
  28.         Success:= HttpSendRequest(hReq, nil,Cardinal(-1),nil,0);
  29.         if Success then
  30.         begin
  31.           GetMem(Buffer,32*1024);
  32.           try
  33.             while (InternetReadFile(hReq,Buffer,32*1024,BytesRead)) do
  34.             begin
  35.               if (BytesRead = 0) then
  36.                 break;
  37.               Stream.Write(Buffer^,BytesRead)
  38.             end;
  39.           finally
  40.             FreeMem(Buffer);
  41.           end;
  42.         end;
  43.         InternetCloseHandle(hReq);
  44.       end;
  45.       InternetCloseHandle(hCon);
  46.     end;
  47.     InternetCloseHandle(hNet);
  48.   end;
  49. end;
  50.  
  51. procedure GuardarImagen(Dni, Path: String);
  52. var
  53.   i: integer;
  54.   Str, Url: String;
  55.   Stream: TMemoryStream;
  56. begin
  57.   Stream:= TMemoryStream.Create;
  58.   try
  59.     SendRequest(Stream,&#39;/erm_2010/ficha.aspx?IdDni=&#39;+Dni+&#39;&IdTab=0&#39;);
  60.     Str:= Utf8Decode(PChar(Stream.Memory));
  61.     i:= Pos(Etiqueta,Str);
  62.     if i = 0 then
  63.       Exit;
  64.     inc(i,Length(Etiqueta));
  65.     Url:= EmptyStr;
  66.     while (i < Length(Str)) do
  67.     begin
  68.       if Str[i] = &#39;"&#39; then
  69.         break;
  70.       Url:= Url + Str[i];
  71.       inc(i);
  72.     end;
  73.     if Url = EmptyStr then
  74.       Exit;
  75.     Stream.Clear;
  76.     SendRequest(Stream,&#39;/erm_2010/&#39;+StringReplace(Url,&#39;&amp;&#39;,&#39;&&#39;,[rfReplaceAll,rfIgnoreCase]));
  77.     Stream.SaveToFile(Path);
  78.   finally
  79.     Stream.Free;
  80.   end;
  81. end;



Por ejemplo


delphi
  1. GuardarImagen(&#39;43673372&#39;,&#39;E:\fotos\43673372.jpg&#39;);



Y si queremos hacernos con una buena base de datos:


delphi
  1. var
  2.   i: Cardinal;
  3. begin
  4.   for i:= 43673372 to 43673472 do // El rango que queramos
  5.     GuardarImagen(IntToStr(i),&#39;E:\fotos\&#39; + IntToStr(i) + &#39;.jpg&#39;);
  6. end;



Yo probé y me baje 20 fotos en un minuto, pero optimizando un poquito el código, lanzando varios threads a la vez y usando varios ordenadores se pueden descargar todas las fotos en pocos días.

Saludos
  • 0

#5 seoane

seoane

    Advanced Member

  • Administrador
  • 1.259 mensajes
  • LocationEspaña

Escrito 03 enero 2011 - 07:06

Solo por curiosidad  *-) , he lanzado 10 hilos simultáneos y en 3 horas me he hecho con 12.700 fotografías de confiados peruanos

... por no decir nombres, dirección, etc ... increíble  :|
  • 0

#6 eduarcol

eduarcol

    Advanced Member

  • Administrador
  • 4.483 mensajes
  • LocationVenezuela

Escrito 03 enero 2011 - 07:36

Aqui en Venezuela la pagina el ente electoral lo que te muestra es tu nombre, cedula y datos del centro de votación.  La foto creo que si seria exagerado, y menos aun los datos del domicilio
  • 0

#7 Lynn

Lynn

    Member

  • Miembros
  • PipPip
  • 11 mensajes

Escrito 03 enero 2011 - 03:31

podrias adjuntar el archivo creoado seoane para poder ser vi esta guardando la foto con las dimensiones que segun creo que son
  • 0

#8 seoane

seoane

    Advanced Member

  • Administrador
  • 1.259 mensajes
  • LocationEspaña

Escrito 03 enero 2011 - 03:44

podrías adjuntar el archivo creado seoane para poder ver si esta guardando la foto con las dimensiones que según creo que son


El problema es que estas usando un versión mas actual de delphi que yo, no es problema de dimensiones, por eso te pregunte la versión de delphi que utilizas.

En tu versión utilizas string del tipo "UNICODE" y el código que te puse esta pensado para usar string de tipo ANSI.

Pero no hay problema, simplemente hay que decirle al compilador que es cada cosa y listo:


delphi
  1. uses Wininet, StrUtils;
  2.  
  3. const
  4.   Etiqueta = &#39;<img id="ctl00_ContentPlaceHolder1_imgPolitico" src="&#39;;
  5.  
  6. procedure SendRequest(Stream: TStream; Url: AnsiString);
  7. var
  8.   hNet: HINTERNET;
  9.   hCon: HINTERNET;
  10.   hReq: HINTERNET;
  11.   Context: DWORD;
  12.   BytesRead: DWORD;
  13.   Success: Boolean;
  14.   Buffer: PChar;
  15. begin
  16.   Context:= 0;
  17.   hNet := InternetOpenA(&#39;Agente86&#39;, INTERNET_OPEN_TYPE_PRECONFIG, nil, nil, 0);
  18.   if (hNet <> nil) then
  19.   begin
  20.     hCon:= InternetConnectA(hNet,&#39;[url=http://www.infogob.com.pe]www.infogob.com.pe[/url]&#39;,80,nil,nil,
  21.       INTERNET_SERVICE_HTTP,0,Context);
  22.     if (hCon <> nil) then
  23.     begin
  24.       hReq:= HttpOpenRequestA(hCon,&#39;GET&#39;,PAnsiChar(Url),nil,nil,nil,
  25.           INTERNET_FLAG_RELOAD,Context);
  26.       if (hReq <> nil) then
  27.       begin
  28.         Success:= HttpSendRequestA(hReq, nil,Cardinal(-1),nil,0);
  29.         if Success then
  30.         begin
  31.           GetMem(Buffer,32*1024);
  32.           try
  33.             while (InternetReadFile(hReq,Buffer,32*1024,BytesRead)) do
  34.             begin
  35.               if (BytesRead = 0) then
  36.                 break;
  37.               Stream.Write(Buffer^,BytesRead)
  38.             end;
  39.           finally
  40.             FreeMem(Buffer);
  41.           end;
  42.         end;
  43.         InternetCloseHandle(hReq);
  44.       end;
  45.       InternetCloseHandle(hCon);
  46.     end;
  47.     InternetCloseHandle(hNet);
  48.   end;
  49. end;
  50.  
  51. procedure GuardarImagen(Dni: AnsiString; Path: String);
  52. var
  53.   i: integer;
  54.   Str, Url: AnsiString;
  55.   Stream: TMemoryStream;
  56.   a:widestring;
  57. begin
  58.   Stream:= TMemoryStream.Create;
  59.   try
  60.     SendRequest(Stream,&#39;/erm_2010/ficha.aspx?IdDni=&#39;+Dni+&#39;&IdTab=0&#39;);
  61.     Str:= AnsiString(PAnsiChar(Stream.Memory));
  62.     i:= AnsiPos(String(Etiqueta),String(Str));
  63.     if i = 0 then
  64.       Exit;
  65.     inc(i,Length(Etiqueta));
  66.     Url:= &#39;&#39;;
  67.     while (i < Length(Str)) do
  68.     begin
  69.       if Str[i] = &#39;"&#39; then
  70.         break;
  71.       Url:= Url + Str[i];
  72.       inc(i);
  73.     end;
  74.     if Url = &#39;&#39; then
  75.       Exit;
  76.     Stream.Clear;
  77.     SendRequest(Stream,AnsiString(&#39;/erm_2010/&#39;) +
  78.       AnsiString(AnsiReplaceText(String(Url),AnsiString(&#39;&amp;&#39;),AnsiString(&#39;&&#39;))));
  79.     Stream.SaveToFile(Path);
  80.   finally
  81.     Stream.Free;
  82.   end;
  83. end;


  • 0

#9 Lynn

Lynn

    Member

  • Miembros
  • PipPip
  • 11 mensajes

Escrito 03 enero 2011 - 03:48

repitiendo podrias colocar el ejecutable para saber como se esta ejecutando en donde coloco el dni y en donde doy al menos clip para que guarde la imagen y por lo menos en donde coloco el [pre]SendRequest[/pre]
  • 0

#10 cesarjaime

cesarjaime

    Newbie

  • Miembros
  • Pip
  • 1 mensajes

Escrito 10 enero 2011 - 01:47

Hola Todos tengo una web en donde colocando mi numero de identificacion "DNI" me arroja la web con mi foto lo que deseo es guardar la foto de esta web en una carpeta "X"  con el mismo Numero de DNI
Imagen Enviada

bueno solo he usado una linea de codigo y colocado en un boton para que e visualize en un webBrowser en delphi


delphi
  1. WebBrowser1.Navigate(&#39;[url]http://www.infogob.com.pe/erm_2010/ficha.aspx?IdDni=&#39;+Edit1.TEXT+&#39;&IdTab=0&#39;[/url])



les informo que al escribir:
http://www.infogob.c...7768359&IdTab=0

me redirige a:
http://www.infogob.c...2010/ficha.aspx
alguna ayudita para guardar las fotos
  • 0

#11 seoane

seoane

    Advanced Member

  • Administrador
  • 1.259 mensajes
  • LocationEspaña

Escrito 10 enero 2011 - 03:27

les informo que al escribir:
http://www.infogob.c...7768359&IdTab=0

me redirige a:
http://www.infogob.c...2010/ficha.aspx
alguna ayudita para guardar las fotos


:D Se deben de haber enfadado por lo del otro día porque la url dejo de funcionar, o a lo mejor se dieron cuenta del terrible fallo de seguridad que tenían y por fin decidieron taparlo, en cualquier caso los datos de los confiados ciudadanos ya están mas seguros  (y)


  • 0

#12 egostar

egostar

    missing my father, I love my mother.

  • Administrador
  • 14.448 mensajes
  • LocationMéxico

Escrito 10 enero 2011 - 04:25


les informo que al escribir:
http://www.infogob.c...7768359&IdTab=0

me redirige a:
http://www.infogob.c...2010/ficha.aspx
alguna ayudita para guardar las fotos


:D Se deben de haber enfadado por lo del otro día porque la url dejo de funcionar, o a lo mejor se dieron cuenta del terrible fallo de seguridad que tenían y por fin decidieron taparlo, en cualquier caso los datos de los confiados ciudadanos ya están mas seguros  (y)



Pues que bueno que se ha eliminado ese acceso. Es un asunto que no me gusta nada.

Salud OS
  • 0




IP.Board spam blocked by CleanTalk.