代码之家  ›  专栏  ›  技术社区  ›  Heartthrob_Rob

如何使用Selenium更改显示的操作系统?

  •  0
  • Heartthrob_Rob  · 技术社区  · 5 年前

    我正在构建一个机器人,它将根据我选择的随机用户代理来改变它的外观。我从用户代理列表中提取,根据所选的代理,更改Web驱动程序的功能,然后启动它。

    然而,我正在使用 https://ipleak.net/ 为了测试,无论我运行这段代码多少次,我真正的操作系统仍然会显示出来(而不是所谓的欺骗版本)。下面的相关代码,仅供参考,真正的操作系统=MacIntel

    desired_caps = DesiredCapabilities.CHROME.copy()
    desired_caps['platform'] = user_agent_os
    
    browser = webdriver.Chrome(options=options, desired_capabilities=desired_caps)
    browser.get("https://ipleak.net/")
    

    可能的值 user_agent_os =“ios”、“windows”、“andriod”、“---”、“symbian”、“macos”、“linux”和其他一些。每次程序运行时,该值都是随机的。

    0 回复  |  直到 5 年前
        1
  •  2
  •   undetected Selenium    5 年前

    这个 平台 属性可以从中提取 WebDriver navigator .

    您可以使用以下代码行提取 navigator.platform 在我的 系统:

    • 代码块:

      print("platform: "+driver.execute_script("return navigator.platform;"))
      
    • 控制台输出:

      platform: Win32
      

    可能的值 Navigator platform Property 是:

    • Mac68K
    • MacPPC
    • MacIntel
    • Linux i686
    • Linux armv7l
    • Win32
    • Win16
    • WinCE
    • SunOS
    • HP-UX

    另一方面, UserAgent navigator.userAgent 包含a 信息如下:

    • 代码块:

      print("userAgent: "+driver.execute_script("return navigator.userAgent;"))
      
    • 控制台输出:

      userAgent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.116 Safari/537.36
      

    解决方案

    改变现状的唯一方法 内部信息 UserAgent 是旋转 用户代理 使用Python fake_useragent 模块。

    from selenium import webdriver
    from selenium.webdriver.chrome.options import Options
    from fake_useragent import UserAgent
    
    options = Options()
    ua = UserAgent()
    options.add_argument(f'user-agent={ua.random}')
    driver = webdriver.Chrome(chrome_options=options, executable_path=r'C:\WebDrivers\chromedriver.exe')
    print("userAgent: "+driver.execute_script("return navigator.userAgent;"))
    driver.quit()
    

    连续3次执行的结果如下:

    1. 首次执行:

      userAgent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:21.0) Gecko/20130331 Firefox/21.0
      
    2. 第二次执行:

      userAgent: Mozilla/5.0 (Windows NT 6.1; WOW64; Trident/7.0; AS; rv:11.0) like Gecko
      
    3. 第三次执行:

      userAgent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2227.0 Safari/537.36
      

    火狐

    from selenium import webdriver
    from fake_useragent import UserAgent
    
    useragent = UserAgent()
    profile = webdriver.FirefoxProfile()
    profile.set_preference("general.useragent.override", useragent.random)
    driver = webdriver.Firefox(firefox_profile=profile, executable_path=r'C:\WebDrivers\\geckodriver.exe')
    print("userAgent: "+driver.execute_script("return navigator.userAgent;"))
    driver.quit()
    

    连续3次执行的结果如下:

    1. 首次执行:

      userAgent: Mozilla/5.0 (Windows NT 5.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/34.0.1847.116 Safari/537.36 Mozilla/5.0 (iPad; U; CPU OS 3_2 like Mac OS X; en-us) AppleWebKit/531.21.10 (KHTML, like Gecko) Version/4.0.4 Mobile/7B334b Safari/531.21.10
      
    2. 第二次执行:

      userAgent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_2) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1309.0 Safari/537.17
      
    3. 第三次执行:

      userAgent: Mozilla/5.0 (Windows NT 6.2; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/32.0.1667.0 Safari/537.36
      

    太长,读不下去了

    你可以找到一些关于改变现状的相关讨论 字符串 在飞行中: