Screenshot server

GrabThemAll Server is powerfull screenshot server that takes screenshot on server machine. Some features: open source fully customizable, create screenshot on server machine, take screenshot from URL list file and screenshot of single page, work in command line, real X server is not necessary.

GrabThemAll Server
Creating screenshot server is very simple with modified version of GrabThemAllGrabThemAll Server.

GrabThemAll Server is powerfull screenshot server that allows users to:

  • Create screenshot on server machine
  • Supports Windows and Linux platforms
  • Has Open Source licence
  • Can take screenshot from URL list file and screenshot of single page
  • Is fully customizable
  • And much more…

GrabThemAll and GrabThemAll Server are open source software. Source code is available on GrabThemAll Google code.

Download archive Download current version of GrabThemAll Server

Download PDF file GrabThemAll Server Manual – PDF file

Application requirements:

  • xulrunner version 1.9
  • MS Windows or XServer (ex. Xorg or Xvfb) on linux based systems
  • [optional] Flash plugin to handle flash sites

Basic usage

Download GrabThemAll Server, extract it and run with xulrunner:

/path/to/xulrunner /path/to/grabthemall-server/application.ini \
  -url-list /separated/with/new-line/url-list.txt \
  -save-to-dir /store/screens/here


/path/to/xulrunner /path/to/grabthemall-server/application.ini \
  -one-url "" \
  -save-to-dir /store/screens/here


  • /path/to/xulrunner – place where is executable xulrunner
  • /path/to/grabthemall-server – path to decompressed version of GrabThemAll Server
  • -url-list – path to file with URLs to take screenshot. Example URL list file:
  • -one-url – single url to capture
  • -save-to-dir – place where store screenshot and report file

Debian based screenshot server with virtual (fake) xserver
To create own screenshot server based on Debian Sid follow described below steps.

Install Xvfb

sudo aptitude install xulrunner-1.9 xvfb xauth xfonts-base xpdf

Test xvfb. To test xvfb run command:

xvfb-run -s "-screen 0, 640x480x24" \
  -e /tmp/xvfb.log xpdf

Then wait 5 seconds, if there are no error messages
press ctrl+c and go to “Runing the stuff”.
If there are any errors – find out what happens (to google it):

tail /tmp/xvfb.log

Runing the stuff

  • Create directory to store screenshots:
    mkdir -p /tmp/screens_20090820_144128
  • Prepare file with url list:
    echo ""
    > /tmp/url_list.txt
  • Run xulrunner
    To run screenshot server goto application directory and run xulrunner:

    cd ~/grabthemall-server
    xvfb-run -s "-screen 0, 1280x1024x24" \
      xulrunner-1.9 application.ini \
      -url-list /tmp/url_list.txt \
      -save-to-dir /tmp/screens_20090820_144128

    Information about saved screenshots are available in report file (of course if it wasn't turn off in preferences file, see section “Customization”):

    cat /tmp/tlist/*.csv | grep '"ok"' | cut -d ';' -f 1,3

Grab Them All Server is fully customizable. To change behaviour of GTAS edit preferences file. Preferences file is located at:
Values whitch can be changed:

  • Screenshot file type:
    pref("extensions.grabthemall.filetype", 1);
    // 1 = png, 0 = jpg
  • Capture complete page:
    pref("extensions.grabthemall.completepage", 1);      
    // 1 = save complete page
    // 0 = save excert with size capture.width'x'capture.height'
  • Max page loading time:
    pref("extensions.grabthemall.timeout", 5);            
    // page loading timeout [sec]
  • Max JS loading time:
    pref("extensions.grabthemall.timeToWait", 3);        
    // javascript loading timeout [sec]
  • Capturing window size:
    pref("extensions.grabthemall.capture.width", 1024);  
    // captrue window with
    pref("extensions.grabthemall.capture.height", 768);  
    // capture window height

    Notice: xvfb screen size should be larger than capture.width and capture.height

  • File names encoding:
    pref("extensions.grabthemall.capture.fileName", 1);  
    // 1 = base64(url)
    // 0 = replace_unsafe_chars(url)
  • Save report file:
    pref("", true);
    // true = save csv report
    // false = dont create report file

Other kind of ScreenShot server software described Belaton.


Author: Rafał Żelazko

Freelancer. Experienced J2EE, PHP, JS Developer. Advanced Linux user. owner.

21 thoughts on “Screenshot server”

  1. Great tool, one thing i need would be a more generel Wait function. So that Flash apps can get startet and show their stuff off, before the screenshot is done.

    Like wait=5, means wait extra 5 seconds before doing the screenshot. Default would be 0 – which means the gta-server runs as before.


  2. Hey,
    I’m trying to use use GrabThemAll Server to capture Flash website but it does not seem to work, also GrabThemAll does not work either so I reckon the problem is on my side.
    I’m running Debian 6 and Iceweasel 3.5.18. It seems like you’ve been able to make it work with Flash at some point, what was your configuration?

  3. I used Debian Sid some time ago with Iceweasel and flushplugin-nonfree installed, everything was working then for me.
    At first you can check if you have flash plugin installed correctly – go on Iceweasel to page with flash and check if it works.
    If plugin is correct try to increase “Javascript time to wait” option.

  4. Hm I do have the flashplugin-nonfree installed and flash pages work fine. I tried increasing the “javascript time to wait” (up to 30 seconds) but it didn’t work. The strange thing is that even grabthemall firefox extension does not work for me (meaning it does not capture flash, the rest works fine).
    Would by any chance the fact that I’m running xulrunner 1.9.1 instead of xulrunner 1.9 would be a problem?

  5. Well I tested it under Ubuntu 11.04 (Firefox 4), GrabThemAll works but not GrabThemAll Server. I’ll try to find a workaround, I’ll keep you posted.

  6. Okay so after having tested over on a fresh Debian it turns out it works flawlessly. I think I had messed my xulrunner configuration at some point. Anyway the only thing to do is downloading Flash Player Square from adobe website and putting it into the Mozilla plugins directory.
    And thank you so much for this app! Some great job 🙂

  7. Hello,
    Wonderful piece of code man !
    But there is something frustrating me today : when i use gta-server with -url-list arg, it takes one wrong shot sometime.
    I explain, in a list of 5 url, the 4th and th 5th screenshots are taken from the same website even if the corresponding urls are totally different.
    The decoded base64 filename give me the url of the list (said not the one from capture), and the worst is that it doesn’t make it all times.
    Strange doesn’t it ?
    I experience this on a GNU/Linux Debian Squeeze box with xulrunner-1.9.1.
    Some advice to track down this problem will be greatly appreciated !
    Anyway, thanks for this app !

  8. I’m affraid that this issues is difficult to fix. I am going to write new, better version of Grab Them All. If I write someting new I will update blog.

  9. OK, thanks for your response, i’ll workaround for the moment and look forward for your next version.
    Happy coding ^^

  10. Hi Rafal,

    just found out about your very nice GrabThemAll extension, which I plan to run on a server.
    Is it possible to make screenshots in parallel? I mean run multiple processes so that I don’t have to wait step by step.

    Also could it be theoretically made so that Grabthemall doesn’t wait X seconds generally but simply makes the screenshot as soon as the page loaded and also all other async. assets have been loaded?


  11. I guess you can experiment with Firefox option --no-remote to run several instances of xulrunner / Firefox, but I have never tried.

  12. getting Server not found for 90% of my results…
    the websites check out to be fine when visiting but the screenshots are hit and miss – mostly miss… I ran a .txt file with 34 entries and got appr. 3 screenshots that worked…\\ Please advise.. the pages are server not found screenshots not website screenshots

  13. Try to check if you have the same results with GrabThemAll (non-server) version. It is much newer and contain a lot of fixes. If it is better you will have to manually update GTA Server files with the one from GTA non-server. In case issue persists on both versions – only thing to do will be to adjust time outs in the preferences file / window.

    Good luck

Leave a Reply

Your email address will not be published. Required fields are marked *