我正在尝试使用tor浏览器,并获取我在python中访问的每个URL的新IP地址。我能够打开运行tor浏览器的selenium实例,但是如何在我访问的每个网站上请求新的IP?
binary = '/Applications/TorBrowser.app/Contents/MacOS/firefox'
if os.path.exists(binary) is False:
raise ValueError("The binary path to Tor firefox does not exist.")
firefox_binary = FirefoxBinary(binary)
browser = None
def get_browser(binary=None):
browser = webdriver.Firefox(firefox_binary=binary)
return browser
if __name__ == "__main__":
browser = get_browser(binary=firefox_binary)
urls = (
('tor browser check', 'https://check.torproject.org/'),
('ip checker', 'http://icanhazip.com')
)
for url_name, url in urls:
print "getting", url_name, "at", url
browser.get(url)
答案 0 :(得分:2)
要使用Python为每个请求请求新IP,您需要打开与ControlPort的连接并发出NEWNYM信号。
您可以使用Stem来简化连接和命令:
from stem.control import Controller
from stem import Signal
if __name__ == '__main__':
with Controller.from_port(port = 9051) as controller:
controller.authenticate('password') # provide the password here if you set one
controller.signal(Signal.NEWNYM) # switch to clean circuits
请记住Tor可能会对NEWNYM
个请求进行速率限制,因此您可能需要等待一段时间(默认为10秒)才能发出该命令。此外,由于退出节点数量有限,您的电路可能会获得相同的退出节点,具体取决于您发出的请求数量。
每次想要获得新的IP(开关电路)时,都需要发出此命令。