无法使用privoxy和stem从Tor获得新IP

时间:2018-11-21 12:55:36

标签: python web-scraping tor

我试图使用Tor,Privoxy和Stem旋转IP,但最终却总是获得相同的IP。我尝试了几种方法(更改代理,使用请求会话等等),但没有成功。

这是我的python代码:

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

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

#proxies = {
#  "http": "http://127.0.0.1:8118"
#}

proxies = {
    'http': 'socks5h://127.0.0.1:9050',
    'https': 'socks5h://127.0.0.1:9050'
}

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, stream=False)
print (r.text)

.torc文件具有此配置

ExitNodes {ar}
StrictNodes 1

ControlPort 9051
HashedControlPassword 16:BA2B8B2EAC4B391060A6FAA27FA922706F08D0BA0115D79840265D9DC3

privoxy配置文件具有此行

forward-socks5   /               127.0.0.1:9050 .

2 个答案:

答案 0 :(得分:2)

我发现了问题。 IP路由工作正常,问题在于我一直在使用{ar}中的ExitNodes,而阿根廷只有一个节点。因此,它始终是相同的IP。

答案 1 :(得分:1)

我发现以下方法非常方便和有用,而不是您上面尝试的方法。确保将tor.exe文件的正确位置放在torexe变量中。概念证明:

import requests
import os

torexe = os.popen(r"C:\Users\WCS\Desktop\Tor Browser\Browser\TorBrowser\Tor\tor.exe")

with requests.Session() as s:
    s.proxies['http']  = 'socks5h://localhost:9050'
    res = s.get("http://icanhazip.com")
    print(res.text)

torexe.close()