如何在Windows上使用Selenium和Python在Tor中自动化新身份?

时间:2019-04-27 05:21:36

标签: python selenium web-scraping automation tor

尝试了许多解决方案之后,我终于设法在Windows机器上打开Tor浏览器:

from selenium import webdriver
from selenium.webdriver.firefox.firefox_binary import FirefoxBinary

binary = FirefoxBinary(r"C:\Program Files\Tor Browser\Browser\firefox.exe")
profile = webdriver.FirefoxProfile("C:\Program Files\Tor Browser\Browser\TorBrowser\Data\Browser\profile.default")
profile.set_preference('network.proxy.type', 1)
profile.set_preference('network.proxy.socks', '127.0.0.1')
profile.set_preference('network.proxy.socks_port', 9050)

driver = webdriver.Firefox(executable_path=r"geckodriver.exe", firefox_binary=binary)
driver.get("http://httpbin.org/ip")

尽管它还没有完全自动化,因为我必须先手动启动Tor浏览器才能使它工作。

现在面临的挑战是在Tor中自动生成新的身份,为此,我设法获得了另一个对我有用的解决方案,例如:

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

def get_tor_session():
    session = requests.session()
    session.proxies = {'http':  'socks5://127.0.0.1:9050', 'https': 'socks5://127.0.0.1:9050'}
    return session

def renew_connection():
    with Controller.from_port(port = 9051) as controller:
        controller.authenticate(password="tor12345")
        controller.signal(Signal.NEWNYM)

session = get_tor_session()
print("Tor IP: ",session.get("http://httpbin.org/ip").text)
print("Primary Ip: ",requests.get("http://httpbin.org/ip").text)

renew_connection()
session = get_tor_session()
print("Tor New Ip: ",session.get("http://httpbin.org/ip").text)

这里使用Tor Bundle,还必须先从tor bundle文件夹中手动运行tor.exe文件,然后它才能工作。

我想使用硒生成新的身份,因为我想抓取具有javascript,单击按钮等的动态网页,据我所知,我认为使用请求库是不可能的!

任何建议都将受到高度赞赏!

0 个答案:

没有答案