使用词干来控制python33中的Tor

时间:2014-02-03 19:02:42

标签: python-3.x tor

我正在尝试使用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都是相同的,理论上它们应该都是不同的。我该怎么做才能使这段代码有效?

1 个答案:

答案 0 :(得分:0)

要使用Tor,您需要通过其SocksPort引导流量(Tor充当本地socks代理)。在上面的代码中,你没有任何试图让urllib通过Tor的东西。

有关示例,请参阅Stem的client usage tutorials。我不确定SocksiPy或PycURL是否有Python 3.x版本。如果没有,那么你需要找到一个替代方案。