🚫 India banned my site... I think?

Your requested URL has been blocked as per the directions received from Department of Telecommunications, Government of India.

10 min read

Censorship

Investigation

A few days ago I got a ping from one of the moderators in the Top.gg Discord server about something I’ve never seen happen before.

I’m sorry? Why would a documentation site get banned by the Indian government? Surely this is a mistake. Anyways, best to check it out to see what’s going on.

Ok, this is a strange situation but the google docs ban seems like a fairly reasonable lead to follow.

After a little bit of digging around on Google I found out that Google sites were never blocked to begin with.

In an order dated 23 June 2014, the Delhi High Court upon a request made by Sony Entertainment ordered 472 file sharing and file hosting websites blocked, including The Pirate Bay, Google Docs, Google Videos, and Google’s URL shorterner (goo.gl) […] However, it was reported on 7 July 2014 that an updated court order blocks just 219 sites. Included are many file storage and torrent websites, but no Google sites.

So I guess that’s not it then. Time to start looking somewhere else. Should I just be getting in touch with the Department of Telecommunications at this point? I know plenty of Indian developers in different communities I hang out in, maybe they can help me figure out what’s going on.

I’m also not convinced this is a global ban. Sure, a documentation site doesn’t receive that much traffic but we have a lot of Indian users and someone would’ve either let us know about this ban a long time ago, or there would be more than one person with the same problem, right? It seems very odd that I’m only now hearing about this and only from a single user.

Let’s check in with people in a different server.

That would be nice but I don’t think they want me, or really anyone emailing them, ever.

dot contact us page

At least I can definitely relate to not wanting emails.

Oh they do have their twitter page up there though. Seems a bit silly but I know my mom managed to figure out some problems with Cox in the US only after DMing them on Twitter so maybe that’ll work for me here too.

dot twitter dms

Please ignore the fact that I yoinked the docs page from the apollo docs.

I know I don’t have a ton of experience sliding into DMs but I was really hoping the government of India of all people wouldn’t leave me on read.

They also have an option to leave feedback on their site. I could try sending the same message there.

failed contact us form submission

Welp, that went about as well as I thought it would. I figured this might’ve been because of my non-indian IP but sadly it didn’t work with a VPN either. I dug around in dev tools and it’s something about my captcha being invalid…? I can’t even be bothered tbh.

It’s 10 AM at this point and I don’t exactly feel like making an international call inquiring the status of my national ban. Also, I hate phone calls, please don’t call me. It might be a good idea to check if anyone else is having problems reaching the site. That should help narrow things down a bit.

Oh so it’s a DNS issue then. Looks like it’s banned at the DNS level for Indian citizens. But windows user (if he doesn’t unknowingly have a custom DNS setup) is able to reach the site through his ISP’s DNS. Maybe different Indian ISPs enforce censorship at different levels?

I know this is something Turkish ISPs do extremely inconsistently as well. Plenty of VPN sites like NordVPN are banned by ISPs that have close ties to the state but others don’t seem to be bothered to enforce certain bans. At least I haven’t had any problems connecting to VPNs with the god-awful network provider I’m currently using, and yet my parents have. I could totally see this being the case for India as well.

Great, so we have two people using Jio, one of whom can view the site and another person who can’t. Could the ban be enforced geographically? That’s not unheard of but it feels like the explanations we’re reaching for here are starting to get more far-fetched every time.


At this point, I take a break from the intense investigative journalism to go back to doing what I was supposed to be doing for half an hour or so.

I come back and have the idea of looking at the traceroute for the URL to see what IP the docs URL is being resolved to when I’m on an Indian VPN. But to my surprise I see…

topgg docs load successfully

WHAT???

this is fine

Why is it working now? Maybe it’s just a VPN thing?

Why do these things always happen to me?

shuhua from g-idle probably contemplating whether or not it's worth it for her to put up with the random inexplicable bullshit she has to deal with on a daily basis because of her job

I hate web development

To be fair, it’s possible (and most likely the real reason in this specific case) that it works now because the DNS query got cached at the router and/or browser level when Sky switched his DNS server to 1.1.1.1 and got a successful response. But I’ve seen the same thing happen to at least 3 people where they inexplicably regain access to the site after a while, even when they haven’t switched their DNS server.

Possible explanation

What I think is going on here is that some Indian ISPs (most likely Jio in this case) are using some sort of heuristic to determine whether or not a DNS query to a site should be blocked, and then they are caching the result in their own DNS servers to speed up subsequent lookups.

This is completely normal practice for DNS servers, but unfortunately it feels like they might be committing the cardinal sin of caching. Where they leave out part of the context that changes the response per-user, and are instead using a single shared cache key for every user when doing any lookup. On the user side of things, this is equivalent to opening up Instagram and seeing the feed of a different person every 30 minutes.

Chances are, the DNS query was cached when the original person who tried to reach the docs page got an error. Any subsequent requests going to the same DNS server ended up returning the same cached error response for as long as the TTL lasted. Then when the cache got reset, it got replaced with the correct IP originating from the request of a non-blocked user. Which allowed the original blocked user to also be able to access the site.

As for the reason for the censor itself, I’m still not sure but my team and I are speculating that it’s caused by an old censorship of GitHub. Our docs page was being hosted on GitHub Pages and the ban is mostly likely the result of a lingering censorship of the GitHub Pages IPs. We’ve since moved to Netlify and it seems that solved the issue. Or at the very least I haven’t seen anyone bring this up since then.

Solution

If you’re being affected by this, the easiest solution is to change your DNS server your device or preferably your router uses to 1.1.1.1 or any other public DNS server that isn’t limited by Indian censorship. You do not need a VPN as it doesn’t seem like the DoT uses packet inspection and relies only on DNS lookups. If you’re using GitHub Pages to host your site, switch over to an alternative like Cloudflare Pages or Netlify to make sure you don’t run into the great mediocre firewall of India.