Использование стебля для управления Tor в python33

Вопрос:

Я пытаюсь использовать стебель, чтобы иметь небольшой скрипт, проходящий через 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-адреса одинаковы, когда теоретически все они должны быть разными. Что я могу сделать, чтобы этот код работал?

Лучший ответ:

Чтобы использовать Tor, вам нужно направлять трафик через свой SocksPort (Tor действует как локальный прокси-сервер socks). В вашем коде выше вы ничего не пытаетесь заставить urllib пройти через Tor.

Примеры см. В руководствах по использованию клиентов Stem. Я не уверен, если SocksiPy или PycURL имеют аналоги Python 3.x. Если нет, вам нужно найти альтернативу.

Оцените статью
TechArks.Ru
Добавить комментарий