2

Opera offers shorthands to use with web searches. Recently I discovered startpage.com and would like to make use of it with the shorthands I am used to, replacing Google.

From looking at the queries I end up with in GET, I can see that this is somewhat a "basic" form of what I am looking for:

https://startpage.com/do/search?lui=english&language=english&cat=web&query=%s

However, the Settings for startpage.com allow to refine the output a bit and I'd like to make use of that.

It spits out a URL suitable as your start page, but not necessarily for the quick-search field or the shorthands in Opera. The URL looks something like this:

https://startpage.com/do/mypage.pl?prfh=lang_homepageEEEs/white/eng/N1Nfont_sizeEEEmedium...

How can I combine my own settings and the query=%s mentioned above into a URL suitable for quick-searches or parameters for a POST request?

2

Okay, I finally found a way to achieve exactly what I wanted. Especially the setting about how many results get shown seems to be only available via the parameter generated on the "Settings" page.

Here is a step by step guide and at the bottom I will provide the conclusion as to how you can assemble your own search URL based on the "Settings" page. If you read carefully, especially the conclusion, you'll find this doesn't only apply to Opera.

Preparations

Go to the website of startpage.com and choose the "Settings" (highlighted in the following screenshot).

Configure your search

Now configure the search using the provided form.

At the bottom of the form you'll find a button "Generate URL". After you press it, you'll see something similar to the following (minus the highlighting):

The text next to "Obfuscated URL" says:

Obfuscated URL An obfuscated URL protects your privacy by hiding your Settings choices.

Now that is obviously true at a first glance. Your settings are hidden from plain sight, but that's a very very thin veneer. In fact if you use the given URL and then "Create Search" from the provided search field or go to the "Settings" page again from there, neither will divulge details about your preferences to whoever uses the URL. Well, except obviously the company behind startpage.com which knows it either way.

Still, it's hard to tell whether the obfuscated form contains some identifier that would be generated based on your IP and other identifying data. It's possible it doesn't, but it would take experimentation to prove this theory wrong or right.

I prefer the plain text URL, but your mileage may vary.

Preparation to creating a search

Use the URL from that page and visit it. Here's the obfuscated URL from my example, just so you can follow the steps:

NB: The customized searches all start with https://startpage.com/do/mypage.pl, but that doesn't allow you to initiate the search, which is what we're after.

Use the step described in the support section of startpage.com and elsewhere to create a search from the search field.

At this point a dialog in your browser (I know a similar feature exists in Firefox) should prompt you to give more details (e.g. naming the shorthand/quick-search and so on).

Customizing the quick-search

Here you can give a shorthand ("Keyword") and customize the query string further. And this is where we get to see how the settings from the "Settings" page can be reused.

Conclusion

Assume we have the following generated URL:

  • https://startpage.com/do/mypage.pl?prfh=lang_homepageEEEs/air/eng/N1Nfont_sizeEEEmediumN1Nrecent_results_filterEEE2N1Nlanguage_uiEEEenglishN1Ndisable_open_in_new_windowEEE1N1NsslEEE1N1Ndisable_family_filterEEE1N1Nnum_of_resultsEEE100N1Ngeo_mapEEE1N1N

the resulting settings for the quick-search would then be:

  • Address: https://startpage.com/do/search
  • Query string: cat=web&cmd=process_search&language=english&engine0=v1all&query=%s&abp=-1&prfh=lang_homepageEEEs%2Fair%2Feng%2FN1Nfont_sizeEEEmediumN1Nrecent_results_filterEEE2N1Nlanguage_uiEEEenglishN1Ndisable_open_in_new_windowEEE1N1NsslEEE1N1Ndisable_family_filterEEE1N1Nnum_of_resultsEEE100N1Ngeo_mapEEE1N1N&suggestOn=0&x=0&y=0

where the query string has the following obvious parameters:

  • cat which seems to refer to the type (or category?) of search, i.e. web (cat=web), image (cat=pics) or video (cat=video) at the moment of this writing
  • cmd is vital here, it's the functional equivalent of pressing the search button (cmd=process_search)
  • language is the search language, another parameter lui controls the language of the user interface
  • engine0 (engine0=v1all) is something proprietary and I have no idea what possible and valid values exist there, but the same parameter also exists in Ixquick (another search engine by the same company)
  • query is the search query whereas a blank space is encoded as %20 or + depending on the context. The %s in query=%s is in Opera the placeholder for the search query
    • It is possible to add things like search operators, e.g. query=%s+site:linux.die.net would limit the search to the site linux.die.net which hosts a bunch of Linux man pages
  • Unknown parameters:
    • abp=-1
    • suggestOn=0
    • x=0
    • y=0

Last but not least the most important part:

  • prfh (prf == profile?) which is the exact value as in the generated URL, e.g. here prfh=lang_homepageEEEs%2Fair%2Feng%2FN1Nfont_sizeEEEmediumN1Nrecent_results_filterEEE2N1Nlanguage_uiEEEenglishN1Ndisable_open_in_new_windowEEE1N1NsslEEE1N1Ndisable_family_filterEEE1N1Nnum_of_resultsEEE100N1Ngeo_mapEEE1N1N

This means one can assemble a URL from:

  • Script: https://startpage.com/do/search
  • Separator for parameters: ?
  • Basic parameters: cat=web&cmd=process_search&lui=english&language=english (for English search and UI
  • Separator between parameters: &
  • Search: query=%s where %s is a placeholder for the search term(s)
  • Separator between parameters: &
  • And the settings from the "Settings" page: prfh=...

In the prfh value EEE seems to signify a = and N1N the separator between the parameters (similar to & in the URI). However, you cannot extract these values and use them "outside" the prfh value. A translated value would thus look like (I chose | as the separator):

  • prfh=lang_homepage=s/air/eng/|font_size=medium|recent_results_filter=2|language_ui=english|disable_open_in_new_window=1|ssl=1|disable_family_filter=1|num_of_results=100|geo_map=1|

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.