0

我正在使用 Selenium 和 firefox 进行一些无头测试以登录某个网站。如果我在同一浏览器中的不同 Firefox 配置文件之间切换以登录网站上的不同帐户,除了 IP 跟踪之外,还有什么方法可以跟踪我的连接并找出它们都在同一台机器上(运行 Selenium 脚本的机器)?

我在做什么:

profile = webdriver.FirefoxProfile('path/to/profile1')
driver = webdriver.Firefox(profile)
driver.get("website.com")
#connect as user1 on website & do stuff...
driver.quit()

profile = webdriver.FirefoxProfile('path/to/profile2')
driver = webdriver.Firefox(profile)
driver.get("website.com")
#connect as user2 on website & do stuff...
driver.quit()

编辑:换句话说,给定上面的代码并排除 IP 跟踪,website.com 可以确定帐户 user1 和 user2 实际上在同一台机器上(因此一个人有 2 个帐户)?

4

1 回答 1

0

多个 Firefox 配置文件

Firefox 中的配置文件是用户在其 Firefox 副本中制作或安装的设置、自定义、附加组件和其他个性化设置的集合。

拥有多个个人资料的原因

临时用户可能希望为不同的家庭成员提供不同的简档。拥有不同的个人资料将允许每个人拥有他或她自己的一组书签、设置和附加组件。

Web 开发人员可能需要辅助配置文件来测试不同 Firefox 频道上的网站、应用程序或其他项目。例如,您可能希望为 Web 开发安装一些扩展,但不希望为通用 Web 浏览安装一些扩展。

对于 QA、测试和错误分类贡献者,您可能希望安装 Firefox 的多个开发版本,每个版本都有自己的配置文件。为测试创建新的配置文件可以防止您丢失您的偏好书签历史记录。设置新配置文件需要很短的时间,一旦完成,您的所有 Firefox 版本都将单独更新并可以同时运行。

打破神话

因此可以同时运行具有多个Firefox 配置文件的多个 Firefox浏览器客户端实例。所以你的假设......如果我在同一个浏览器中的不同 Firefox 配置文件之间切换以登录到不同的帐户......是不正确的。Web Browsing Client变体可能相同,即Firefox ,但它们中的每一个都将继承不同的首选项书签历史记录集。


用户代理

您的用户代理会告诉您访问的每个站点您使用的是什么浏览器。如果需要,站点能够检测到您的 UA 并重定向到更适合您的浏览器的页面。换句话说,如果您通过手机访问具有此检测功能的站点,该站点可能会通过 UA 检测到您是移动用户,并在可用时将您重定向到他们的移动站点。这不适用于所有站点,因为并非所有站点都有 UA 检测。

UA 还会告诉您正在访问的站点,您可能已经安装了一些与浏览器相关的软件。例如,这个 UA:

(Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0; Trident/4.0; GTB6; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) ; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; InfoPath.2; .NET CLR 3.5.21022; .NET CLR 1.1.4322; .NET CLR 3.5.30729; OfficeLiveConnector.1.3; OfficeLivePatch.0.0;) 

告诉我们访客正在使用 Internet Explorer 8、Windows Vista,安装了 Media Center PC 5.0、Office Live Connector 等。因此,如果我们为 Vista 用户设置了一个特殊部分,我们可以根据 Windows NT 6.0 字符串重定向此人转到我们网站中与 Vista 严格相关的子部分。另一方面,这个用户代理:

Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.9.1.3) Gecko/20090824 Firefox/3.5.3 

告诉我们访问者正在使用 FireFox 3.5.3 和 Windows Vista。别的不多。

有了上面的知识,许多不希望人们知道他们如何访问站点的程序员使用用户代理欺骗。一些程序员会找到合法的 UA 并编写他们的脚本以使用此类 UA。UA 可以是空白的,也可以包含自定义信息,例如可能宣传特定浏览器或脚本的站点的 URL。


更新

根据您的问题更新...可以 website.com 确定帐户 user1 和 user2 实际上在同一台机器上...我不确定用户代理是否带有浏览器配置文件信息。然而,基于不同的用户代理,可以提取不同的参数。例如,对于用户代理字符串,例如:

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

不同的 User-Agent检测库认为如下:

  • 根据用户代理v2.1.9:

    • UA

      rawUa: Mozilla/5.0 (Windows NT 6.2; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.102 Safari/537.36
      string:
      family: Chrome
      major: 70
      minor: 0
      patch: 3538
      device: Other 0.0.0
      
    • 操作系统

      string: Windows 8 0.0.0
      family: Windows 8
      major: 0
      minor: 0
      patch: 0
      
  • 根据ua-parser-js v0.7.11:

    • UA

      ua: Mozilla/5.0 (Windows NT 6.2; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.102 Safari/537.36
      
    • 浏览器

      name: Chrome
      version: 70.0.3538.102
      major: 70
      
    • 引擎

      name: WebKit
      version: 537.36
      
    • 操作系统

      name: Windows
      version: 8
      
    • 设备

      model: undefined
      vendor: undefined
      type: undefined
      
    • 中央处理器

      architecture: amd64
      
  • 根据platform.js v1.3.3:

    • UA

      name: Chrome
      version: 70.0.3538.102
      layout: Blink
      
    • 操作系统

      os: Windows 8 64-bit
      
    • 设备

      product:
      manufacturer:
      description: Chrome 70.0.3538.102 on Windows 8 64-bit
      
于 2018-11-15T10:34:43.940 回答