You are browsing a read-only backup copy of Wikitech. The live site can be found at wikitech.wikimedia.org

ProxyBrowsers

From Wikitech-static
Revision as of 13:30, 20 June 2016 by imported>Phedenskog (UC mini info)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search

Browser vs Proxy browser vs Remote browser

On mobile phones there are different kind of web browsers. Why? Browsers vendors tries to minimize the content sent from the server and the browser to make pages load faster for users with a slow connection and a slow phone.

Standard browser works as browsers on desktop: It asks the origin server for the HTML page, and then fetch the assets (CSS, JS and images) from the origin server and render the page on the mobile phone.

Proxy browsers tries to be smart and minimize the content sent to the browser but make sure it don't break the pages for the user. The browser do the request for the HTML to a proxy server (provided by the browser vendor). The proxy server then do all the requests to the origin server, and then before it sends the responses back to the browser, it tries to minimize the content by adding compression, compression images harder. But it will not change the content, only try to compress it harder.

Remote browsers tries even more to minimize the content sent between the browser and the server. The browser sends the request to the browser vendors proxy server, the proxy makes the requests to the origin server, the proxy server tweaks and generates the page on the server side and send a binary version to the remote browser (the rendering is happening on the server). At least the servers for Opera Mini executes Javascript but with a timeout for X seconds, so after X seconds, the HTML is sent to the browser (or rather the binary blob).

These definition of browsers is based on Tim Kadlecs blog post Understanding Proxy Browsers Architecture use it to get a deeper understanding.

Proxy/Remote Browsers

Lets go through the most used proxy/remote browsers.

Opera Mini

Opera Mini has a big user base in Africa and according to Opera they save a lot of money for the African users. You can configure mini to work as a proxy (Opera turbo) or as a remote browser (Opera Mini in the Data Savings options).

Documentation

Opera Mini has a good Web Content Authoring Guide that helps us understand how it works and what we need to do to make pages look good on Opera Mini.

User Agent

User Agents is documented by Opera at https://dev.opera.com/articles/opera-mini-content-authoring-guidelines/#ua-sniff

To know if it the browser is Opera mini you can search for the substring Opera Mini

It's a little but harder to separate between proxy and remote browser.

Here's what it looks like out in the wild (2016-06-20):

# Opera Mini Android (Opera Mini) a.k.a remote
Opera/9.80 (Android; Opera Mini/16.0.2168/37.8603; U; en)
Presto/2.12.423 Version/12.16

# Opera Mini iOS (Opera Turbo) a.k.a proxy
Mozilla/5.0 (iPhone; CPU iPhone OS 9_3_2 like Mac OS X)
AppleWebKit/601.1.46 (KHTML, like Gecko) OPiOS/14.0.0.104835
Mobile/13F69 Safari/9537.53

# Opera Mini iOS (Opera Mini) a.k.a remote
Opera/9.80 (iPhone; Opera Mini/14.0.0/37.8603; U; en)
Presto/2.12.423 Version/12.16

UC mini

UC is big in India, they claim to have over 50% of the traffic and they are popular in other countries too.

Documentation

I haven't found any documentation for UC browser in English. There's a developer section on the site but only information about the user agent.

User Agent

User Agents for UC and UC mini is documented in http://www.ucweb.com/download/UCBrowser_User_Agent_en.pdf

To know if UC mini is used you can search for the substring UCWEB and for UC UCBrowser

Here's what it looks like out in the wild (2016-06-20):

# UC iOS (proxy)
Mozilla/5.0 (iPhone; CPU iPhone OS 9_3_2 like Mac OS X;
en-US) AppleWebKit/537.51.1 (KHTML, like Gecko) Mobile/13F69
UCBrowser/10.7.2.795 Mobile

# UC mini Android (remote) 
UCWEB/2.0 (MIDP-2.0; U; Adr 4.4.2; en-US; HUAWEI_Y360-U61)
U2/1.0.0 UCBrowser/10.7.5.785 U2/1.0.0 Mobile

Puffin

Documentation
User Agent