How do websites know they're not the default home page or search provider?

JavascriptBrowserSearch EngineWebpage

Javascript Problem Overview


As far as I'm aware, there is no public API exposure of a browser's default homepage/search provider. So how does Google know to display this? It only comes around when Google's not the default homepage / default search provider on my browser.

Google on-page popup: 'Get to Google faster. Switch your default search engine to Google.' Googe on-page popup: 'Come here often? Make Google your homepage.'

I can only assume they're inferring from numerous variables, such as the referrer. I wasn't able to successfully dig down into Google's compiled JavaScript. I'm not even sure if it's detected client-side or server-side.

I'm on Firefox 44, but I've seen these banners on Chrome, too.

Javascript Solutions


Solution 1 - Javascript

Simply there is no way to do that with JavaScript because the "default search/homepage" is a user's preference and you do not have access to that without user's permission because that would be a security/privacy issue.

What Google does at every user visit is show a promo ad with a close icon and a go button with instructions on how to set it as the default homepage. On click of any one of them, it creates 2 cookies so that next time it will check your cookies and make the promos disappear. Even when Google is your homepage and you clear your cookies then a banner is still there to promote Google as your homepage.

I have checked this with Firefox, not aware of Chrome.

Solution 2 - Javascript

I don't know what Google does, exactly, but what I would do:

  • set the homepage URL with some special parameter and check it - 'http://www.example.com/#!homepage (prevents false negatives)
  • check for Referer field:
    • if it's NOT there, assume user has typed it in manually
    • if it's very similar for each user visit (and perhaps at what looks like the beginning of a browsing session - inferred via GA on eeevery page out there), assume user is coming here by always clicking through from somewhere
  • set a cookie, e.g. visitedHelpAboutHomePage when the user visits the "yes, show me" page (might prevent false negatives, but might also generate false positives)

Note that the "special parameter" does happen in the "searchbox-initiated search" scenario: there is a parameter sourceid which likely means "source of search."

Solution 3 - Javascript

In my Firefox (v42), the "Come here often?" box appears even when I have Google set as the default search provider.

In Safari I get a box in the same location that says "A better way to browse the web: Get Google Chrome"

In Opera and Chrome I get no box at all, even if I change my default search provider to something other than Google.

So, I believe all they're doing is browser detection in the JavaScript, using the UserAgent object.

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionTennyson HView Question on Stackoverflow
Solution 1 - JavascriptShailendra SharmaView Answer on Stackoverflow
Solution 2 - JavascriptPiskvor left the buildingView Answer on Stackoverflow
Solution 3 - JavascriptcutmancomethView Answer on Stackoverflow