Tor路由基础实现
Tor路由简单搭建
Tor 洋葱路由是当前最安全最成功的匿名通信技术,通过Tor节点,使得没有人知道你在Tor上干了什么,最大程度上保护个人隐私。
同时,因为此特性的存在,Tor可以作为爬虫的代理服务器来规避反爬措施和提高匿名性。但是Tor无法支撑DDOS攻击,请不要使用Tor进行DDOS。
对Tor的审查
正是因为高度匿名的原因,Tor可绕过政府对网站的审查,访问被防火墙(长城)封锁的网站,所以中国几乎封锁了所有的Tor节点,所以在国内使用Tor,可能需要一些魔法。
Tor浏览器
官方地址:https://www.torproject.org/zh-CN/
Tor浏览器会在运行时在后台启动一个Tor服务,暴露端口一般为9150
网桥获取
在线获取:https://bridges.torproject.org/bridges/?transport=obfs4
使用 Gmail 或 Riseup 的邮箱服务发送电子邮件至 bridges@torproject.org
通过 Telegram 向 @GetBridgesBot 发送消息。在聊天中点击“开始”,或者输入/Start
或/bridges
使用
打开Tor浏览器网桥连接正常后,即可使用,同时后台Tor服务也可以使用。
Tor路由
安装(Centos 7)
首先 update 一下 yum 源,添加 tor 的 repo
sudo yum install epel-release sudo yum install tor |
安装完成以后,启动 tor 服务
sudo systemctl start tor # 启动 tor 服务 |
配置 tor 服务 这一步网上的教程里面一般讲的不是很详细,中间遇到的坑会比较多。
先测试一下是否可以连接 tor 代理服务
sudo yum install nc echo -e 'AUTHENTICATE' | nc 127.0.0.1 9051 |
不出意外,输出应该是 Connection refused
。
这里使用的 netcat
用来测试 tor 代理端口的连接情况,具体关于 netcat 的介绍,可以 google 一下
要解决上面的问题,我们需要先配置一下 tor 服务的 ControlPort
bash复制代码echo "ControlPort 9051" >> /etc/tor/torrc |
Tor 的配置文件目录为 etc/tor/torrc
,可以使用 vim 在配置文件末尾添加或者只用命令写入文件末尾(vim 修改避免命令不熟悉出错)。重启 tor 服务
bash |
再用 netcat
测试一遍
bash复制代码echo -e "AUTHENTICATE" | nc 127.0.0.1 9051 |
网上很多教程在设置完 ControlPort
这一步就停止了,其实这里还有一个坑,就是我们要设置一个 HashedControlPortPassword
,即端口密码。这个密码是 tor 通过 hash 生成的密码。生成方式非常简单,使用 tor 来生成即可:
bash复制代码echo HashedControlPassword $(tor --hash-password "my password" | tail -n 1) >> /etc/tor/torrc |
这里建议命令使用不熟悉的还是用 vim
的方式手动写入,免得少打一个 “>” 符号,把文件覆盖掉了。
查看一下写入情况:
bash复制代码tail -n -2 /etc/tor/torrc |
再次使用 netcat
测试一下:
bash复制代码echo -e 'AUTHENTICATE "my password"' | nc 127.0.0.1 9051 |
至此,配置已经大功告成。
测试 tor 服务的使用
测试一下服务器的公网IP和使用 tor 代理访问的 IP,看看 tor 服务是否生效
bash复制代码curl http://icanhazip.com |
切换 IP 测试:这里有两种方式,第一种是通过命令行进行切换:
bash复制代码echo -e 'AUTHENTICATE "my password"\r\nsignal NEWNYM\r\nQUIT' | nc 127.0.0.1 9051 |
再运行一次上面的命令看下IP有没有成功切换
bash复制代码torify curl http://icanhazip.com |
使用 python 脚本来进行切换
bash复制代码pip3 install stem python3 |
通过 stem 库,可以使用 python 与 tor 服务进行交互,有关 stem 的使用,可以查看一下文档
至此, tor 代理配置全部完成。
指定特定的地区 IP
在 /etc/tor/torrc
文件中 添加以下语句
bash复制代码ExcludeNodes {cn},{hk},{mo},{kp},{ir},{sy},{pk},{cu},{vn} # 表示排除这些国家/地区的节点 |
安装过程参考:https://juejin.cn/post/7115303144028340255
Python使用Tor服务
from stem import Signal, SocketError |
关于滥用
个人比较认同Tor浏览器官方解答中的一句话
重要的是要理解,犯罪意图在于个人,而不在于他们使用的工具。 就像其他广泛使用的技术一样,Tor 可能被有犯罪意图的个人使用。 而且由于他们可以使用其他选择,将 Tor 从世界上移除似乎不太可能阻止他们从事犯罪活动。 同时,Tor 和其他隐私措施可以打击身份盗用、跟踪等人身犯罪,并可供执法部门用来调查犯罪并帮助支持幸存者。
关于Tor浏览器的常见问题:https://support.torproject.org/zh-CN/abuse/