Note: Before I start, I just want to clarify that what follows isn't a hack or exploit of the Switch in any meaningful way. This works precisely because Switch is behaving exactly as it should, allowing users to connect to wifi networks which use a "captive portal" for logins. I've simply created my own captive portal on my home network, and then set that up to allow me to access the wider internet.
Switch's browser? I thought Switch didn't have a browser!
Well, it does and it doesn't. Switch doesn't have a regular web browser you can access from the home menu. What it does have, however, is an embedded browser used to support captive portals. A captive portal is one of those web pages that pops up when you log onto a wifi network in Starbucks, or a hotel or airport or in many other public places. When you try to log onto any of these networks on Switch, you'll get a message saying "Registration is required to access this network" and up will pop the captive portal page that the wifi provider has set up, in a browser window. Of course this browser window doesn't have an address bar you can type a URL into, so you're pretty much stuck within that captive portal page, but if you are the one who set the captive portal up, then you can use it to provide links to the wider internet, or provide an address bar of your own.
Setting up a captive portal
In order to get a captive portal up and running, I set up a Raspberry Pi to run as a webserver/proxy server, and then I entered the IP address of the Pi into Switch's network settings as a proxy, so that all internet traffic would be routed through it. This acts as a pretty standard proxy server, re-routing all of Switch's network access out to the wider world, except for one particular domain, conntest.nintendowifi.net, which I set up with specific rules.
Switch uses conntest.nintendowifi.net as a test page to see if it can connect to the internet. If it can access the page properly, it gives the "connection successful" dialog, and if it's unable to access it, it will tell you it's failed to connect to the internet. The third possibility, which is most useful to us, is that it gets back a different page than it expected. In that case, Switch will assume that this page is a captive portal, so it will bring up the aforementioned browser window and allow the user to access it.
So, in order to get the Switch to bring up a browser window that will access the internet at large, all I have to do is redirect conntest.nintendowifi.net to some local webpage that I have control over. In my case I set up a very simple page with a few lines of HTML and PHP that gives me a URL bar and a "Go" button, to allow me to type in the address of a website and be sent to it.
What can Switch's browser do?
Well, naturally the first thing I tested was accessing Neogaf*:
And yes, you can post to Neogaf on it too.
You can also just pop on over to Google.com and search the net:
You can log onto Google and access services like Gmail (and no, I'm not showing a photo of my Gmail account). You can use Google Maps:
Which works quite well, by the way, with pinch to zoom support and all the normal features being available (as far as I could tell).
Oh, and you can access YouTube:
YouTube videos will only run in full-screen mode, but you do get both touch controls and button/stick controls to pause/play and scrub through the video. I suspect most other video sites will work in a similar way.
It's also able to access Facebook, but once again you're not getting a photo of that.
Finally, you can just access general HTML websites of pretty much any kind:
What can't Switch's browser do?
* (Quick note: I'm not intentionally blocking ads on Neogaf here, it just seems to be an issue with the proxy server. I'm well aware of how important ad revenue is to keep sites like Neogaf running, so I don't use ad blockers of any kind).
Switch's browser? I thought Switch didn't have a browser!
Well, it does and it doesn't. Switch doesn't have a regular web browser you can access from the home menu. What it does have, however, is an embedded browser used to support captive portals. A captive portal is one of those web pages that pops up when you log onto a wifi network in Starbucks, or a hotel or airport or in many other public places. When you try to log onto any of these networks on Switch, you'll get a message saying "Registration is required to access this network" and up will pop the captive portal page that the wifi provider has set up, in a browser window. Of course this browser window doesn't have an address bar you can type a URL into, so you're pretty much stuck within that captive portal page, but if you are the one who set the captive portal up, then you can use it to provide links to the wider internet, or provide an address bar of your own.
Setting up a captive portal
In order to get a captive portal up and running, I set up a Raspberry Pi to run as a webserver/proxy server, and then I entered the IP address of the Pi into Switch's network settings as a proxy, so that all internet traffic would be routed through it. This acts as a pretty standard proxy server, re-routing all of Switch's network access out to the wider world, except for one particular domain, conntest.nintendowifi.net, which I set up with specific rules.
Switch uses conntest.nintendowifi.net as a test page to see if it can connect to the internet. If it can access the page properly, it gives the "connection successful" dialog, and if it's unable to access it, it will tell you it's failed to connect to the internet. The third possibility, which is most useful to us, is that it gets back a different page than it expected. In that case, Switch will assume that this page is a captive portal, so it will bring up the aforementioned browser window and allow the user to access it.
So, in order to get the Switch to bring up a browser window that will access the internet at large, all I have to do is redirect conntest.nintendowifi.net to some local webpage that I have control over. In my case I set up a very simple page with a few lines of HTML and PHP that gives me a URL bar and a "Go" button, to allow me to type in the address of a website and be sent to it.
What can Switch's browser do?
Well, naturally the first thing I tested was accessing Neogaf*:
And yes, you can post to Neogaf on it too.
You can also just pop on over to Google.com and search the net:
You can log onto Google and access services like Gmail (and no, I'm not showing a photo of my Gmail account). You can use Google Maps:
Which works quite well, by the way, with pinch to zoom support and all the normal features being available (as far as I could tell).
Oh, and you can access YouTube:
YouTube videos will only run in full-screen mode, but you do get both touch controls and button/stick controls to pause/play and scrub through the video. I suspect most other video sites will work in a similar way.
It's also able to access Facebook, but once again you're not getting a photo of that.
Finally, you can just access general HTML websites of pretty much any kind:
What can't Switch's browser do?
- Netflix - You can log onto Netflix and browse through the catalog, but when you try to play a video it redirects to a page telling you your browser isn't supported. I've tried spoofing the HTTP user-agent header using the proxy server (to pretend to Netflix that it's a different browser), but I haven't had any success thus far.
- Flash - Anything that still uses Adobe Flash is a no-go, but that's a diminishing selection of sites these days.
- Tabbed browsing, bookmarks, etc. - Unsurprisingly, the browser doesn't offer many of the features that a modern desktop browser would be expected to have, given that it's not intended to be used as such. This means no history, no saved log-ins to websites (although you will remain logged into a website for as long as the browser is open), no downloads or bookmarks or tabs or anything like that.
* (Quick note: I'm not intentionally blocking ads on Neogaf here, it just seems to be an issue with the proxy server. I'm well aware of how important ad revenue is to keep sites like Neogaf running, so I don't use ad blockers of any kind).