WezM.net Menu

Add a Custom Search Engine to Safari

Published on Sun, 25 September 2011

In my ongoing efforts to distance myself from Google I started using DuckDuckGo as my default search engine. I tried the DDG Safari extension but didn’t really like it, especially since it needed to add an entire new toolbar to the browser. Other suggestions for adding DDG to Safari involved hacking the binary or other extensions, which I wasn’t interested in.

Update: There an easier way to achive what I describe below: Just add a hosts file entry for search.yahoo.com that points at DuckDuckGo’s IP address and set you search engine to Yahoo! in Safari. See DuckDuckGo for the full instructions.

My solution to the problem was to hijack the Bing option in the default search box for use with DDG. Note: This solution assumes you will never want to go to the www.bing.com domain, not a problem for me. The steps to implement it are:

Add an entry for www.bing.com to /etc/hosts that points the domain to your local machine:    www.bing.com

Next configure an Apache virtual machine to respond to the www.bing.com domain and redirect the request to Duck Duck Go (or your search engine of choice). This works because DDG accepts the search query in the same query string parameter, q, as Bing and ignores the other Bing related params.


<VirtualHost *:80>
    ServerName www.bing.com
    RewriteEngine On
    RewriteRule ^/search(.*)$ http://duckduckgo.com/$1 [redirect,last]

For this to work you will need to have “Web Sharing” enabled in the Sharing preferences pane and have the the following line included in /etc/apache2/httpd.conf:

Include /private/etc/apache2/extra/httpd-vhosts.conf

Restart Apache (sudo apachectl graceful) and set your search engine to Bing in Safari. Do a search and you should end up at the DDG results. One of the neat features of DDG is its !bang syntax, which allows you to search to 100s of sites directly. One of which is !g for those times when you need to fall back on Google.

Comment icon Something to Add?

Contact me by email or Twitter if you have a comment, correction or just want to get in touch.