Dado un enlace t.co, ¿cómo puedo saber ver donde el enlace se resuelve? Por ejemplo, si tengo t.co/foo, quiero una función o proceso que devuelva domain.com/bar.donde un enlace t.co va a
Respuesta
Usted podría dar unshorten.me una oportunidad. Tiene un API.
JSON:
http://api.unshort.me/?r=http://theshorturl.ly/28292&t=json
le daría:
{
"requestedURL":"http://theshorturl.ly/28292",
"success":"true",
"resolvedURL":"http://thefullurl.com/a-webiste/what-a-long-url"
}
Si desea hacerlo desde la línea de comandos, opción detallada de rizo viene al rescate:
curl -v <url>
te da la respuesta HTTP. Para t.co parece darle una respuesta HTTP/301 (movida permanentemente). Luego, hay un campo de Ubicación, que apunta a la URL detrás del acortado.
también curl -I
me mantendría alejado de las API externas sobre las que no tiene control. Eso simplemente introducirá una dependencia en su aplicación que es un posible punto de falla, y podría costarle dinero para usar.
CURL puede hacer esto bastante bien. He aquí cómo lo hice en PHP:
function unshorten_url($url) {
$ch = curl_init($url);
curl_setopt_array($ch, array(
CURLOPT_FOLLOWLOCATION => TRUE, // the magic sauce
CURLOPT_RETURNTRANSFER => TRUE,
CURLOPT_SSL_VERIFYHOST => FALSE, // suppress certain SSL errors
CURLOPT_SSL_VERIFYPEER => FALSE,
));
curl_exec($ch);
return curl_getinfo($ch, CURLINFO_EFFECTIVE_URL);
}
Estoy seguro de que esto podría ser adaptado a otros idiomas o incluso secuencias de comandos con el comando curl
en sistemas UNIXy.
http://jonathonhill.net/2012-05-18/unshorten-urls-with-php-and-curl/
Buena solución. ¿Puedo sugerir establecer 'CURLOPT_NOBODY => true' para que se realice una solicitud HEAD en su lugar y el recurso final no se recupere realmente? – MaxArt
¿Cuál es la línea de comando equivalente aquí? –
No es un idiota, pero RTFM. http://curl.haxx.se/docs/manpage.html –
curl -s -o /dev/null --head -w "%{url_effective}\n" -L "https://t.co/6e7LFNBv"
--head
o-I
sólo descarga los encabezados HTTP-w
o--write-out
imprime la cadena especificada después de la salida de-L
o--location
siguiente manera cabeceras ubicación
Aquí hay una solución de Python.
import urllib2
class HeadRequest(urllib2.Request):
def get_method(self): return "HEAD"
def get_real(url):
res = urllib2.urlopen(HeadRequest(url))
return res.geturl()
probado con una vinculación efectiva Twitter t.co:
url = "http://t.co/yla4TZys"
expanded = get_real(url)
expandieron = http://twitter.com/shanselman/status/276958062156320768/photo/1
envolverlo con un try-salvo y que son buenos para ir.
no funciona con 'http://t.co/OFlTpTzCqt'.throws' HTTPError: HTTP Error 303: el servidor HTTP devolvió un error de redirección que conduciría a un ciclo infinito. El último mensaje de error de 30x fue: See Other' – Moj
Otra solución Python, esta vez apoyándose en el módulo de peticiones en lugar de urllib2 (y todo el resto de las bibliotecas):
#!/usr/bin/env python
import requests
shorturl = raw_input("Enter the shortened URL in its entirety: ")
r = requests.get(shorturl)
print("""
The shortened URL forwards to:
%s
""" % r.url)
Aquí es una solución de R, portado de otras respuestas en este hilo, y example()
de código del paquete RCurl:
unshorten_url <- function(uri){
require(RCurl)
if(RCurl::url.exists(uri)){
# listCurlOptions()
opts <- list(
followlocation = TRUE, # resolve redirects
ssl.verifyhost = FALSE, # suppress certain SSL errors
ssl.verifypeer = FALSE,
nobody = TRUE, # perform HEAD request
verbose = FALSE
);
curlhandle = getCurlHandle(.opts = opts)
getURL(uri, curl = curlhandle)
info <- getCurlInfo(curlhandle)
rm(curlhandle) # release the curlhandle!
info$effective.url
} else {
# just return the url as-is
uri
}
}
Usted puede probar este código Java. Tal es un código de uso de la HttpURLConnection propiedad de java. : http://www.srccodes.com/p/article/37/expand-shortened-link-using-java?fb_action_ids=1544985322486585&fb_action_types=og.likes
¿Cómo funcionará este expansor de URL? Haga HttpURLConnection a la url acortada (digamos http://goo.gl/WT6eFw).
Extraiga el valor del campo del encabezado HTTP "Ubicación". Y este valor no es más que la URL de destino expandida o real.
Cierre la conexión.
Twitter expande la URL. Supongamos que tiene un solo tweet utilizando twitter API codificado como archivo json.
import json
urlInfo=[]
tweet=json.loads(tweet)
keyList=tweet.keys() # list of all posssible keys
tweet['entities'] # gives us values linked to entities
Se puede observar que hay un valor llamado 'URL' Tweet [ 'entidades'] [ ''] # urls da valores asignados a las direcciones URL clave
urlInfo=tweet['entities']['expanded_url'] # move it to a list
# iterating over the list.. gives shortened URL
# and expanded URL
for item in urlInfo:
if "url" and "expanded_url" in urlInfo.keys():
print(item["url"] + " "+item["expanded_url"])
- 1. ¿Cómo hago un enlace que no va donde
- 2. Buscar tweets con t.co enlaces reescritos
- 3. Borrar el enlace va a mostrar el método
- 4. de salida donde no System.out.println va en Oracle clase Java
- 5. Para cada enlace donde href es igual a myValue
- 6. ¿A dónde va un registrador en DDD?
- 7. ¿A dónde va un documento OSDD de OpenSearch?
- 8. Runtime.availableProcessors: ¿qué va a devolver?
- 9. Ajax va a [% 20Object objeto]
- 10. Autoconf - ¿A dónde va config.h?
- 11. ¿A dónde va Java Stderr?
- 12. ¿A dónde va Console.WriteLine en ASP.NET?
- 13. Enlace a un inodo específico
- 14. Validación de URL internacionalizadas: ¿Esto va a ser un problema?
- 15. Python verificar url va a una página
- 16. dismissModalViewControllerAnimated no va a liberar cualquier memoria
- 17. ¿A dónde va mi suscripción de transmisión?
- 18. TTS de salida siempre va a A2DP
- 19. qué contenedor DI va a satisfacer esta
- 20. lm predecir no va a predecir
- 21. Listview va onclick a una nueva actividad
- 22. Cómo crear un enlace a un directorio
- 23. El hiperref de LaTeX va a la página incorrecta
- 24. Enlace a dos valores
- 25. dado un total, determinar el número de veces que un valor va a entrar en ella
- 26. ¿MSBuild va a estar muerto debido a Windows Workflow?
- 27. mapa iterador constante no va a fijar a mymap.begin()
- 28. Pase cadena a SQL DONDE EN
- 29. Cómo creo un enlace de base de datos donde remoto y local son el mismo servidor
- 30. filtro de jQuery: contiene un enlace (a href = "#")
unshorten.me se está cerrando su API, víctima de su propio éxito. (No puede pagar el costo de alojamiento de 6 millones de llamadas API por día) – Shewfig
Creé una pequeña aplicación para este propósito. Visite www.find-t.co. –
El sitio unshorten.me ya no está. –