【问题标题】:How to run python script on the Tor network如何在 Tor 网络上运行 python 脚本
【发布时间】:2020-12-13 18:14:33
【问题描述】:

我正在用 python 编写一个程序,并试图让它通过 Tor 网络而不是静态运行。 我该怎么做?我正在使用 python 3.8、tor 10.0.6 和 win 10。我需要的只是连接到 https 网站

【问题讨论】:

  • 如果您想使用tor 连接到网页,那么您必须使用由tor 运行的proxy server - 在像requests 这样的模块中,您应该有requests.get(..., proxy=...) 才能使用@ 987654326@ 在连接中。顺便说一句:与您在普通网络浏览器中使用 tor 的方式相同 - 在网络浏览器设置中,您必须将 tor 设置为代理服务器。

标签: python security tor


【解决方案1】:

如果您已经安装了Tor,那么它应该可以作为代理服务器127.0.0.1:9050,您可以在requests等模块中使用它

在示例中,我使用门户 httpbin.org 来测试我的 IP

import requests

proxy = {
    'http':  'socks5://localhost:9050',
    'https': 'socks5://localhost:9050',
}

url = 'https://httpbin.org/get'

r = requests.get(url, proxies=proxy)  # using TOR network
#print(r.text)
print('   Tor IP:', r.json()['origin'])

r = requests.get(url)
#print(r.text)
print('normal IP:', r.json()['origin'])

此刻它向我展示了:

   Tor IP: 146.59.155.27
normal IP: 217.99.86.56

但这将使用几乎所有时间相同的Tor IP

如果要更改IP,则必须重新启动Tor

或者您必须在Tor 设置中配置ControlPortPassword(在Linux 上的文件/etc/tor/torrc 中)

然后您可以通过使用套接字发送信号来更改Tor IP

import socket

s = socket.socket()
s.connect(('localhost', 9051))
s.send('AUTHENTICATE "your_passord"\r\nSIGNAL NEWNYM\r\n'.encode())

或者您可以为此使用模块stem

from stem import Signal
from stem.control import Controller

with Controller.from_port(port=9051) as controller:
    controller.authenticate(password='your_password')
    controller.signal(Signal.NEWNYM)

您可以在Stackoverflow 上找到许多更好地描述它的问题。


据我所知,发送信号后可能需要几秒钟才能获得新的Tor IP,因此您可能需要等待下一个请求。

【讨论】:

    猜你喜欢
    • 2015-09-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多