Lo primero que se me ocurre es hacer un GET a la URL y si no falla, "parsear" la respuesta para ver si contiene un texto de un breve diccionario de errores. Pero el problema que tienes actualmente, es que los servidores Web por ser amigables con el usuario, primero dejaron de responder errores para representarlos de forma amigable, y segundo te puedes encontrar con mensajes muy disparatados como: "Ups, algo no está bien".
Código Delphi
[-]
uses
System.SysUtils, HTTPApp, IdHTTP;
function CheckURI(AURL: string): boolean;
var
HTTP: TIdHTTP;
begin
try
HTTP := TIdHTTP.Create;
try
HTTP.HandleRedirects := false;
result := FuncionParaEvaluarResultado(HTTP.Get(AURL))
finally
HTTP.Destroy;
end;
except
result := false;
end;
end;
En ese ejemplo, la función inexistente "FuncionParaEvaluarResultado", sería la encargada de buscar según un diccionario, palabras y frases que indiquen error, y es muy importante tener en cuenta, que el resultado
no va a ser estrictamente cierto, por ejemplo si incluís la URI a este hilo, y encontrarás en la respuesta del servidor el texto 404, si bien el servidor pudo encontrar el hilo.