A lot of webservers use client-side cookies for logging in. Here is some sample code of how to log in to an [OpenACS] 3.x server: '''Login''' package require http set login [::http::formatQuery email spammer@hotmail.com password fooFoo!] set tok [::http::geturl http://mysite.net/register/user-login.tcl -query $login] upvar \#0 $tok state set cookies [list] foreach {name value} $state(meta) { if { $name eq "Set-Cookie" } { lappend cookies [lindex [split $value {;}] 0] } } ::http::cleanup $tok '''Using it''' set tok2 [::http::geturl http://mysite.net/some/restricted_page.html -headers [list Cookie [join $cookies {;}]]] ... your code ::http::cleanup $tok2 This method will work for a lot of websites that ask for a username and password. For each site, you'll probably want to read the page source of the login page of that site to see where it POSTs to and what fields you need to supply. And you may need to play with your User-Agent headers too. A lot of sites actually restrict which browsers can login... ---- This page also serves as a reference for all pages that deal with Cookie management by CGI processing scripts. ---- Also see [Cookies: give and take]