Python 使用Tor和Stem改变身份
我正在学习教程,作为其中的一部分,我希望每次运行代码时都更改标识。我看过多个问题和教程,从外观上看,我的torrc defaults文件是正确的: 控制端口9151 库克认证1 我想先编辑torrc文件,但如果我触摸它,Tor将不再运行,所以我在某个地方阅读了torrc。torrc文件本身只有:Python 使用Tor和Stem改变身份,python,tor,stem,Python,Tor,Stem,我正在学习教程,作为其中的一部分,我希望每次运行代码时都更改标识。我看过多个问题和教程,从外观上看,我的torrc defaults文件是正确的: 控制端口9151 库克认证1 我想先编辑torrc文件,但如果我触摸它,Tor将不再运行,所以我在某个地方阅读了torrc。torrc文件本身只有: # This file was generated by Tor; if you edit it, comments will not be preserved # The old torrc file
# 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
我不想设置密码,因此我从阅读stem文档中了解到,设置身份验证就足够了。我有以下代码:
import socks # SocksiPy module
import socket
import requests
SOCKS_PORT = 9150
# Set socks proxy and wrap the urllib module
socks.setdefaultproxy(socks.PROXY_TYPE_SOCKS5, '127.0.0.1', SOCKS_PORT)
socket.socket = socks.socksocket
def getaddrinfo(*args):
return [(socket.AF_INET, socket.SOCK_STREAM, 6, '', (args[0], args[1]))]
socket.getaddrinfo = getaddrinfo
url = "http://google.com"
print requests.get(url).elapsed.total_seconds()
from stem import Signal
from stem.control import Controller
with Controller.from_port(port = 9151) as controller:
controller.authenticate()
controller.signal(Signal.NEWNYM)
但当我运行它时,我得到了错误:
socks.SOCKS5错误:0x01:常规socks服务器故障
我不知道该怎么办,我已经读了好几个小时了,还没能解决这个问题。任何提示都很好
编辑:
我也读了一遍,但似乎没有解决办法。
我还尝试在设置套接字之前放置Controller语句,但在这种情况下,IP保持不变,不会更改。我通过在设置套接字之前移动Controller语句来解决此问题。起初看起来IP保持不变,但如果再等3或4秒,IP就会改变,因此我只添加了一个时间延迟,它运行正常。我最终通过在设置套接字之前移动控制器语句来解决这个问题。起初看起来IP保持不变,但如果你再等3或4秒,IP就会改变,所以我只添加了一个时间延迟,它可以正常运行