Tor浏览器,新的IP无法正常工作?

时间:2015-11-03 02:36:04

标签: python selenium tor

我正在尝试使用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)

1 个答案:

答案 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(开关电路)时,都需要发出此命令。