Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/358.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 使用Tor和Stem改变身份_Python_Tor_Stem - Fatal编程技术网

Python 使用Tor和Stem改变身份

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

我正在学习教程,作为其中的一部分,我希望每次运行代码时都更改标识。我看过多个问题和教程,从外观上看,我的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 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就会改变,所以我只添加了一个时间延迟,它可以正常运行