首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Tor、Stem和Sockets -使用TOR更改身份

Tor、Stem和Sockets -使用TOR更改身份
EN

Stack Overflow用户
提问于 2015-02-21 04:13:46
回答 2查看 3.8K关注 0票数 3

我正在尝试通过python运行Tor。我的目标是能够在我选择的时间随时切换出口或以其他方式更改我的IP。我遵循了几个教程,遇到了几个不同的错误。

此代码打印我的IP地址

代码语言:javascript
复制
import requests
r = requests.get('http://icanhazip.com/')
r.content
# returns my regular IP

我已经下载并“安装”了Tor浏览器(尽管它似乎是从.exe运行的)。当它运行时,我可以使用下面的代码来返回我的Tor IP,它似乎每隔10分钟左右就会改变一次,所以到目前为止一切似乎都正常

代码语言:javascript
复制
import socks
import socket
socks.set_default_proxy(socks.SOCKS5, "127.0.0.1", 9150)
socket.socket = socks.socksocket

r = requests.get('http://icanhazip.com/')
print r.content
# Returns a different IP

现在,我已经找到了关于如何以编程方式请求新身份的说明here,但这是事情开始出错的地方。我运行以下代码

代码语言:javascript
复制
from stem import Signal
from stem.control import Controller

with Controller.from_port(port = 9151) as controller:
    controller.authenticate()
    controller.signal(Signal.NEWNYM)

在创建控制器的行上,我得到了错误"SOCKS5Error: 0x01: General SOCKS server failure“。我认为这可能是配置问题- instructions say应该有一个名为'torrc‘的配置文件,其中包含端口号,除了其他东西。

最后,在目录C:\Users..myname.\Desktop\Tor Browser\Browser\TorBrowser\Data\Tor中,我发现了三个文件,一个是'torrc',一个是'torrc-defaults',还有一个是'torrc.orig.1‘。我的‘torrc-default’看起来与文档中显示的'torrc‘类似,我的'torrc.orig.1’是空的,我的'torrc‘有两行注释,后面还有一些设置,但没有端口设置

代码语言:javascript
复制
# This file was generated by Tor; if you edit it, comments will not be preserved
# The old torrc file was renamed to torrc.orig.1 or similar, and Tor will ignore it
...

我已经尝试确保“torrc-default”中列出的两个端口与开头的socks语句中的端口和后面的控制器语句中的端口匹配。当它们分别为9150和9151时,我得到上面列出的一般SOCKS服务器故障。

当我尝试用错误的端口运行控制器(在这种情况下,9051是在其他文章中推荐的,但对我来说,这会导致当我调整‘torrc-defaults’时Tor浏览器无法加载),然后我得到错误消息"Errno 10061无法建立连接,因为目标机器主动拒绝了它“

最后,当我在后台运行Tor浏览器时运行Controller,但没有首先运行SOCKS语句,我得到了很多警告文本,最后出现了一个错误,如下所示:

代码语言:javascript
复制
...
...
250 __OwningControllerProcess
DEBUG:stem:GETCONF __owningcontrollerprocess (runtime: 0.0010)
TRACE:stem:Sent to tor:
SIGNAL NEWNYM
TRACE:stem:Received from tor:
250 OK
TRACE:stem:Received from tor:
650 SIGNAL NEWNYM
TRACE:stem:Sent to tor:
QUIT
TRACE:stem:Received from tor:
250 closing connection
INFO:stem:Error while receiving a control message (SocketClosed): empty socket content

起初,我认为这看起来很有希望--我在新的用户请求之前和之后都放入了一个类似这样的快速检查行

代码语言:javascript
复制
print requests.get('http://icanhazip.com/').content

它打印IP,但不幸的是,前后都是一样的。

我在这里很迷惑-任何支持都将不胜感激!

谢谢。

EN

回答 2

Stack Overflow用户

发布于 2016-02-16 18:16:52

获取您的哈希密码:

代码语言:javascript
复制
tor --hash-password my_password

修改配置文件:

代码语言:javascript
复制
sudo gedit /etc/tor/torrc

添加以下几行

代码语言:javascript
复制
ControlPort 9051 
HashedControlPassword 16:E600ADC1B52C80BB6022A0E999A7734571A451EB6AE50FED489B72E3DF
CookieAuthentication 1

注意:- HashedControlPassword是从第一个命令生成的

请参阅此link

我还没有自己尝试过,因为我使用的是mac,但我希望这对配置有所帮助

票数 2
EN

Stack Overflow用户

发布于 2015-04-16 01:24:19

你可以使用torify来实现你的目标。例如,像下面的命令"sudo torify python“那样运行python解释器,每个连接都将通过TOR路由。

关于torify的参考:https://trac.torproject.org/projects/tor/wiki/doc/TorifyHOWTO

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28637436

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档