Not sophisticated, and only a first step to get some kind of traction, but using it can make a real difference to me:
a) Define your main project
b) Choose an activity that you like and that comes naturally as procrastination
c) Choose a reasonable time ratio between them, and respect it
As an example, every hour of surfing the web has to be (sooner or later) compensated by three hours of work on the main project.