0

下面找到解决方案!!

我正在尝试使用 uc.ChromeOptions() 来做一些 options.add_argument() 来更改我的 Selenium 机器人的用户代理以及其他一些东西。但是,根据我从https://httpbin.org/anything获得的页面源,我的用户代理没有更改,并且与我的 google chrome 浏览器的用户代理相同。此外,当我的驱动程序第一次加载时,有 3 个选项卡,一个以用户代理作为 url,一个以“http://disable-notifications/”(后来变成正确的 url https://httpbin. org/anything),一个带有“disable-popup-blocking/”。uc.ChromeOptions() 在我的情况下显然不起作用......

有人可以指出我错在哪里以及如何解决这个问题吗?非常感谢。下面是我的代码:

from fake_useragent import UserAgent
import undetected_chromedriver as uc

if __name__ == "__main__":
    opts = uc.ChromeOptions()
    ua = UserAgent()
    #add fake user agent to my driver
    opts.add_argument(str(ua['google chrome']))
    # block pop-up and notifications:
    opts.add_argument("disable-popup-blocking")
    opts.add_argument("disable-notifications")

    driver = uc.Chrome(version_main=98, options=opts)

    driver.get("https://httpbin.org/anything ")

    print(driver.page_source)

4

1 回答 1

1

回答:

“使用实际的命令行开关来更改用户代理。命令行开关都以 -- 开头,否则它们将被解释为 url。”

from fake_useragent import UserAgent
import undetected_chromedriver as uc

if __name__ == "__main__":
    ua = UserAgent()
    wanted_user_agent = ua["google chrome"]
    print(f"{wanted_user_agent=}")

    options = uc.ChromeOptions()
    options.add_argument(f"--user-agent={wanted_user_agent}")
    options.add_argument("--disable-popup-blocking")
    options.add_argument("--disable-notifications")
    driver = uc.Chrome(options=options)

    driver.get("https://httpbin.org/anything")

    # it works !
    actual_user_agent = driver.execute_script("return navigator.userAgent")
    print(f"{actual_user_agent=}")

于 2022-03-06T04:10:12.107 回答