Makes sense
Wait so the "great firewall" doesn't block Proton VPN IP addresses? That's interesting.
Proton works in China if you set the protocol to “stealth” in the setting
With or without alternative routing?
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.
You can also run a full Tor relay: https://community.torproject.org/relay/setup/guard/
There are tutorials on YouTube:
What do you use now? Curl? wget?
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:
globalping http $instance from $COUNTRY
I then use ripgrep to check if the HTTP response contains the string "Blocked URL", as you can see in the script:
| rg 'Blocked URL'
The if condition uses the exit code from ripgrep to add $instance
from the for
loop to the blocked.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.
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.)
Edit: so far I only got 3 blocked instances:
Blocked: becauseimbored.com
Blocked: mamot.fr
Blocked: federotica.com
I need to rewrite this to use the REST API, create an account and use the authentication token, because it runs out of credits and fails.
I fully agree
I don't think it is. The first comment (the one you're referring to I suppose) just doesn't make any sense. The commenter is throwing around random buzzwords trying to sound educated and asking incredibly stupid questions on purpose. It's not fair criticism of the project at all. The secureblue account also replied to this, clarifying the misinformation from the first comment.
Great job!