If I have a general url (not restricted to twitter or google) like this:
http://t.co/y4o14bI
is there an easy way to check if this url is shortened?
In the above case, I as a human can of course see that it was shortend, but is there an automatic and elegant way?
You can't.
You can only check if you list a couple of shorteners and check if the url starts with it.
You can also try checking whether the url is shorter than a given length (and contains path/query string), but some shorteners (tinyurl for example) may have longer urls than normal sites (aol.com)
I would prefer the list of known shorteners.
Here's what you could do in Java, groovy and the like.
We all love to see some code don't we. Its crude, but hey!
Actually, you as a human, can't. The only way you know that it's shortened is that it's a t.co domain. The
y4o14bI
could be an CMS identifier for all you know.The best way would be to use a list of known shortener urls, and lookup against that.
And even then you would have problems. I use bit.ly with a personal domain, wtn.gd
So http://wtn.gd/random would also be a shortened URL.
You could maybe do a HTTP HEAD-request, and check for a 301/302 ?
If you request an URL like this, your HttpCLient should receive a HTTP Redirect instead of a HTML page. This wouldn't be an evidence but at least a hint.
if you know all the domains that can be used to shorten your URLs, check if it is contained :
Evaluate the URL and look for some clues:
the Path meets certain criteria
HttpUrlConnection returns a redirect responseCode (i.e. 301, 302)