如何在 Selenium Python 中更改 FireFox 的远程控制器?

How can I change remote controller of FireFox in Selenium Python?

当我通过 Selenium 加载 FireFox 时,我的浏览器在远程控制器下,并且机器人图像显示在我浏览器的 URL 部分。为了解决这个问题,我通过以下代码更改了 User-Agent:

from selenium import webdriver
profile = webdriver.FirefoxProfile()
profile.set_preference("general.useragent.override", "whatever you want")
driver = webdriver.Firefox(profile)

User-Agent 已成功更改,但我的浏览器 URL 部分中的机器人图像仍然存在。 请你帮帮我好吗? 我用这个 URL 来改变 User-Agent:

我的整个代码是:

MainLink="https://blog.feedspot.com/iot_blogs/"
from selenium import webdriver
from selenium.webdriver.common.desired_capabilities import DesiredCapabilities

caps = DesiredCapabilities.PHANTOMJS

caps["phantomjs.page.settings.userAgent"] = "whatever you want"
driver = webdriver.Firefox()
from selenium import webdriver
profile = webdriver.FirefoxProfile()
profile.set_preference("general.useragent.override", "whatever you want")
driver = webdriver.Firefox(profile)
agent = driver.execute_script("return navigator.userAgent")
print(agent)
driver.get(MainLink)

您的代码有点混乱。您不需要同时使用 phantomjs 和 firefox 作为 selenium 的驱动程序。你打算用哪一个?

据我了解,您希望避免被您正在交互的页面检测到。如果您使用 无头浏览器 ,这通常是一个更大的问题模式,这显然是你的情况。

如果您确实遇到了这种性质的问题,有很多方法可以尝试缓解这种情况,从您提到的更改用户代理开始。假设您想使用 firefox,代码示例为:

from selenium import webdriver

profile = webdriver.FirefoxProfile()
user_agent = 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/35.0.1916.47 Safari/537.36'


profile.set_preference("general.useragent.override", user_agent)
driver = webdriver.Firefox(profile)
MainLink="https://blog.feedspot.com/iot_blogs/"

driver.get(MainLink)

此外,您可以在每次发出请求时设置不同的用户代理,结合更改发出请求的 ip 地址,当然,但这不是重点...

希望这对您有所帮助...

我可以 运行 我的代码无需加载页面或以无头方式(无头浏览器)。 从硒导入 webdriver

from selenium.webdriver.firefox.options import Options
options = Options()
options.add_argument("--headless")
driver = webdriver.Firefox(firefox_options=options)
print("Firefox Headless Browser Invoked")
driver.get('https://blog.feedspot.com/iot_blogs/')

s=driver.find_element_by_xpath("""/html/body/div[1]/div[2]/div/div/div[1]/article/div[1]/h1""")
print(s.text)

根据你想"deep"的方式,你还可以添加从受信任的客户端复制的 cookie:

from selenium import webdriver

driver = webdriver.Chrome()

driver.get("http://www.example.com")

# Adds the cookie into current browser context
driver.add_cookie({"name": "key", "value": "value"})

另请参阅:https://www.selenium.dev/documentation/en/support_packages/working_with_cookies/