I have a colleague with two teenage boys (yes, cue cliche's about 'I have this friend see...') He's currently having issues with them browsing pr0n and wants to do a little spying on their browsing (I'm staying clear of the philosophies/ethics on this.) The kids are savvy enough to clear their browsing history when they're done. As I'm his goto for IT he has asked me if there is a way to keep a hold of the browsing history.

The family uses Macs, and the kids surf with Safari. I know that browsing history is kept here ~/Library/Safari/History.plist. I figure there should be a way to write either an AppleScript or other script (Python/Ruby/Bash) that can backup this file to a different location (/opt/local/history, etc.)

Since the kids know to clear their history when they're done should the file be periodically backed up with something similar to a cron job or something like Hazel? While that could work it seems like it would create a ton of little incremental backups.

Or is it possible to 'watch' ~/Library/Safari/History.plist and incrementally add changes to a backup file (saving a diff so to speak) but not lose any data?

Any ideas/solutions appreciated.

UPDATE/EDIT: Got the word from concerned dad that the oldest uses Firefox on a different PC, so the OpenDNS solution (preferably at the router level) is the best answer so far as it would capture usage for the whole house.

  • As this is probably Flash-related: after surprising yourself at macromedia.com/support/documentation/en/flashplayer/help/…, see the introduction of "How to automatically remove Flash history/privacy trail? Or stop Flash from storing it?" at superuser.com/questions/1627/… – Arjan Oct 10 '09 at 15:30
  • How is this flash related? – Darren Newton Oct 10 '09 at 17:18
  • Most video sites use Flash, as far as I know. – Arjan Oct 10 '09 at 17:24
  • Yes, but pr0n is not limited to video. – Darren Newton Oct 10 '09 at 17:28
  • 7
    Whatever solution you pick, if those kids get annoyed by their parents keeping such a strict eye upon them, then they will start browsing somewhere else. A friends place, a library, whatever. If kids don't want you to know something, they'll be very creative in hiding it! Educate them, talk with them, trust them! (And use OpenDNS, as suggested.) – Wim ten Brink Oct 11 '09 at 21:51

Easiest solution would be to open an account on OpenDNS and log the history through that. They won't be able to delete it.

If he finds it is a big problem, sites can also be blocked on OpenDNS.

  • Excellent solution, and one I hadn't thought about. Will also capture any shenanigans with browsers other than Safari. – Darren Newton Oct 10 '09 at 17:21
  • 4
    Note, though, that if the boys wise up to OpenDNS they can still bypass it by changing the local DNS settings. – hyperslug Oct 10 '09 at 22:43
  • Good point hyperslug - guessing that if he does it at the router level and used a little information theory in his chats with the kids might at least keep them off the trail for a bit. But ya know, it won't take them long to discover a proxy or some other circumvention if motivated. – Darren Newton Oct 11 '09 at 20:15
  • One more thing to note is that if his ISP keeps giving him different IP's he'll have to use some kind of dynamic DNS service. OpenDNS is supports these. – hyperslug Oct 12 '09 at 0:10
  • @hyperslug, Could always use the HOSTS file in /etc to route anything going to the gateway/router address to the OpenDNS specified... – Lizz Jan 25 '13 at 6:51

This sounds like a good suggestion to prevent bypassing DNS:

Here's the setting of my router:

  • IP:
  • DNS:
  • IP Filter: Blocks port 53 UDP
  • A very strong password for its admin page

Here's what nslookup is like. First I try use the router's IP as the DNS:

 > server
Default server: Address: > google.com. Server: Address:

Non-authoritative answer: Name:
google.com Address:
Name: google.com Address: Name: google.com Address: 

Now I try use something other than my router's IP... like OpenDNS's IP!

 > server
Default server:
Address: >
google.com. ;; connection timed out;
no servers could be reached 

So now I can't use anything else but the router's IP as my DNS server... and the router has been locked to only use OpenDNS.

He's making his router the only device permitted to make DNS requests. All other network devices must use the router's DNS settings. The theory sounds good; I'll have to test it myself. Remaining workarounds:

  1. disconnect router and use internet directly from Cable/DSL modem
  2. accessing websites via IP address

You can address #1 by placing the DSL modem in a closet and locking it. This may require some rewiring and attic work. You can address #2 with a full content filtering router/proxy solution, which could be pricey or complex to set up.

And finally, these are only deterrents. If they can find a hotspot or a friends house then this is moot. The root of the problem - carnality, I suppose - will need to be addressed.

  • Pretty nice solution for locking down the router. I think all he needs is a deterrent and some evidence to initiate 'the conversation' - but this is a nifty trick none the less. Got my upvote. – Darren Newton Oct 11 '09 at 21:19
  • 3
    I just confirmed it worked for me using DD-WRT: Set up a rule to disable all UDP 53 traffic. Make sure it applies to all LAN users, wireless and wired. Put an OpenDNS server as a Local DNS (otherwise it just grabbed the default ISP DNS). Manually assign your router as the DNS server on each PC. I had to modify and test several times b/c networking is too tricky for me. Use ipconfig /flushdns, reset your router between changes, and close and reload the browser just to be sure. – hyperslug Oct 11 '09 at 23:15

if you go with dns solution have a look at ScrubIT (http://www.scrubit.com/), it's a free dns service which mantains a blacklist of websites which are not safe for family browsing.


If you really can't trust your kids, I would suggest OpenDNS. But before doing that, try to gain their trust and just make them stop going to bad sites without OpenDNS. Try using Windows live parental controls or Mac parental controls to check their history and bad sites. If they still go to those, then use OpenDNS.


Go in to browser properties and set up a password for clearing the browser history.

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.