[Update Nov 15 2011] : Chrome Nanny is now Nanny for Google Chrome. It also has a new home. The link to Google Chrome extension gallery ishttps://chrome.google.com/webstore/detail/cljcgchbnolheggdgaeclffeagnnmhno . Please spread the word !
I have written a Chrome extension which kinda does some very basic stuff that Leech Block does for Firefox. I also have added some more features (like tags, charts) to Chrome Nanny that makes it more usable IMHO. If you are interested in checking it out, check the Chrome Nanny’s entry in Google Chrome extension gallery.
When I published the extension , the site asked for a web page with instructions for the extension . Even though , I had included instructions in options page of the extension, it makes sense to have the instructions in a website too . Hence this post !
1. The features that are planned to implemented are listed at the page Chrome Nanny Road Map .
2. This post will be updated as and when new versions of Chrome Nanny are released.
I have put the most commonly asked questions in the FAQ. Please take a look at the FAQ and the comments to see if your issue is addressed. If not please feel free to comment on the post or Chrome Nanny’s extension page.
I have added some FAQs based on the comments in the blog post. I will keep them updated as the comments evolve.
1. How do I block a URL (eg : http://www.facebook.com) for a specific period of time ?
Lets say you want to block facebook between 9AM-5PM. Go to Chrome Nanny’s Options page and select Blocked List tab. Enter facebook.com in the URL. Convert time to be blocked to hhmm format in military time. It becomes 0900-1700. If there are multiple times, then append them with commas. Eg 0900-1200,1300-1700. Select the days on which facebook has to be blocked. Click “Save URL”.
2. How do I limit accessing facebook to 1 hour a day ?
Suppose you want to access facebook all day but want to limit it to 1 hour at the most in a day. Go to Chrome Nanny’s Options page and select Blocked List tab. Enter facebook.com in the URL. Enter 0000-0000 in the Blocked Time. Enter 60 in the “Max Time In a Day”. Click “Save URL”.
3. How do I block a url for specific interval but also want to limit the time spent on it in a day ?
This is achieved by a combination of 1 and 2. Lets say you want to block facebook between 9AM-5PM. In the remaining time you want to limit your browsing to 1 hour. To do that, enter facebook.com in the blocked URL , block time as 0900-1700, max time in a day as 60.
4. How do I block all .org sites except wikipedia ?
This can be done using regexp. In the block url , enter .*.org as the url. Enter the appropriate block times and save the blockset. Now go to “White List” tab and enter “wikipedia.org” as white listed url. Chrome Nanny will block all .org sites except wikipedia.
5. Is http, https, www needed ?
No. They are really not needed and Chrome Nanny internally strips them when doing the matching. So facebook.com will block facebook and there is no need to enter the full URL as http://www.facebook.com .
6. Chrome Nanny Crashed my Chrome
Open Chrome Nanny’s options page. In the “General Options” tab, check the value of “Mode of Blocking”. If it is remove (default) then Chrome Nanny will close the tab if you try to access a blocked URL or if your daily quota is up. If there is a single tab in the window, it might look Chrome has crashed. It has not.
7. Chrome Nanny closed my tab
Chrome Nanny’s default mode of blocking is to remove the offending tab. If you want to redirect to some motivational web page, you can certainly do so. Open Chrome Nanny’s options page. In the “General Options” tab, select “Redirect” as the value for “Mode of Blocking”. Enter the redirect url. Note that you cannot redirect to a URL that is blocked.
8. Chrome Nanny did not block my page
There are multiple possible reasons for this scenario.
Case 1: Check if the settings are correct. Is Chrome Nanny disabled ? Are you in Incognito mode ? Obvious, but it does not hurt to say again. Should this URL should be blocked now ? You can click on Chrome Nanny’s popup icon to get more details on which URLs are blocked now.
Case 2 : Is the blocked URL a substring of the tab’s current URL ? For eg having facebook.com will block http://www.facebook.com/home.php , http://www.facebook.com/settings.php and so on. For some websites, the URL with which we access may not be the final URL. Eg reader.google.com may not work. Enter blocked url as google.com/reader. Enter mail.google.com instead of gmail.com and login.live.com instead of hotmail.com and so on.
Case 3 : Check if blocked list and white list URLs clash.
White listed URLs take precedence and if a URL matches white list and block list then it is allowed. A sample scenario is to block Google reader but allow all other google pages. To do this entering google.com/reader in blocked list is enough. If you add google.com in white list , then Google Reader is also allowed as it matches the white listed URL “google.com” .
Case 4 : Check if any of your blocked or white listed URLs using regular expressions (eg using “*” in the URL). If so, validate it in “Validate Regular Expressions” tab. Note that an error in any of the regexp URLs can cause Chrome Nanny to not block other URLs.
Case 5 : Click on Chrome Nanny’s popup icon (the one that looks like a clock). Check if the URL is blocked now. If it is , then Chrome Nanny will block the URL sooner or later. Chrome Nanny uses callback functions of Chrome’s events to perform the blocking. If they are not called , Chrome Nanny might not block the tab immediately .
Don’t worry : Chrome Nanny has other checks too ! It checks all the tabs every minute and blocks tabs if necessary. Also if you switch to another tab or refresh the tab , the tab is checked again. So if Chrome Nanny does not block it immediately then give it some time. If the tab is not blocked even after one minute (Although, Chrome Nanny’s popup says otherwise) then please check the troubleshooting section to see how to contact the developer about the error.
9. Chrome Nanny blocked my page before the deadline is up !
Chrome Nanny has a feature which allows you to specify total time you can spend on all blocked URLs in a day. Suppose you set it to 60 minutes. Then if the total time you have spent on all blocked URLs exceed 60 minutes, then all blocked URLs will be blocked immediately, even though individual URLs may have some more time left. ie This feature overrides the individual URL settings. To disable this feature , set Maximum Allowed minutes in a day for Blocked URLs to 0 in General Options tab.
10. Can I block a subdomain or a specific url ?
Sure. For eg, if you want to block Google Reader alone (but not other google pages) enter google.com/reader in the blocked list. This will allow all Google pages but will block Google Reader.
11. Can I block certain patterns of URLs ?
A sample scenario is this : I want to block all Google searches for games but other queries are ok. Yes, you can do it by having a blocked URL as “google.com/search.*games” .
12. Some examples for regular expressions
Please note that you need to use “.*” whenever you want to use “*” in the regular expression. (Eg .*.wordpress.com instead of *.wordpress.com )
Matches google.com , google.co.in, google.com/reader , picasaweb.google.com
Does not match any URL that does not have the word google in it.
Note : Chrome Nanny internally strips http,https and www. So this regexp is equivalent to google.*/reader
Does not match google.com, google.co.in, picasaweb.google.com, reader.google.com
Does not match anything. Worse yet, it can prevent validtion of other blocked URLs. If you verify this URL , you get an error “Invalid regular expression: /*.wordpress.com/: Nothing to repeat”. This is because , the “*” operation needs some character to repeat and when you dont give any, it errors out.
Correct way to block all wordpress.com blogs. Here the “.*” matches any characters that come before the domain and hence it will block all of them. If you want to allow say, “saravananthirumuruganathan.wordpress.com” but block other wordpress blogs, then create a “.*wordpress.com” blocked URL and make “saravananthirumuruganathan.wordpress.com” as a whitelisted URL.
This will match any URL that contains the word test. For eg test.com, blahtest.com, foo.com/test , bar.com/g.php?val=test etc.
13. I do not want the Challenge that occurs when I try to edit/delete a blockset when it is blocked !
The 64 character (default) challenge that Chrome Nanny raises when you try to edit/delete a blockset when it is currently blocked is one of the few hurdles in your way before you start whiling away your time ! I do understand there are many “legal” scenarios like experimenting with Chrome Nanny when challenge is an annoyance. So use the following feature only when needed. Go to General Options and then Length Of Challenge Text . Reduce the length 0. To prevent abuse, Chrome Nanny will ask for challenge once. If the length is changed to 0, then further changes do result in a challenge. Once you are done with the playing around, please do increase the challenge text length.
14. I do not want the blocked URLs to be displayed in the popup !
By default, Chrome Nanny will show the URLs currently blocked, how much time left in other blocked URLs and other details. If you do not want it to be displayed in the icon popup, go to Options , click ‘General Options’ tab, and select ‘No’ for the field ‘Show blocked URLs in popup ?’ . After this, when you click on the Chrome Nanny icon, it will display a bland message instead of the blocked URL details.
15. I think I have found a new bug ! Or How do I troubleshoot Chrome Nanny ?
I have tested Chrome Nanny extensively but bugs do creep up. Please check if you can reproduce the error consistently. If so, please point out the bug and the steps to reproduce in any of the following ways : comment at Chrome Nanny’s extension page OR comment in Chrome Nanny’s instructions blog post OR email the developer at saravanan DOT thirumuruganathan AT gmail DOT com .
It would be great if you can email the settings of Chrome Nanny also. Easiest way is to email the file chrome-extension_gpdgmmdbbbchchonpfanphofpplhmcmn_0.localstorage at ~/.config/google-chrome/Default/Local Storage (If using Linux and Chrome) or ~/.config/google-chrome/Default/Local Storage (using Linux and Chromium) or at C:\Users\\AppData\Local\Google\Chrome\User Data\Default\Local Storage (In Windows) .
Optionally you can also give me the logs when the bug occurs. To get Chrome Nanny’s logs , click on the Wrench icon – Select Extensions. Go to Chrome Nanny and click on “background.html” . This will open Chrome’s developer tools. Now try reproducing the bug and copy the log it generates. This will be very helpful for additional debugging.
16. I have a patch for feature X . How do I send it to you ?
It is wonderful that you took time to write a patch. Please send an email to saravananDOTthirumuruganathanATgmailDOTcom with the patch details and the file. I will test it and apply it to the extension. The latest code of Chrome Nanny will can be downloaded from the repository here . If you need additional help on the code please take a look at my post “How to Read the Source Code of Chrome and Firefox Extensions” .
First of all, Thanks for using Chrome Nanny !
Chrome Nanny is a Chrome extension which can keep your browsing habits in check. Do you spend more time on facebook than on work ? Do you spend time more time in Google Reader or Digg and later wish you had not spent as much time ? Do you want to know how much you spent on Flick ? If so , Chrome Nanny is for you. Using Chrome Nanny, you can limit yourself from going to some sites on pre determined times or limit the time you spend on some sites. If you do not want to block a site, but want to know how much time you spend there, Chrome Nanny can do that for you too ! If you have used Leech Block for Firefox , you can recognize that Chrome Nanny does something similar but with a twist.
Note : If you are in Google Chrome version 5 or more , then enable this extension to run in Incognito mode too! Chrome Nanny will not like it if you visit blocked sites in Incognito mode. Will she ?
Mode Of Blocking decides what to do if you are visiting a website during blocked hours or after exhausting all the time you allocated yourself for the site. The default option is to remove the tab which may not be ideal for you. If you want the tab to be redirected to some motivational sites then you can select the redirect option and give a redirect url. You can specify a web page or a local html page (using file:// prefix) . Note that if you have only one tab, mode of block is”remove” and the url is blocked now, the entire window will be closed.
Stop Timer after Chrome is inactive for x minutes – Chrome does not notify when you minimize a Window/Tab. Chrome Nanny does not want you to lose the minutes you were not at the desk. You can enter some number in this field. For eg, if you are not active for 5 minutes, then Chrome Nanny will stop tracking the minutes till you come back.
Maximum Allowed minutes in a day for Blocked URLs – Use this field if you want to set a single limit to the time you spend on Blocked URLs. This value will override the individual Blocked URL limits. As an example , lets say you added facebook.com to Blocked URL list and set Max Time In a day as 60 minutes. If you now set, Maximum Allowed minutes in a day for Blocked URLs as 30 minutes, then facebook.com will not be accessible after 30 minutes . The same holds when you have multiple Blocked URLs. If the sum of time spent on all the URLs exceed this field, then all Blocked URLs will be blocked.
Length Of Challenge Text – This determines the length of the Challenge text that Chrome Nanny will ask if you try to edit/delete a blockset when it is currently blocked. Reducing this field will also decrease the length of the challenge text. This field was added because in “some” scenarios (eg when playing with Chrome Nanny) , Challenges are an annoyance. Please use this field with discretion. To make changing this field a little hard to use, when you reduce the length of the Challenge, Chrome Nanny will perform a Challenge. So if you try to reduce a 64 character challenge to 32 character, you will be challenged with a 64 character random string before being allowed to change it. Making the length as 0, removes all challenges.
Tags are a way to aggregate individual URL statistics. For eg you may spend lot of time on nytimes.com and Google news. If you want to aggregate the results into a “news” tag, then you can use the Tags tab for it. An url can belong to multiple tags.
Do you think, you spend too much time on Facebook ? This is the tab where you can use to limit your visits.
Block Set Name : Chrome Nanny allows you to group multiple URLs into a block set. Enter a name that you think summarizes the list of URLs. Eg News, Social Networks, Blogs etc.
URLs : Add the websites in this block set here. You need not add a full site url. So facebook.com will be enough. No need to add the whole “http://www.facebook.com”. Note that the url must be the “final” URL of the page that you want to be blocked. This means that gmail.com is better written as mail.google.com , reader.google.com is better written as google.com/reader and so on. You can add as many URLs you want in the text area. Separate them by newline (Enter key). ie a.com enter b.com blocks both a.com and b.com.
Add Tag : If you add any tags in the Tags tab, then you will see those tags here. You can add any number of tags for the url here. Just select the tag and keep clicking “Add Tag”. A URL can have multiple tags.
Block Time : This is the most important information. This decides when the url should be blocked. So if you want it to be blocked from 9 AM to 5 PM, then you encode it as 0900-1700. This is nothing but expressing start and end time as hhmm-hhmm in the 24 hour format. You can add multiple time blocks by separating them by comma. So to block between 9AM-5PM and 7PM-9PM, you write 0900-1700,1900-2100. Note that during the time a URL is blocked, you will not be able to edit or delete the URL.
Max Time : This an optional field. If you want to limit the time you spend on a site during your allowed time, then this field is useful. For eg, taking the example above, if you want to block between 9AM-5PM but you want to limit your browsing to 1 hour in the allowed time (12 AM-8:59 AM , 5:01 PM-11:59 PM) then you enter 0900-1700 in Block Time and 60 in the Max Time In A Day.
Apply On Days : Chrome Nanny understands that you may want to relax on weekends. So if you want your strict rules to apply only on weekdays, uncheck the weekends here.
This field also allows you to specify the block time in a granular level. For eg, you can set yourself to be allowed to browse the site for a maximum of 10 minutes each hour. To do that, set max time as 10 and in the drop down select for every “1 hour’”.
Note that you can edit or delete all the URLs any time when it is not blocked.
Lock down tab allows you to go into a focus mode by blocking some web pages for next “n” minutes. To do that, select the list of blocksets and then set the time to lock down. Note that once a lock down is active, you cannot edit or delete the blockset. Additionally, there is no way to cancel a lockdown too.
The lockdown information is visible in popup and also in the ‘Lockdown Information’ block.
White Listed URLs
If you do not want to block a URL but want to find how much time you spend each day, then use the White Listed URLs tab. Any URL added here is not blocked, but will be tracked and can be charted.
URL : Enter the URL of the site you want to be tracked. Again, you can enter just the domain name to track any page in the site.
Add Tag : As with Blocked URLs , you can add tags to White Listed URLs too !
If you want to visualize how you spent your days with respect to the URLs you entered in Chrome Nanny, then this is the tab for you. You can enter the date range and Chrome Nanny will give you four charts. One each for Blocked URLs, Block Sets, White Listed URLs and tags. You can select between Bar Chart and Pie Chart !.
Validate Regular Expression
If you are going to use a regular expression in the URL, then you can use this tab to validate it. A bad regexp can cause syntax error in the code and *might* cause Chrome Nanny not to block other URLs.
Validating a Regular Expression : Enter your regexp in “Regular Expression for URL” and click “Test Regular Expression”. Check the field “RegExp Error”. If there is any error in regexp, it will be displayed here.
Verify if an URL is blocked : Enter the regexp in “Regular Expression for URL” . Enter URL to be tested in “Test URL”. Click “Test Regular Expression”. Check the fields “RegExp Error” and “Match”.
If you liked this post , please subscribe to the RSS feed.