Skip to content

Instantly share code, notes, and snippets.

@shawnli87
Forked from MCOfficer/README.md
Last active April 15, 2026 19:27
Show Gist options
  • Select an option

  • Save shawnli87/d416b7c9030293cabfcf4c225cdc5a15 to your computer and use it in GitHub Desktop.

Select an option

Save shawnli87/d416b7c9030293cabfcf4c225cdc5a15 to your computer and use it in GitHub Desktop.
Bash script to download files from gofile.io
#!/bin/bash
url="$1"
#prompt for url if not provided
until [ ! -z "$url" ] ; do
read -p "url=" url
done
id=$(sed 's|.*gofile.io/d/||g' <<< "$url")
echo "Downloading $id"
#get guest account token for url and cookie
token=$(curl -s 'https://api.gofile.io/createAccount' | jq -r '.data.token' 2>/dev/null)
[ "$?" -ne 0 ] && echo "Creating guest account failed, please try again later"
#get website token for url
websiteToken=$(curl -s 'https://gofile.io/dist/js/alljs.js' | grep 'fetchData.wt' | awk '{ print $3 }' | jq -r)
[ "$?" -ne 0 ] && echo "Getting website token failed, please try again later"
#get content info from api
resp=$(curl 'https://api.gofile.io/getContent?contentId='"$id"'&token='"$token"'&wt='"$websiteToken"'&cache=true' 2>/dev/null)
code="$?"
#prompt for password if required
if [[ $(jq -r '.status' <<< "$resp" 2>/dev/null) == "error-passwordRequired" ]] ; then
until [ ! -z "$password" ] ; do
read -p "password=" password
password=$(printf "$password" | sha256sum | cut -d' ' -f1)
resp=$(curl 'https://api.gofile.io/getContent?contentId='"$id"'&token='"$token"'&wt='"$websiteToken"'&cache=true&password='"$password" 2>/dev/null)
code="$?"
done
fi
#verify content info was retrieved successfully
[ "$code" -ne 0 ] && echo "URL unreachable, check provided link" && exit 1
#create download folder
mkdir "$id" 2>/dev/null
cd "$id"
#load the page once so download links don't get redirected
curl -H 'Cookie: accountToken='"$token" "$url" -o /dev/null 2>/dev/null
[ "$?" -ne 0 ] && echo "Loading page failed, check provided link"
for i in $(jq '.data.contents | keys | .[]' <<< "$resp"); do
name=$(jq -r '.data.contents['"$i"'].name' <<< "$resp")
url=$(jq -r '.data.contents['"$i"'].link' <<< "$resp")
#download file if not already downloaded
if [ ! -f "$name" ] ; then
echo
echo "Downloading $name"
curl -H 'Cookie: accountToken='"$token" "$url" -o "$name"
[ "$?" -ne 0 ] && echo "Downloading ""$filename"" failed, please try again later" && rm "$filename"
fi
done
echo
echo
echo "Note: gofile.io is entirely free with no ads,"
echo "you can support it at https://gofile.io/donate"
@aquint-g

Copy link
Copy Markdown

Thank you, it helps a lot :)

@asifajrof

Copy link
Copy Markdown

I was getting a "not premium error" for the website token. Maybe they have updated it recently. Checked from loading their site. As of now, "abcde" works fine.

@asifajrof

Copy link
Copy Markdown

@asifajrof changed again, how did you find it?

yup, at least for now it's fghij.

I found it by loading the page in my browser. Use the inspect tool and check in the networks tab.

@Rust1v1

Rust1v1 commented May 19, 2023

Copy link
Copy Markdown

I think gofile may have updated their API again, even using the new websiteToken I'm getting the notPremium error when using getContent

ghost commented May 19, 2023

Copy link
Copy Markdown

its agh3456fg now

@Rust1v1

Rust1v1 commented May 20, 2023

Copy link
Copy Markdown

agh3456fg

Good looking out, thank you!

@shawnli87

Copy link
Copy Markdown
Author

Fixed the websiteToken issues and added enhancements to bring the script more in line with my Zsh version (i.e. error checking, encrypted folders)

@Anceph

Anceph commented Jun 7, 2023

Copy link
Copy Markdown

Thanks!

@hunescoo

Copy link
Copy Markdown

jq: error (at :1): null (null) has no keys
any clue?

@tuocan

tuocan commented Jan 28, 2024

Copy link
Copy Markdown

jq: error (at :1): null (null) has no keys any clue?

I'm getting the same error

@shawnli87

Copy link
Copy Markdown
Author

@hunescoo @tuocan Fixed. The Gofile shortened the websiteToken key to wt.

@tmatzxzone

Copy link
Copy Markdown

is there a way to download a certain file within the folder? using the certain content id?

@shawnli87

Copy link
Copy Markdown
Author

is there a way to download a certain file within the folder? using the certain content id?

@tmatzxzone The whole point of using the script is to download multiple files at the same time. Why wouldn't you just use the browser for individual files?

@tmatzxzone

Copy link
Copy Markdown

is there a way to download a certain file within the folder? using the certain content id?

@tmatzxzone The whole point of using the script is to download multiple files at the same time. Why wouldn't you just use the browser for individual files?

im using headless vps, is there a way tho for a single file?

@shawnli87

Copy link
Copy Markdown
Author

is there a way to download a certain file within the folder? using the certain content id?

@tmatzxzone The whole point of using the script is to download multiple files at the same time. Why wouldn't you just use the browser for individual files?

im using headless vps, is there a way tho for a single file?

@tmatzxzone No

@tmatzxzone

Copy link
Copy Markdown

is there a way to download a certain file within the folder? using the certain content id?

@tmatzxzone The whole point of using the script is to download multiple files at the same time. Why wouldn't you just use the browser for individual files?

im using headless vps, is there a way tho for a single file?

@tmatzxzone No

alrite, i just add the file name that i dont need to download so it skip the download LUL, thx for the script tho

@asifajrof

Copy link
Copy Markdown

is there a way to download a certain file within the folder? using the certain content id?

im using headless vps, is there a way tho for a single file?

alrite, i just add the file name that i dont need to download so it skip the download LUL, thx for the script tho

I used another parameter to explicitly mention the filenames that i wanted to download. its not a full proof solution, but it works. you may check this fork

@tmatzxzone

Copy link
Copy Markdown

they just updated their API

@Zorg64

Zorg64 commented Mar 15, 2024

Copy link
Copy Markdown

A fork to work with the API update, but it is also heavily modified. Take and adapt what you need.

@alfuraiji

Copy link
Copy Markdown

dosen't work

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment