Foro de elhacker.net

Programación => Programación Visual Basic => Mensaje iniciado por: jrhomer en 10 Enero 2006, 23:49 pm



Título: Como saber si existe un LINK, un archivo en internet
Publicado por: jrhomer en 10 Enero 2006, 23:49 pm
Hola foro.

Necesito saber si un archivo, como por ejemplo www.pepe.com/log/uno.txt, existe.

Mirando el API lo que he visto parecido es la función IsValidURL, pero no obtengo el resultado que necesito, ya que esta funcion me indica si es "correcta" la URL, pero no si existe.

por ejemplo:

http://www.pepe.com/ es una URL correcta
hrrp:/www.pepe.com/ es una URL incorrecta
http://www.pepe.com/log/noExisto.txt es una URL correcta
sin embardo el archivo /log/noExisto.txt no existe...

no se si me he explicado, creo q si.

(aquí la posteo la función IsValidURL por si alguien la necesita)

Private Const S_FALSE = &H1
Private Const S_OK = &H0
'Only implemented as unicode...
Private Declare Function IsValidURL Lib "URLMON.DLL" (ByVal pbc As Long, ByVal szURL As String, ByVal dwReserved As Long) As Long
Private Sub Form_Load()
    'KPD-Team 2001
    'URL: http://www.allapi.net/
    'E-Mail: KPDTeam@Allapi.net
    MsgBox "Is valid URL: " + CStr(IsGoodURL("http://www.allapi.net"))
    MsgBox "Is valid URL: " + CStr(IsGoodURL("hxxp:/www.allapi.uhoh"))
End Sub
Public Function IsGoodURL(ByVal sURL As String) As Boolean
    'The IsValidURL always expects a UNICODE string, but whenever
    'VB calls an API function, it converts the strings to ANSI strings.
    'That's why we're going to use a trick here. Before calling the function,
    'We're going to convert the unicode string to unicode so we get a double
    'unicode string.
    'Before VB calls the API function, it converts our double unicode string
    'to a normal unicode string; exactely what IsValidURL is expecting.
    sURL = StrConv(sURL, vbUnicode)
    'Now call the function
    IsGoodURL = (IsValidURL(ByVal 0&, sURL, 0) = S_OK)
End Function


Título: Re: Como saber si existe un LINK, un archivo en internet
Publicado por: jrhomer en 11 Enero 2006, 11:29 am
he probado con :

Código:
Private Declare Function URLDownloadToFile Lib "urlmon" Alias _
    "URLDownloadToFileA" (ByVal pCaller As Long, ByVal szURL As String, _
    ByVal szFileName As String, ByVal dwReserved As Long, _
    ByVal lpfnCB As Long) As Long
Public Function DownloadFile(URL As String, _
    LocalFilename As String) As Boolean
    Dim lngRetVal As Long
    lngRetVal = URLDownloadToFile(0, URL, LocalFilename, 0, 0)
    If lngRetVal = 0 Then DownloadFile = True
End Function[/P]
[P]
Sub Probando()
 If DownloadFile("[URL=http://www.loquesea/archivo2.pdf]www.loquesea/archivo2.pdf[/URL]", _
     "C:\mifichero.pdf") = True Then
  MsgBox "Descarga OK"
 Else
  MsgBox "Error en la descarga"
 End If
End Sub

pero no me interesa que se descargue el archivo,... alguien sabe como se puede comprobar sin necesidad de descargar el archivo.

un saludo.


Título: Re: Como saber si existe un LINK, un archivo en internet
Publicado por: Kizar en 11 Enero 2006, 17:23 pm
Digamos k la api IsValidURL ace una comprovacion muy simple de la url yo juraria k solo se fija en los puntos k tiene la url y si empiza por http:// .

A mi tambien me interesa lo de saber si un archivo existe.

Salu2


Título: Re: Como saber si existe un LINK, un archivo en internet
Publicado por: jrhomer en 11 Enero 2006, 17:31 pm
Digamos k la api IsValidURL ace una comprovacion muy simple de la url yo juraria k solo se fija en los puntos k tiene la url y si empiza por http:// .

A mi tambien me interesa lo de saber si un archivo existe.

Salu2
estoy probando con WebBrowser.... para ver si puedo cojer un error con el evento NavigateError... pero aun estoy probando, puede ser una "solución".

si sacais alguna solución no dudeis en postearla.


Título: Re: Como saber si existe un LINK, un archivo en internet
Publicado por: Kizar en 11 Enero 2006, 18:57 pm
Digamos k la api par abrir uan pagina web te devuelve 0 si la pagina no existe, el caso es k cuando en un servidor no existe un archivo te redireciona a la pagina de error 404 de el sitio entonces la api te dice k si k existe.

Salu2


Título: Re: Como saber si existe un LINK, un archivo en internet
Publicado por: jrhomer en 11 Enero 2006, 21:54 pm
Digamos k la api par abrir uan pagina web te devuelve 0 si la pagina no existe, el caso es k cuando en un servidor no existe un archivo te redireciona a la pagina de error 404 de el sitio entonces la api te dice k si k existe.

Salu2
a q API t refieres? a IsValidURL ? o a cual... lo digo para ver si podemos controlar lo del 0 q devuelve.


Título: Re: Como saber si existe un LINK, un archivo en internet
Publicado por: Thaorius en 11 Enero 2006, 22:01 pm
Que tal si tratan de conectar con un socket al servidor y obtener el archivo?
Si el apache se los da, existe. Sino, les tirara un 404. Y si no se conecta tampoco existe.

Saludos


Título: Re: Como saber si existe un LINK, un archivo en internet
Publicado por: jrhomer en 11 Enero 2006, 23:55 pm
Que tal si tratan de conectar con un socket al servidor y obtener el archivo?
Si el apache se los da, existe. Sino, les tirara un 404. Y si no se conecta tampoco existe.

Saludos
no me interesa obtener el archivo, solo interesa conocer si existe o no. Esa es la duda que he planteado y que no hemos podido solucionar aun.


Título: Re: Como saber si existe un LINK, un archivo en internet
Publicado por: Thaorius en 12 Enero 2006, 01:18 am
Justamente. Haces la peticion, si te llega un 404 pues no existe, sino te llega un error ni 404 ni 403 ni 501,etc existe e = cortas.

Saludos


Título: Re: Como saber si existe un LINK, un archivo en internet
Publicado por: jrhomer en 12 Enero 2006, 09:47 am
Que tal si tratan de conectar con un socket al servidor y obtener el archivo?
Si el apache se los da, existe. Sino, les tirara un 404. Y si no se conecta tampoco existe.

Saludos
no consigo cortar la descarga (antes de iniciarse) siempre q el archivo (mdb, en mi caso) existe, lo intenta descargar.

Tienes un ejemplo para guiarme?


un saludo.


Título: Re: Como saber si existe un LINK, un archivo en internet
Publicado por: Kizar en 12 Enero 2006, 15:58 pm
yo lo ago primero cona la api InternetOpen abro una conexion a internet, si conecta con la api InternetOpenUrl abro una url y si esta devuelve 0 es k  no a encontrado la url.

En el Api Guide tienes un ejemplo.

Salu2


Título: Re: Como saber si existe un LINK, un archivo en internet
Publicado por: Thaorius en 12 Enero 2006, 16:19 pm
Que el apache no te envia el codigo byte a byte? sin oes haci, no ni idea. Proba con lo de kizar.

Saludos