我试图在linux机器上使用本地代理(Tor)与firefox一起使用RSelenium。
我在安装Tor时没有遇到任何问题,如下 本图集和命令行 wget -qO - https://api.ipify.org; echo
做给我一个新的IP。
现在我愿意使用火狐与RSelenium通过Tor本地主机9050端口。
State Recv-Q Send-Q Local Address:Port Peer Address:Port
LISTEN 0 128 127.0.0.1:9050 *:*
LISTEN 0 128 127.0.0.1:9051 *:*
我使用了一个独立的selenium java (selenium-server-standalone-2.53.0.jar),它与普通的RSelenium一起工作得很好:下面是一个例子,让IP显示于 鸡肉
library(RSelenium)
remDr <- remoteDriver(
remoteServerAddr = "localhost",
port = 4444L,
browserName = "firefox"
)
remDr$open()
remDr$navigate("https://ipchicken.com/")
ip <- remDr$findElements(using = "css", value ='b')
print(ip[[1]]$getElementText())
而且我确实得到了我的IP。现在我想看到它发生与Tor。因此,我试图添加代理选项,当连接remotedriver与firefox。
eCaps <- list("moz:firefoxOptions" = list(
args = c('--proxy-server=localhost:9050'
)))
remDr <- remoteDriver(
remoteServerAddr = "localhost",
port = 4444L,
browserName = "firefox",
extraCapabilities = eCaps
)
我试过 '--proxy-server=localhost:9050'
, '--proxy-server=http://localhost:9050'
,'--proxy-server=socks5://localhost:9050'
, '--proxy-server=127.0.0.1:9050'
它没有输出任何错误,并给了我我的初始IP。所以它是不工作的。单机版说它在执行时有以下选项:例如......。
22:59:10.288 INFO - Executing: [new session: Capabilities [{nativeEvents=true, browserName=firefox, javascriptEnabled=true, moz:firefoxOptions={args=--proxy-server= 127.0.0.1:9050}, version=, platform=ANY}]])
22:59:10.297 INFO - Creating a new session for Capabilities [{nativeEvents=true, browserName=firefox, javascriptEnabled=true, moz:firefoxOptions={args=--proxy-server= 127.0.0.1:9050}, version=, platform=ANY}]
22:59:30.323 INFO - Done: [new session: Capabilities [{nativeEvents=true, browserName=firefox, javascriptEnabled=true, moz:firefoxOptions={args=--proxy-server= 127.0.0.1:9050}, version=, platform=ANY}]]
我做错了什么?
在用户1207289的回答之后,在意识到你可以直接进行 创建火狐档案 在 RSelenium
我试过了
eCaps <- makeFirefoxProfile(list(network.proxy.type = 1,
network.proxy.socks = "127.0.0.1",
network.proxy.socks_port = 9050,
network.proxy.socks_version = 5))
remDr <- remoteDriver(
remoteServerAddr = "localhost",
port = 4444L,
browserName = "firefox",
extraCapabilities = eCaps
)
我用整数来表示 network.proxy.socks_port
, network.proxy.socks_port
和 network.proxy.type
因为 这个问题但也试过用性格,没有成功。我试过用和不用 network.proxy.socks_version = 5
但它没有工作(我得到我的正常IP)。我试过 network.proxy.socks_port = 9150
但它没有工作。
我还试过
eCaps <- list("moz:firefoxOptions" = list(
args = c('network.proxy.socks=127.0.0.1:9050' ,'network.proxy.type=1' )
)
)
但这也没有用。
我可以使用webdriver和firefox连接到TOR与下面的 。只要确保TOR已经安装并运行。我在mac上用的是catalina。你可以根据你的操作系统检查端口设置 , 如果他们是不同的。
它是在c#中,但你可以几乎做任何绑定
FirefoxOptions firefoxOptions = new FirefoxOptions();
firefoxOptions.SetPreference("network.proxy.type", 1);
firefoxOptions.SetPreference("network.proxy.socks", "127.0.0.1");
firefoxOptions.SetPreference("network.proxy.socks_port", 9150);
FirefoxDriverService service = FirefoxDriverService.CreateDefaultService();
IWebDriver driver = new FirefoxDriver(service, firefoxOptions);
当这打开一个firefox浏览器实例时,只需访问 https:/check.torproject.org。 来检查它是否连接到TOR。这将确认你已经连接,并将显示你的新的IP也
经过多方寻找,我找到了一个办法。RSelenium
是否有... getFirefoxProfile
函数,可以获得firefox配置文件。
因此,我首先直接从firefox配置配置文件,如下所示 同图 并将其复制到我的R文件夹中。使用
fprof <- getFirefoxProfile("myprofile.default")
remDr <- remoteDriver(
remoteServerAddr = "localhost",
port = 4444L,
browserName = "firefox",
extraCapabilities = fprof
)
确实有效。