作为 python Tor 客户端的茎 - 卡在加载描述符上 [英] Stem as python tor client - stuck on loading descriptors

查看:32
本文介绍了作为 python Tor 客户端的茎 - 卡在加载描述符上的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试使用 python 茎连接到 Tor,但在尝试连接时(使用修改后的示例)它不起作用......这是我的代码:(我使用的是 python 3.4.1)

I'm trying to connect to tor with python stem, while trying to connect (using th emodified example) it just won't work...here's my code: (I'm using 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

推荐答案

socks 端口可以与使用 stem/stem.control 操作的端口不同

The socks port can be different from the port to manipulate tor using stem / stem.control

希望这有助于让事情为你工作:

Hopefully this helps to get things working for you:

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)

请注意,用于 sock 的端口与用于控制器的端口不同.你可以在你的 torrc 文件中找到控制器的端口(对我来说它被称为 torrc-defaults).

Notice that the port for sock is different from the port for the Controller. You can find the port for the controller in your torrc file (for me it was called torrc-defaults).

看起来像这样:

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

希望这会有所帮助!

这篇关于作为 python Tor 客户端的茎 - 卡在加载描述符上的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆