gpt4 book ai didi

python - 使用 stem 切换身份时一般 SOCKS 服务器故障

转载 作者:太空宇宙 更新时间:2023-11-03 12:47:19 27 4
gpt4 key购买 nike

我在远程服务器 (Ubuntu) 上运行 Tor,端口为 9150,控制端口为 9151。我已确认两者都在通过 netstat -ant 运行。

这是我的代码,它引发了 SOCKS5Error: 0x01: General SOCKS server failure 错误。

import socks
import socket
socks.set_default_proxy(socks.SOCKS5, server_ip, 9150)
socket.socket = socks.socksocket

我可以从任何图书馆发出请求,并成功获得带有 tor ip 地址的响应。

但是以下是导致错误的原因:

from stem import Signal
from stem.control import Controller

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

如果我运行上面的而不使用 socks 设置代理(第一个片段),我可以毫无问题地发出信号。

最佳答案

一旦连接到 Tor,就无法打开新的 Controller 。尝试在脚本顶部打开一个 Controller 。然后 Tor 连接和信号器都使用相同的 Controller 对象。

这似乎适用于 Python3:

import time

import socket
import socks

import requests
from bs4 import BeautifulSoup
from stem import Signal
from stem.control import Controller

controller = Controller.from_port(port=9051)


def connectTor():
socks.setdefaultproxy(socks.PROXY_TYPE_SOCKS5 , "127.0.0.1", 9050, True)
socket.socket = socks.socksocket


def renew_tor():
controller.authenticate(<INSERT YOUR PASSPHRASE HERE>)
controller.signal(Signal.NEWNYM)


def show_my_ip():
url = "http://www.showmyip.gr/"
r = requests.Session()
page = r.get(url)
soup = BeautifulSoup(page.content, "lxml")
ip_address = soup.find("span",{"class":"ip_address"}).text.strip()
print(ip_address)


for i in range(10):
renew_tor()
connectTor()
showmyip()
time.sleep(10)

关于python - 使用 stem 切换身份时一般 SOCKS 服务器故障,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28035413/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com