我正在关注To Russia With Love教程,作为其中的一部分,我想在每次运行代码时更改身份。我查看了多个问题和教程,从外观上看,我的 torrc-defaults 文件是正确的:ControlPort 9151 CookieAuthentication 1
我想先编辑 torrc 文件,但如果我触摸它,Tor 将不再运行,所以我在某处阅读以查看 torrc。单独的 torrc 文件只有:
# 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
我不想设置密码,所以我通过阅读主文档的理解是设置身份验证就足够了。我有以下代码:
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.SOCKS5Error: 0x01: General SOCKS server failure
我不知道该怎么做,我已经阅读了几个小时并且无法解决问题。任何提示都会很棒。
编辑:我也通读了This Post,但似乎没有解决方案。我还尝试在设置套接字之前放置 Controller 语句,但在这种情况下,IP 保持不变并且不会改变。