Stem как клиент python tor - застрял при загрузке дескрипторов

Я пытаюсь подключиться к tor с помощью стержня python, при попытке подключения (используя пример с emodified) это просто не сработает... вот мой код: (я использую python 3.4.1)

import socket,urllib, sys, socks, stem.process
from stem.util import term    

SOCKS_PORT = 7000

# Set socks proxy and wrap the urllib module

socks.setdefaultproxy(socks.PROXY_TYPE_SOCKS5, '127.0.0.1', SOCKS_PORT) socket.socket = socks.socksocket

# Perform DNS resolution through the socket

def getaddrinfo(*args):   return [(socket.AF_INET, socket.SOCK_STREAM, 6, '', (args[0], args[1]))]

socket.getaddrinfo = getaddrinfo


def query(url):   """   Uses urllib to fetch a site using SocksiPy for Tor over the SOCKS_PORT.   """

  try:
    return urllib.urlopen(url).read()   except:
    return "Unable to reach %s" % url



def print_bootstrap_lines(line):   if "Bootstrapped " in line:
      print(term.format(line, term.Color.BLUE))


print(term.format("Starting Tor:\n", term.Attr.BOLD))

tor_process = stem.process.launch_tor_with_config(   tor_cmd = "C:\Users\Nadav\Desktop\Tor Browser\Tor\\tor.exe" ,   config = {
    'SocksPort': str(SOCKS_PORT),
    'ExitNodes': '{ru}',   },   init_msg_handler = print_bootstrap_lines, )

print(term.format("\nChecking our endpoint:\n", term.Attr.BOLD)) print(term.format(query("https://www.atagar.com/echo.php"), term.Color.BLUE))

tor_process.kill

person Mr. Nun.    schedule 04.08.2014    source источник


Ответы (1)


Порт socks может отличаться от порта для манипулирования tor с помощью Stem/steam.control.

Надеюсь, это поможет вам заставить все работать на вас:

import requesocks as requests
from stem import Signal
from stem.control import Controller

# proxies for requests
proxies = {'http': 'socks5://127.0.0.1:9150',
       'https': 'socks5://127.0.0.1:9150'}

# when using the Controller
with Controller.from_port(port=9151) as controller:
    controller.authenticate()
    controller.signal(Signal.NEWNYM)

Обратите внимание, что порт для носка отличается от порта для контроллера. Порт для контроллера вы можете найти в вашем torrc файле (у меня он назывался torrc-defaults).

Выглядит примерно так:

# Bind to this address to listen to connections from SOCKS-speaking
# applications.
SocksPort 9150
ControlPort 9151

Надеюсь это поможет!

person abpai    schedule 24.12.2014