我试图使用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 .
答案 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()