使用 tor 发出请求 python?

Using tor to make requests python?

我完全是使用 requeststor 的新手。

我使用的代码:

def get_tor_session():
    session = requests.session()
    # Tor uses the 9050 port as the default socks port
    session.proxies = {'http':  'socks5://127.0.0.1:9050',
                   'https': 'socks5://127.0.0.1:9050'}
    return session

session = get_tor_session()
print(session.get("http://httpbin.org/ip").text)

我不断收到以下错误:

raise ConnectionError(e, request=request) requests.exceptions.ConnectionError: SOCKSHTTPConnectionPool(host='httpbin.org', port=80): Max retries exceeded with url: /ip (Caused by NewConnectionError(': Failed to establish a new connection: [WinError 10061] No connection could be made because the target machine actively refused it',))

我查看了各种答案,但无法确定问题所在。

这是适合我的代码:

import requests
torport = 9050
proxies = {
    'http': "socks5h://localhost:{}".format(torport),
    'https': "socks5h://localhost:{}".format(torport)
}

print(requests.get('http://icanhazip.com', proxies=proxies).content)

检查以确保 Tor 运行 在您的计算机上并且 Windows / Defender 等上的防火墙没有阻止您尝试访问的端口。

我遇到了同样的问题,下面的解决方案解决了它。

SOCKSHTTPConnectionPool(host='httpbin.org', port=80)

根据这行,你电脑的监听端口配置的是80端口,需要改成你在torrc文件中配置的SOCKSPort,我的SOCKSPort=9050,默认CONTROL PORT值设置为9051。 How to configure a tor proxy on windows? 这 link 解释了如何配置 tor。 确保 tor 浏览器在后台 运行。 希望此信息有所帮助。

您可以这样更改代码:

def __init__(self):
    self.header = {'Content-Type': 'application/x-www-form-urlencoded'}

# ***** proxy *****#
def renew_connection(self):
    with db.Controller.from_port(port=9051) as controller:
        controller.authenticate(password='my_password')
        controller.signal(Signal.NEWNYM)
        controller.close()

def request_tor(self, url, headers, post_fields):
    self.renew_connection()
    session = requests.session()
    session.proxies = {}
    session.proxies['http'] = 'socks5h://localhost:9050'
    r = session.post(url, headers=headers, data=post_fields)