我正在尝试通过tor在python脚本中路由请求。下面是代码:
#!/usr/bin/env python3
import socket
import socks
from urllib import request
socks.set_default_proxy(socks.SOCKS5, '127.0.0.1', 9050)
socket.socket = socks.socksocket
ip = request.urlopen('https://api.ipify.org/').read()
print(ip)当我试图以用户身份运行它(即"./script.py")时,它崩溃时会出现以下错误:
urllib.error.URLError: <urlopen error Socket error: 0x01: General SOCKS server failure>但是,如果我使用sudo运行脚本("sudo ./script.py"),它将按预期工作,并打印一个tor。没有sudo我怎么能让它工作呢?
编辑1:我认为tor安装是可以的,因为它可以与其他语言一起工作(例如,我可以从Go脚本执行请求。此外,在将代理dict传递给requests.get()时,我可以让python脚本与tor一起工作(如下面的注释所示)。这个解决方案是可以接受的,但我仍然在想,我的脚本有什么问题。
编辑2:我正在运行LinuxMint18.3 64位.Python和Python3都是预先安装的.Tor是通过存储库(sudo Apt)安装的。我尝试了全局安装PySocks (sudo pip3 install PySocks),并且只针对当前用户(pip3 install --用户PySocks)。
发布于 2018-01-18 20:52:57
你试过看:https://tor.stackexchange.com/questions/7101/general-socks-server-failure-while-using-tor-proxy吗?这似乎是您想要的,它们表明可以使用127.0.0.2上的中间连接来解决这个问题。瞧一瞧!
发布于 2018-01-18 21:54:06
我已经在我的机器上尝试过您的代码(在安装了正确的软件包之后),它可以正常工作。在您的系统中安装/运行Tor的方式应该有问题。请随意在您的问题中添加有关安装的详细信息,我将尝试查看它。
https://stackoverflow.com/questions/48330020
复制相似问题