JunkBusterMT is fully compatible with Waldherr's 2.0.2-8 release, but has been mostly rewritten to use POSIX threads. Compiles on Linux, Solaris, and Windows (mingw32). Get the sourcecode here.
SurfAgent is a Web Browsing Assistant that helps its users find interesting online newspaper articles. It operates as a proxy, monitoring the documents you download and, on your request, analyzes them to learn your preferences. You can enter a set of "hub" pages (e.g., the frontpage of an online newspaper), and SurfAgent will monitor them for links that match your profile.
In addition to the AI part, SurfAgent is fully compliant with Junkbuster, the banner-ad and cookie filtering tool brought to you by Junkbusters Corp.
SurfAgent's code is a rewritten version of Junkbuster, modified and optimized to work using POSIX threads that share global storage within a single process, as opposed to using fork() to start a new process for each HTTP request. This enables the proxy to maintain internal state, such as user profile information and shared cookies; also, various internal lists such as the blocklist and cookie list can be accessed more efficiently.
Each user can run their own instance of SurfAgent for maximum privacy, but friends who trust each other can share the services of a single instance of the proxy. To make this possible, SurfAgent uses the basic proxy authentication mechanism offered by the HTTP protocol. Each download request must carry an authentication field in the header, in order to be matched by an entry in the user database (this is handled automatically by your web browser, which only asks for the password the first time it accesses the proxy). This is not meant to offer security per se, but only to keep trusted users from tripping over each other's (virtual) toes :)
You will notice that once you start using the proxy, each Web page will have an extra button appended at the bottom, like this:
SurfAgent |
Many good reasons :) First off, you get to play with a web agent that learns what you like and tries to find interesting articles for you. Aren't you curious?
Then, there are the optimizations: SurfAgent has been carefully tuned to squeeze the maximum performance out of multithreading. It no longer uses expensive fork() calls to generate separate processes for each component (e.g., image or frame) of a Web page.
Multithreading also allows the sharing of cookies. Cookies are all blocked unless special permissions are granted in the cookie configuration file. In addition to the original options offered by Junkbuster (allowing cookies to pass through bi- or unidirectionally), SurfAgent optionally allows for cookies to be handled by the proxy. That is, cookies that are not used for authenticating sensitive user accounts (e.g., on e-shopping sites), but are required by the visited site anyway, can be shared between all users of the proxy. One such example is the New York Times, who wants to track your every move on their site without offering any useful personalization in return. Using SurfAgent's SmartCookie service, you and all your friends get to read the NY Times in the name of a single user, without having to enable cookies on your browsers.
The version of Junkbuster maintained by Stefan Waldherr offers to replace banner ads with transparent 1 × 1 pixel GIFs. It maintains two separate blocklists, one for images, the other one for html documents. Also, a newer version offers an experimental feature that lets users circumvent the blocking of html documents misclassified as junk. SurfAgent offers optimized image blocking and a well-integrated block circumvention for mistakenly blocked URLs. A single blocklist is required, and the proxy discriminates between text/html documents and images based on the "accept:" field in the browser request header. If the browser exclusively expects an image, and its URL is on the blocklist, the proxy automatically returns a blank 1 × 1 GIF image. If the browser will accept a text/html document, a page is generated containing a message as to why the document was blocked, and offers a link through which the document can be accessed in spite of being blocked.
~/> gunzip SurfAgent-0-2-2-src.tar.gz
~/> tar xvf SurfAgent-0-2-2-src.tarThis will create the directory SurfAgent-0-2-2
~/> cd SurfAgent-0-2-2Then change into the src/ directory:
~/SurfAgent-0-2-2/> cd src
~/SurfAgent-0-2-2/src/> make allThis will cause the surfagent executable to be built and copied into the distribution directory (~/SurfAgent-0-2-2/)
~/SurfAgent-0-2-2/src/> cd ..
~/SurfAgent-0-2-2/> ./surfagent surfagnt.ini
#define MAX_USERS 20to something like
#define MAX_USERS 1Recompile the program. This way, after you've entered your login-password combo, the agent will refuse to accept any new users. Keep in mind that this password mechanism has not been introduced for security, but for the convenience of a group of trusted users.
SurfAgent |
If you have any further questions or comments, please contact me at somlo@cs.colostate.edu
The SurfAgent Proxy is developed and maintained by Gabriel L. Somlo; | ||
The original code has been borrowed from the | Internet JUNKBUSTERTM | proxy developed by Junkbusters Corp.; |
Copying and distribution is permitted under the GNU General Public License; | ||
For questions and comments please e-mail: somlo@cs.colostate.edu |