【问题标题】:Unable to use Stem and Tor in Python to change my IP address?无法在 Python 中使用 Stem 和 Tor 更改我的 IP 地址?
【发布时间】:2018-08-24 22:31:31
【问题描述】:

我目前正在尝试遵循我在此处在线找到的脚本:Periodic Tor IP Rotation

我尝试使用的代码如下:

import requests
from stem import Signal
from stem.control import Controller
with Controller.from_port(port = 9051) as controller:
  controller.authenticate()
  controller.signal(Signal.NEWNYM)
proxies = {
  "http": "http://127.0.0.1:8118"
}
headers = {
  'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_1) AppleWebKit/537.73.11 (KHTML, like Gecko) Version/7.0.1 Safari/537.73.11'
}
r = requests.get("http://icanhazip.com", proxies=proxies, headers=headers)
print(r.text)

但是,我的 ip 地址并没有因此而改变。有谁知道我可以如何修改它?谢谢。

【问题讨论】:

  • 你能放弃 Privoxy 并直接使用 Tor 的 SOCKS 代理,如下所示:stackoverflow.com/a/43823166/892493
  • 这种情况下privoxy不能用吗?我不太了解什么是有效的。
  • 如果你没有将 privoxy 用于 Python 的 HTTP 代理之外的任何东西 -> Tor 那么就没有理由再将它放在 Tor 和 Python 之间了。很久以前,这就是许多示例所使用的,因为请求没有 SOCSK5h 支持,所以它是一个必要的层。现在如果你可以使用 requests[socks] 那么 Privoxy 是不必要的。我不确定这就是为什么您在请求之间看不到 IP 变化的原因,但我很想看看当您直接使用 Tor 的 SOCKS 代理时信号是否有效。

标签: python python-3.x tor stem


【解决方案1】:

您需要为 authenticate() 函数提供密码。

例子:

    with Controller.from_port(port=9051) as controller:
        controller.authenticate(password='tor') # password came from your torrc file
        print("Success!")
        controller.signal(Signal.NEWNYM)
        print("New Tor connection processed")

【讨论】:

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