A couple of days ago i noticed something off with blahaj.zone. I couldn’t see images posted by users on blahaj, so i thought it was a problem on their side.
Well guess fucking what? After 3 days, it was STILL broken, so i opened it and…
Blocked. They fucking blocked blahaj.zone. Actually beyond parody🤦♂️ Why? What was the point? there’s trans content literally everywhere on lemmy. what’s next, block them all? So now if i want to see a post by a user on blahaj, i have to turn on my VPN (protonvpn.com is also blocked in saudi, jfc) just to see it. Fuck this place. 🙄
I swear a couple of days ago it worked. This is a mild annoyance (hence the community) but still.
It’s so over guys, MBS said no more 196 😔
I quickly threw together a script to check which other Fediverse instances are blocked in Saudi Arabia by using Globalping. I know it’s horrible, but it works so far. Will share the results once it’s finished running. I’ll probably also rewrite the script later.
I got the list of instances from lemmy.world:
curl -s https://lemmy.world/instances | rg -o 'href="([^"]+)"' | rg -o 'https?://[^"]+' > instances.txt
#!/usr/bin/env fish set INSTANCES "./instances.txt" set OUTPUT_FILE "./output.txt" set COUNTRY "saudi arabia" for instance in (cat $INSTANCES) if globalping http $instance from $COUNTRY --method GET --limit 3 | rg 'Blocked URL' 2&>1 echo "Blocked: $instance" >> blocked.txt end end
I’m running
tail -f blocked.txt
in another terminal to monitor the results in real time.(Yeah I know the script sucks. Don’t judge me, I use fish and prefer its syntax over bash. I also use ripgrep, because I like it.)
I can run it for you if you want. I’ll post the results here
It’ll be faster for me since I’m in the country itself
EDIT: This won’t work. You can “ping” blahaj successfully, but only because it redirects to a gov page, and not an error. I’ll have to revise the script because of that.
Globalping has an HTTP method, which I use in the script:
I then use ripgrep to check if the HTTP response contains the string “Blocked URL”, as you can see in the script:
The if condition uses the exit code from ripgrep to add
$instance
from thefor
loop to theblocked.txt
file.I tested this manually and it works as intended. The script could use some optimizations though. And if you intend on running the current version, you need to lower the limit of the globalping command from 3 to 1, otherwise you will run out of credits before all 8100 instances are checked. I will rewrite this to use a globalping auth token though.
Btw I also removed the
https://
part from the instance list. Just opened it up in Vim, selected everything using V-Block mode and deleted it. I don’t know if that makes a difference, but I’m not sure if the Globalping command can take URLs, or if it only works with domains.Ah, it works for me now. I just ran it with ping instead of globalping, since i had no need to run it with that. And the script didn’t work after i did that, i’m not great at shell-scripting.
I made a modification that prints the status, but it’s painfully slow to check each site.
What do you use now? Curl? wget?
Globalping, just as you wrote it with the limit being 1
That should work.
I started working on a rewritten version in Rust that uses the REST API instead of the CLI tool. Once it’s done, it should be a lot faster, since it can make multiple requests simultaneously. I also plan to use this for other stuff in other countries.