首页 > 解决方案 > 如何使用 selenium+tor+firefox 按多个键(COMMAND、SHIFT、l)?

问题描述

我在 tor 上抓取一个网站。他们在大约一千个请求后阻止了我正在抓取的 IP 地址。我有大约 20 万个请求要发出,所以我试图在每次浏览器被阻止时自动创建一个新电路,否则保持不变。

通常我可以使用 COMMAND+SHIFT+l 创建一个新电路。但是,这不适用于我的代码。

我正在创建我的驱动程序并按如下方式按键:

binary = FirefoxBinary("/Applications/Tor Browser.app/Contents/MacOS/firefox")
driver = webdriver.Firefox(firefox_binary = binary)

driver.get("https://torproject.com/")
actions = ActionChains(driver)
actions.key_down(Keys.COMMAND).key_down(Keys.SHIFT).send_keys('l').perform()

我也尝试过使用actions.send_keys(Keys.COMMAND, Keys.SHIFT, 'l').perform()actions.key_down(Keys.COMMAND).send_keys(Keys.SHIFT, 'l').perform()

语法似乎确实在按下键,因为我可以做到actions.send_keys(Keys.SPACE).perform()并且页面向下滚动。

我在 MacOS、firefox 85.0.2、selenium 3.141.0、geckodriver 0.29.0

我在 geckodriver 中找不到任何相关的错误。

标签: pythonmacosselenium

解决方案


我建议您,因为您使用的是 MacOS 并且它基于 Unix,所以通过终端以编程方式启动命令而不是模拟按下快捷键来更改 TOR 电路。

看看这里:链接

它写道:“如果你想强制 Tor 生成一个新电路,从而生成一个新 IP,请使用以下命令:echo -e 'AUTHENTICATE ""\r\nsignal NEWNYM\r\nQUIT' | nc 127.0.0.1 9051


推荐阅读