Hola estoy creando algo así como un webspider en C#. En mi investigación, me encontré con un problema en el que necesitaba disuadirme si un enlace es interno o externo, entrante o saliente. Entonces necesitaba crear una función para hacer el trabajo por mí. Así que se me ocurrió la siguiente función, pero no estoy seguro de si es el mejor algoritmo posible para llevar a cabo esa tarea. Entonces me gustaría tener sus opiniones sobre este problema.Comprueba si un enlace es interno o externo
I Asume que los enlaces sin http: // o https: // delante del enlace son internos y si tengo un dominio http://www.blahblah.com a continuación un enlace como prueba todavía debe ser interna a pesar del hecho de que tiene http : // al frente, pero un enlace como http://www.somethingelse.com/?var1=http://www.blahblah.com/test es externo. Estoy comprobando las primeras letras solamente.
private Boolean checklinkifinternal(String link)
{
Boolean isinternal = false;
if (link.IndexOf("http://") == 0 || link.IndexOf("https://") == 0)
{
//Then probably external
if (link.IndexOf("http://" + UrlName) == 0 || link.IndexOf("https://" + UrlName) == 0 || link.IndexOf("http://www." + UrlName) == 0 || link.IndexOf("https://www." + UrlName) == 0)
{
isinternal = true;
}
}
else
{
isinternal = true;
}
return isinternal;
}
¿cómo se puede determinar si es externo/interno según el protocolo que está usando ...? – Shai
¿Qué pasa con http://127.0.0.1 o http://192.168.1.1 ambos son internos pero pasarían como externos – Lloyd
de hecho no pensé en eso Lloyd – themis