我正在尝试使用stem让一个小脚本通过Tor运行。我似乎无法干活。这是我的代码:
import urllib.request
import re
from stem.connection import connect_port
from stem import Signal
from stem.control import Controller
controller = connect_port(port=9151)
def change():
controller.authenticate()
controller.signal(Signal.NEWNYM)
def getIp():
print (urllib.request.urlopen("http://my-ip.heroku.com").read(30).decode('utf-8'))
def connectTor():
controller = connect_port(port=9151)
controller.connect()
getIp()
if not controller:
sys.exit(1)
print("nope")
def disconnect():
controller.close()
if __name__ == '__main__':
connectTor()
getIP()
change()
getIp()
disconnect()
基本上,所有显示的IP都是相同的,理论上它们应该都是不同的。我该怎么做才能使这段代码有效?
答案 0 :(得分:0)
要使用Tor,您需要通过其SocksPort引导流量(Tor充当本地socks代理)。在上面的代码中,你没有任何试图让urllib通过Tor的东西。
有关示例,请参阅Stem的client usage tutorials。我不确定SocksiPy或PycURL是否有Python 3.x版本。如果没有,那么你需要找到一个替代方案。