Want to set up a proxy of your own? Here's how! For simplicity, we'll assume you're running a recent version of Ubuntu, but the instructions should be easy to adapt to any other OS. (Don't have a server? You can get one using Amazon's EC2 with Ubuntu AMIs.)
11 | 12 |13 | # Install the latest version of tor, with the tor2web flag 14 | sudo apt-get install python-software-properties 15 | sudo apt-add-repository http://deb.torproject.org/torproject.org 16 | gpg --keyserver keys.gnupg.net --recv 886DDD89 17 | gpg --export A3C4F0F979CAA22CDBA8F512EE8CBC9E886DDD89 | sudo apt-key add - 18 | sudo apt-get update 19 | sudo apt-get install deb.torproject.org-keyring dpkg-dev autoconf 20 | sudo apt-get build-dep tor 21 | git clone git://git.torproject.org/debian/tor.git 22 | cd tor 23 | curl https://trac.torproject.org/projects/tor/raw-attachment/ticket/2553/0001-Add-support-for-an-enable-tor2web-mode-DEB_BUILD_OPT.patch | patch -p 1 24 | ./autogen.sh 25 | echo "all:" > src/test/Makefile 26 | echo "check:" >> src/test/Makefile 27 | echo "install:" >> src/test/Makefile 28 | DEB_BUILD_OPTIONS="enable-tor2web-mode" fakeroot debian/rules binary 29 | cd .. 30 | sudo dpkg -i tor_0.2.3.12-alpha-1_amd64.deb 31 | # (this will return an error, ignore it) 32 | sudo sh -c "echo Tor2webMode 1 >> /etc/tor/torrc" 33 | sudo /etc/init.d/tor restart 34 | 35 | # Install privoxy to translate normal web requests to SOCKS, which Tor speaks: 36 | sudo apt-get install privoxy 37 | sudo sh -c "curl http://tor2web.org/conf/privoxy-config > /etc/privoxy/config" 38 | sudo /etc/init.d/privoxy restart 39 | 40 | # Install Apache to serve web requests 41 | sudo apt-get install apache2 42 | sudo sh -c "curl http://tor2web.org/conf/apache2.conf > /etc/apache2/apache2.conf" 43 | sudo sh -c "curl http://tor2web.org/conf/tor2web.org-ss.crt > /etc/apache2/tor2web.org.crt" 44 | sudo sh -c "curl http://tor2web.org/conf/tor2web.org-ss.key > /etc/apache2/tor2web.org.key" 45 | 46 | # Make the cache directory (edit apache2.conf if you want this somewhere else) 47 | sudo mkdir /mnt/apache2-cache 48 | sudo chown www-data /mnt/apache2-cache 49 | 50 | sudo /etc/init.d/apache2 restart 51 |52 | 53 |
To debug, you can check the individual components to make sure they work:
54 | 55 |56 | # Tor 57 | curl -i --socks4a 127.0.0.1:9050 http://duskgytldkxiuqc6.onion/ 58 | # privoxy 59 | curl -x 127.0.0.1:8118 http://duskgytldkxiuqc6.onion/ 60 | # Apache 61 | curl -k -H "Pragma: none" -H "Host: duskgytldkxiuqc6.tor2web.org" -i https://127.0.0.1/ 62 | # run again to see if it serves from cache: 63 | curl -k -H "Pragma: none" -H "Host: duskgytldkxiuqc6.tor2web.org" -i https://127.0.0.1/ 64 |65 | 66 |
That's it!
67 | 68 |Send your IP address to info@tor2web.org and ask to be added to the *.tor2web.org
round-robin. This will allow your server to respond to requests from the public for Tor hidden services. (We'll also send you the real SSL keys; the ones above are only for testing purposes.)
If you have trouble with the process or would like a different way of doing it, let me know. If you want to build scripts or tools to simplify this process, that would be great too. You might also be interested in running a Tor relay.
71 | 72 |See also: Is this legal?
73 | 74 |Sorry, we couldn't find the page you requested. This could be because:
7 | 8 |You entered an invalid URL. This is most likely if you get this page immediately after trying to visit a URL. This service only works with valid .onion
URLs. Please check your URL and try again.
The server you're trying to connect to is down. This is most likely if you get this page after a long wait. Please try again later.
The Tor network is overloaded. This is most likely if you have other reasons to believe the URL is valid and the server is up. Please try again later.
There's a problem with tor2web. This is most likely if you get this error on every uncached request. Please let us know.
If you need to get to the page urgently, you can also download the Tor browser bundle and replace .tor2web.org
with .onion
to visit the web page directly through Tor.
Tor is a software project that lets you use the Internet anonymously. tor2web
is a project to let Internet users access anonymous servers.
Here's how it works: Imagine you've got something that you want to publish anonymously, like the Federalist Papers or leaked documents from a whistleblower. You publish them via HTTP using a Tor hidden service; that way your anonymity is protected. Then people access those documents through tor2web; that way anyone with a Web browser can see them.
14 | 15 |Whenever you see a URL like http://duskgytldkxiuqc6.onion/
, that's a Tor hidden Web service. Just replace .onion
with .tor2web.org
to use the tor2web proxy network. Example:
https://duskgytldkxiuqc6.tor2web.org/20 | 21 |
This connects you with tor2web, which then talks to the hidden service via Tor and relays the response back to you.
22 | 23 |WARNING: tor2web is only intended to protect publishers, not readers. You won't get the level of anonymity, confidentiality, or authentication that you would get if you were using a Tor client yourself. Using tor2web trades off security for convenience; install Tor for better results. (More details...)
24 | 25 |HOST: You can set up your own tor2web proxy.
46 | 47 |CODE: You can write code to help us. Also check out tor2web-related tasks in Tor.
48 | 49 |You've requested an invalid URL. This server only supports Tor hidden services.
8 | 9 |Example: https://duskgytldkxiuqc6.tor2web.org/
A tor2web proxy is just like any other piece of network infrastructure; it just passes back and forth requests and responses and doesn't inspect or modify content.
11 | 12 |17 USC 512(a) (part of the DMCA) says:
13 | 14 |29 | 30 |A service provider shall not be liable ... for infringement of copyright by reason of the provider's transmitting, routing, or providing connections for, material through a system ... operated by or for the service provider, or by reason of the intermediate and transient storage of that material in the course of such transmitting, routing, or providing connections, if --
15 | 16 |17 |
27 | 28 |- 18 | 19 |
the transmission of the material was initiated by or at the direction of a person other than the service provider;
- 20 | 21 |
the transmission ... is carried out through an automatic technical process without selection of the material by the service provider;
- 22 | 23 |
the service provider does not select the recipients of the material except as an automatic response to the request of another person;
- 24 | 25 |
no copy of the material made ... is maintained ... in a manner ordinarily accessible to anyone other than anticipated recipients [or] for a longer period than is reasonably necessary for the transmission...
- 26 |
the material is transmitted ... without modification of its content.
512(b) extends the immunity to "generally accepted industry standard" caching.
31 | 32 |(The DMCA takedown notice procedures you may have heard of are part of 512(c) and only apply to services that store copies of material.)
33 | 34 |For more information, see the Tor legal FAQ.
35 | 36 | 37 | 38 |It's possible to imagine some hidden Web services becoming quite popular and overloaded or somehow getting shut down. It would be nice if other hidden Web services mirrored their content so that users could still access it. And it would be nice if there was a directory service that would point users to an accessible copy of the content. Here's a proposal for such a system:
11 | 12 |You have a bunch of files you'd like to publish. You publish them via HTTP and publish a list at /files.txt
mapping their SHA1 to their path on your server.
You register your HTTP server with a directory server. The
16 | directory server reads your files.txt
and adds it to its index. Now
17 | whenever someone asks for a SHA1 you host, it redirects them to it on
18 | your server (perhaps using CAW as well).
Someone else asks the directory server for a list of the most
21 | popular files. They download a copy, publish them via
22 | HTTP, publish a files.txt
for them, and notify the directory. Now the
23 | directory server can round-robin between the two. (To prevent against directory poisoning, the directory can occasionally spot-check the servers in its index to make sure the files they server match the hash.)
The end result is that you can point users at a URL like:
27 | 28 |http://dir.theinfo.org/sha1/ed70c57d7564e994e7d5f6fd6967cea8b347efbc
and be fairly confident that they can get a copy.
31 | 32 |Note that such a system need not be limited to tor2web servers proxying for hidden HTTP servers. It could redirect to the file on any Web-accessible system.
33 | 34 |For maximum security, install your own copy of Tor and use that to visit the .onion
URLs. Tor will encrypt and anonymize your requests and use digital signatures to verify you're talking to the actual server.
If you don't want to access all your pages through Tor, but just .onion
URLs, set your browser's PAC file to:
http://tor2web.org/conf/proxy.pac17 | 18 |
On Mac OS X, you can do this by clicking the Apple Menu, choosing "System Preferences...", clicking the button "Network", clicking the green dot on the left, clicking the button "Advanced...", choosing the tab "Proxies", checking "Automatic Proxy Configuration" on the left and clicking it, then putting this in the "URL:" box, clicking "OK", then clicking "Apply".
19 | 20 |tor2web uses SSL so that others can't eavesdrop on your requests, but this doesn't protect you from people looking at your own browser history or if someone compromises the tor2web server itself. In addition, in its default usage people will be able to tell which Tor site you're visiting. To prevent this, you can use x.tor2web.org
as follows:
https://x.tor2web.org/duskgytldkxiuqc6/25 | 26 |
This isn't turned on by default since it breaks most internal site links.
27 | 28 |Right now when a client connects to a hidden server, both parties pick a "rendezvous point" and create anonymous connections to it, so that neither side knows the others identity. The identity of tor2web proxies, however, are public, so there is no point in disguising their identity.
13 | 14 |If Tor had an option to allow the tor2web proxies to select themselves as rendezvous points, it could significantly speed things up.
15 | 16 |STATUS: Roger says he's hesitant to support this.
17 | 18 |Support more things like NLnet Project: Speed Up Tor Hidden Services.
21 | 22 |It would be great if nginx
(the caching proxy we use with tor2web
) support Tor (i.e. SOCKS4a) so that we didn't have to proxy requests through privoxy
as well.
It would be nice if there was a Tor browser bundle that only handled .onion requests so that people could visit .onion websites without routing all of their traffic through Tor.
29 | 30 |tor2web proxies frequently go down, but this is difficult to detect because of the long and variable lags in returning uncached pages as well as frequent downtime from even the most popular network services. Reliable tools to detect whether a proxy is actually down, notify its owner, and remove it from the DNS round robbin would be an enormous help.
33 | 34 |There are multiple caching proxies that server *.tor2web.org
requests. If users are directed to select one at random, this leads to cache fragmentation. Ideally, the DNS server would use a consistent hashing scheme to return a particular server for each onion domain.