DuckDuckGo – two non-JavaScript versions of search results
help.duckduckgo.com
help.duckduckgo.com
HTML homepage transfers 34KB (94KB uncompressed) over 6 requests. HTML search results page transfers 133KB (248KB uncompressed) over 31 requests.
Lite homepage transfers 13KB (11KB uncompressed, ha) over 4 requests. Lite search results page transfers 21KB (43KB uncompressed) over 5 requests.
In all cases, all requests are to *.duckduckgo.com, which was very good to see from a privacy perspective. Nice work, DDG!
[1] https://benhoyt.com/writings/the-small-web-is-beautiful/
1: (Edit) https://duckduckhack.com/
> DuckDuckGo gets its results from over four hundred sources. These include hundreds of vertical sources delivering niche Instant Answers, DuckDuckBot (our crawler) and crowd-sourced sites (like Wikipedia, stored in our answer indexes). We also of course have more traditional links in the search results, which we also source from multiple partners, though most commonly from Bing (and none from Google). — https://help.duckduckgo.com/duckduckgo-help-pages/results/so...
I find their instant answers fairly useful, enough to often not use the other results at all — unfortunately for them enough to use some of the sites some answers are sourced from directly, in particular often using my browsers’ built in Wikipedia searches.
DuckDuckBot I can’t judge, because I don’t know which results come from it (previous comments on HN seem to show the amount of difference between DDG and Bings results vary between search terms¹), but it seems that non-Bing links are a thing and DDG can adjust what fraction of the page they take as whatever gap there is between them and the bigger crawlers’ narrows or widens.
1: https://hn.algolia.com/?dateRange=all&page=0&prefix=true&que...
Don't take my word for it; you can compare DDG and Bing results for esoteric queries side-by-side. The order of the results may vary since search results aren't deterministic, but you'll find them to be otherwise identical. You can also ask staff in help channels about the details of where link results are sourced from.
Google 1) fails to work without JS for me much of the time and 2) throws up endless ReCAPTCHAs, so I generally don't bother (not just for GWS, but Scholar, Ngram viewer, and other actually-useful tools). My preferred response (https://toot.cat/@dredmorbius/104371588129861216) produces very faded joy over Tor.
2. > Because most people only view one or two articles on my site, I include my CSS inline. With HTTP/2, this doesn’t make much difference, but Lighthouse showed around 200ms with inline CSS, 300ms with external CSS.
With respect, this seems to be the frontend consensus and it... just doesn't make sense to me. Unless you expect the majority of your traffic to never hit a cache header on that external CSS. That 100ms perf hit (which is probably a warning sign that something's wrong with your assets or server config anyway) should be a one time affair, and not repeating that payload over and over surely makes up for it in the sub-200ms responses after.
"HTML" version shows no images, just text and favicons. The total size of visible text content shown on the page is about 4KB (just did a count of characters on the page for "steve jobs" query). DDG shows those 4KB using 248KB of data.
1. That is not _that_ small. It's only small compared to the rest of the web, but not in absolute numbers, or in comparison to useful content shown.
2. The content to data ratio comes at 1:62. Or for one character shown on screen you are transferring 62 bytes of stuff. For context, Wikipedia page for Steve Jobs, which also includes multiple images, is 1.08MB and content is 128KB for a content to data ratio of about 1:9. So DuckDuckGo could in theory do ~7x better than this.
Sorry, as an engineer, not impressed at all!
Comparing the search results page with a wikipedia page is hardly any sort of evidence.
On a side note, saying "as an engineer" doesn't mean anything on HN, especially if you don't even say what type of engineer you are.
Noticeably faster than the default JavaScript DDG.
As a bash (or zsh) function:
ddg ()
{
/usr/bin/w3m "https://duckduckgo.com/lite?q=$*&kd=-1"
}
Note that this enables any bang searches as well, though you'll need to single quote these to avoid attempted history expansion.lite is also my default w3m search bookmark entry.
So:
ddg '!w foo' # Wikipedia article on foo
ddg '!dict foo' # Dictionary search on foo
ddg '!etym foo' # Etymology Dictionary search on foo
Note that if the endpoint itself relies on JS for local search, the bang won't be successful (though DDG will do its bit). Reddit, and HN/Algolia, I'm looking at you.I happened to be running some quick lookups a few days ago while a friend was watching, and they 1) wondered how I was doing that and 2) if they could have a similar feature. Power of the shell.
https://duckduckgo.com/lite/?q=site%3Adeveloper.mozilla.org+%s
... and gave it the keyword >mdn (I add ">" as a prefix to all my keyworded bookmarks - avoid accidentally triggering or autocompleting to them).If I'm browsing and need to look something up, I just hit CTRL+L followed by
>mdn [whatever I'm looking for]
... and off we goThe downside is that you're speaking your own language, and unless someone adopts your specific keywords, you can't tell them to, say, "bang dict" (if you can get away with saying that in the context).
This is a fundamental distinction between any private vs. shared language.
(People are very uncomfortable when dropped into my computing environment --- GUI, shells, editors, browsers, etc. They've all acquired several decades of personalisation. Works for me.)
$ alias d='sr duckduckgo -text -ducky'
$ d '!man surfraw'
[www-browser opens http://manpages.org/surfraw]
[…]
DESCRIPTION
Surfraw provides a fast unix command line interface to a variety of popular WWW search engines and other artifacts of power. It reclaims google, altavista, dejanews, freshmeat, research index, slashdot and many others from the false-prophet, pox-infested heathen lands of html-forms, placing these wonders where they belong, deep in unix heartland, as god loving extensions to the shell.
[…]
Edit: even better, dict(1) (or GNU dico): $ dict foo # same text as !dict’s http://dict.org/bin/Dict?Form=Dict2&Database=*&Query=fooI also use dict, have Debian's gazeteer TIGER files & miscfiles installed, dwww, RFCs, and more.
Info-on-tap is wonderful.
edit: To answer my own question https://duckduckgo.com/params
Couldn't it be the exact same page, that still works when javascript is disabled?
I don't think a search engine should ever require JS to be usable. The existence of search engines[1] predates the existence of JS, and of course the HTML mechanism of form submission and displaying a list of links predates both of those.
If you want to see a fast web search engine try https://rightdao.com
I am not affiliated with them in any way. But their search results come back at 70ms (with network latency included) and that is darn impressive!
rightdao is 755ms, no real difference I’d say.
Edit: Oops, you mean search results.
DDG Lite Search: 193 ms.
DDG Lite Search results: 1.05 seconds.
Rightdao Search: 629 ms.
Rightdao Search results: 1.15 seconds.
I needed to add the HTML version as a new search engine option in the browser options to have it running as default, but hey, it works! Horizontal scrolling is now a thing of the past.
I have my second monitor in 1920×1080 portrait and sometimes that is an irritation at 1080px wide long before getting to the 640px your columns have. To pick one example, in Google search pages you lose over half the right-hand column without scrolling (though at least the main results are fully visible). A lot of layouts seem to assume having around 1280 pixels to play with (less a little for scroll bars).
I've found zooming out a little works fine usually, and modern browsers remember the setting, but that isn't perfect. If I unzoom on the main display it does so for tabs open on that site on the second too (to use the Google example again if I open maps or an image search on the main screen I probably want it at 100%) and some sites seem to actively resist being zoomed.
Turning on javascript returns sites from a USA POV. I'm in the USA.
But TIL about DDG's awesome help pages.
I browse with javascript disabled, except for sites/domains that I exempt like banks and stuff.
People should be able to get all the info they need via curl in the terminal.
HTML and CSS are too easy to exploit for tracking users.
I can't find this page on JS DDG, but it's the first result on HTML DDG.
Query: carving a violin bridge
Desired URL: https://trianglestrings.com/carving-a-violin-bridge/
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
and lite.duckduckgo.com is using <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
Is this on purpose? To make the website work on older browsers?https://gist.github.com/CivBase/818f7f4f56050c9769c4b783c08c...
EDIT: I replaced the raw code with a link to a GitHub gist to reduce the obnoxious size of my post.
html{
background-color: black !important;
filter: invert(90%) hue-rotate(180deg) !important;
}Anyone an idea how I can configure this search engine in Firefox Mobile?
As far as I can see, there is no way I can teach FF Mobile to make a POST request instead.
Normal DuckDuckGo loads just as fast for me as the html variant and it doesn't provide location (I had to change it manually), it doesnt have image search, maps, news etc.
I don't understand why anyone would use these version over the normal DDG experience. It's not like the normal DDG is ridicolous amounts of javascript anyway and the normal DDG experience is pretty much just as fast. I cannot really notice any difference anyway.
And why does it have to be 'heavy'? Surely adding a few small embellishments with JS is okay, but the JS needn't be heavy at all.
The words I'd pick are 'careless' or 'sloppy' or 'laughable' use of javascript. The speed of carefully-crafted JS in today's browsers is amazing. If the mule collapses hauling that 20-ton-wagon of borax, there's the culprit.
Since a couple months ago DDG decided to block TOR Browser users, so I would guess that most people that were concerned about their privacy already moved on to the competition.
Though it's nice to see better support for 2G slow networks, even when it's not for the sake of privacy as they claim.
There's also an onion site you can access directly: https://3g2upl4pq6kufc4m.onion/
Do you have a source for that claim? A quick search returned nothing.
Edit: I downloaded the (latest version of Tor Browser)-1 (10.0.12) and DDG is on the start page as the default search. No problems searching for things either.
"We've detected that you have connected over Tor. There appears to be an issue with the Tor Exit Node you are currently using. Please recreate your Tor circuit or restart your Tor browser in order to fix this. If this error persists, please let us know: error-lite-tor@duckduckgo.com"
And no, rotating the exit node or changing the identity won't help either.
How does this equate to DDG saying that they're blocking Tor users?
I've used the clearnet DDG site for months over Tor and the only problem I've experienced is that sometimes DDG decides that my exit node isn't acceptable for some reason. This is very rare though (happens about once per month) and the error message makes it very clear that I should just use another exit node (unlike many other sites where I get cryptic error messages or a Google captcha).
Plus as others mentioned, there's an onion service which works as well.
[When did Firefox remove the option to just type in a URL for this?]
In general, are there tutorials or guidelines on how to strip away unnecessary JS components? As in how do I query which component is unused from the source code of a website? I suspect I will have to play with Console of a browser etc.
What’s the point otherwise?
So at the end of the day I think just having a js-required flag for each document is sufficient and set that flag if the "main content" (as determined by heuristics) is unavailable before running JS. I think that would be good enough to satisfy most users with JS disabled without too much expense.
The JS version is maybe a tiny bit slower, but honestly is about the same.
As a rule, when JS is not mandatory I block it.