Show HN: I built a FOSS service to protect against link shorteners tracking us
unshort.link
unshort.link
So there's a project called URLteam to index and save them. I just started running a Warrior instance on the URLteam project, and it's really straightforward. I figure folks reading this may be interested. More info:
https://www.archiveteam.org/index.php?title=URLTeam
https://www.archiveteam.org/index.php?title=ArchiveTeam_Warr...
There are two exceptions:
• I still see service-specific short URLs, e.g. goo.gl, nyti.ms, etc. Because these can only be created by the service in question, they don't introduce security/privacy concerns.
• When a URL shortener is used to create a sort of vanity link to e.g. a Google doc. (OP's service could be useful for these!)
Outside of those times... why would you use a URL shortener? When are you limited by number of characters?
These are definitely not curated by the service in question.
On iOS, examples include:
[business].app.link
[business].onelink.me
[hash].ulink.adjust.com
[business].bttn.io
branch.io
etc...
Link shorteners are a subclass of this, that do something useful (shorten link) while doing something unhelpful (obscuring the link). But it’s all the same problem.In my research I also found that it is a quite nice thing for phishing to fool you into opening a shady website.
This isn't necessarily true; I've seen companies that offer to do the 'custom shortlink' thing for various companies. It's safe to assume that there are privacy concerns with at least some of them.
https://www.vice.com/en_us/article/mg7xjb/how-hackers-broke-...
I came to work on this as I wantend to not get bothered with the short link services (and the links behind them) tracking me. So unshort.link also tries to "learn" (by trying different url parameters) which paramters on the long url are required and which are not and are only tracking you (with a HTML diff).
The service learns new shortlink services the moment you enter them on unshort.link and they than are also automatically used in the extension.
I suppose that issue could also be solved with a browser extension.
It'd be nice to do this with DNS rather than an extension though, above point aside, e.g. if already running Pi-hole or similar, send shortener URLs to unshort.link, and redirect immediately.
I know it's not how it works today, but I wasn't describing how it works, I was describing how I'd like it to.
The pi-hole doesn't see the /xyz, or any of the http redirects either.
If you directly want to get redirected without showing the url you can activate that feature in the plugins config.
Or you can send the shortlinks to http://unshort.link/[http://short.link/sd] and it will directly redirect you
1. Resolve shorterners to unshort.link server
2. Use `Host` header and path to redirect to unshortened pageMaybe you can run a cronjob setting that urls in some firewall file or so.
You can get the redirect info from unshort link also via its api without redirecting, just replace /d/ with /api/ in the GET request: e.g. https://unshort.link/api/https://tinyurl.com/unshortchromeex...
If you build an DNS solution, please do not forget to add the documentation on how to do it via a pull request to the unshort.link repo, so everyone could profit from it
After the next browser restart also the extension knows about that new service. (No updated required)
You can see if your updated worked if e.g. wapo.st is listed in https://unshort.link/providers
The browser extension can be easily (in the settings) tweaked to use your own server instead of unshort.link
I suppose it depends on your use, but IMO if you run it yourself as the only user, you lose more privacy than you gain.
Would be awesome if you build something like that! You can get the currently to unshort.link known short link providers in a nice json format from https://unshort.link/providers
You can get the redirect info from unshort link also via its api without redirecting, just replace /d/ with /api/ in the GET request: e.g. https://unshort.link/api/https://tinyurl.com/unshortchromeex....
If you build a solution, please do not forget to add the documentation on how to do it via a pull request to the unshort.link repo, so everyone could profit from it
getloc () {
curl -sI "$1" | grep -i "Location" | awk '/http.*/{print $2}' | sed 's/[%+]*//g' | sed 's/&*utm_[a-zA-Z0-9]*=[a-zA-Z0-9]*//g' | sed 's/?\s*$//g'
}Do you have any plans on releasing the static JS/HTML? Or is there a way this could be run on standard Apache/Nginx/IIS web servers?
The js/html assets are in the subfolder server/static/ for your use