Link Unroller Service
As a small side project, I recently launched a “link unroller” service. This is a very simple service. You give it a URI, and it follows any redirect chain for you. Then it spits out the final URI via a friendly JSON API.
Give it a spin:
https://unroll.kbys.me/unroll?uri=http://bit.ly/1QZ6acT
Basically, all you do is send a GET request to:
https://unroll.kbys.me/unroll?uri=<URI to unroll>
Done. If there are no problems, you will get a JSON response:
{
"uri":"http://bit.ly/1QZ6acT",
"unrolled_uri":"/",
"redirect_path":[
"http://bit.ly/1QZ6acT",
"/"
],
"error":false
}
The unrolled_uri
parameter is the final link in the chain, and the redirect_path
is an array of the links that were traversed.
If you’d like to take a look at the code, make some contributions, or submit some bugs, please head over to the GitHub page.
Technical details:
- The server is in Tokyo.
- Written in Elixir.
- Backend responses are ~ 600 microseconds on a cache hit.
Policy details:
- Up to 7 redirects will be followed.
- The request will time out after 20 seconds and return an error.
- 301 redirects are cached forever, regardless of
Cache-Control
orExpires
headers present in the response. - 302 redirects will honor caching headers, with a minimum TTL of 1 minute (this is for DoS protection on my side)
- 200 responses are cached for 1 hour.