==== What's it all about? ====

I'm worried that Europe is fast becoming as badly governed as the US is. Further, I'm worried that our privacy and freedom is being erroded, often in the name of anti-terrorism, or more generally 'safety' and 'security'.

==== In Particular ====

In particular I'm worried about European legislation to force Internet Service Providers (ISPs) to log all web activity of their customers. Further, they have to store this information for between 6 and 24 months.

This sort of mandate also encourages Internet cafes and the like to know who their users are (otherwise, why bother knowing that cafe X visited dubious website Y?). This is clearly an incredible invasion of one's privacy, but also so utterly flawed as to be useless (no self-respecting terrorist or criminal will ever use real ID for such things).

To that end, I thought I'd do my bit to thwart proceedings. I wrote a simple Perl program to make continuous web requests. It does so 'gently' so that it doesn't load the system it's running on, and doesn't use up too much bandwidth. The 'random' nature of what it does means that web sites should barely notice the effect of it either.

Being a great programmer as I am, the script is configured by editing the code. It's very simple though, and for the most part doesn't really need changing. It's all commented, so it should be fairly self-explanatory if you fancy having a go at it.

From the comments:

^This script is designed to run permanently on a system. It makes periodic web requests to 'random' web sites that it finds by making 'random' searches on internet search engines.

The intention of this script is to make numerous web requests. Each web request is logged by many ISPs (as they are legally required to do so). As such, it is hoped that the sheer number of requests will over-burden the ISPs to the point that they have to pressure law enforcement to reduce the time they have to keep logs for. Also the deluge of automated entries in the logs make finding real human-based requests more difficult. Ordinary scanning of the logs for known 'bad' sites will yeild unrelated hits, making as much of a mockery of that log storage as possible.

In order to limit the effect on the system it is running on, the script sleeps for a variable amount of time between requests. It can also stop downloading files when they reach a certain size, so as to
avoid using too much of the available bandwidth. In practice, the script does not have a discernable effect on system load or on a 512K ADSL connection.

The script uses a series of words, from which it selects a few and makes a search engine request with them. The results it gets are 'scraped' from the response and added to a list. The list is then fetched, one by one with a pause between each. Once the list is emptied, another random search
takes place to fill the list once more. To avoid endlessly visiting search engine pages (such as caches or advertising) the script can avoid certain URLs (based on each search engine). Also, it can completely avoid URLs, if you wish to do that.

To make this script more useful, it also uses a series of User-Agent strings when it makes requests. This means that the traffic from the script is less easy to filter from ordinary logs (although if you only ever use one browser yourself, you may wish to trim the list of User Agents so that it's impossible to tell what you downloaded and what the script downloaded!).
Have fun!

AttachmentSize KB