您的位置:首页 > 娱乐 > 明星 > 企业推广的成功_自己怎么设计logo制作_如何找到网络公关公司_企业做推广有几种方式

企业推广的成功_自己怎么设计logo制作_如何找到网络公关公司_企业做推广有几种方式

2024/12/21 20:07:00 来源:https://blog.csdn.net/steamedobun/article/details/144365056  浏览:    关键词:企业推广的成功_自己怎么设计logo制作_如何找到网络公关公司_企业做推广有几种方式
企业推广的成功_自己怎么设计logo制作_如何找到网络公关公司_企业做推广有几种方式

目录

FingerprintJS 原理概述

Selenium 基础与应对思路

代码实现

实战(结合Selenium 和 Undetected Chromedriver绕过FingerprintJS)

Canvas指纹随机化


FingerprintJS 原理概述

FingerprintJS 主要通过收集浏览器的各种特征信息来生成独一无二的指纹,这些信息包括但不限于:

  1. 浏览器版本信息:不同浏览器版本在处理网页元素、执行 JavaScript 等方面可能存在细微差异,这些差异成为指纹的一部分。
  2. 操作系统信息:操作系统的类型、版本等会影响浏览器的行为和一些底层功能的表现,例如字体渲染、系统默认设置等。
  3. 屏幕分辨率与颜色深度:独特的屏幕显示设置可以帮助识别特定的设备或浏览器环境。
  4. 浏览器插件列表:安装的各种插件及其版本,每个插件都可能对浏览器的功能和网络请求产生影响。
  5. 时区设置:反映了用户所在的地理位置信息。
  6. 语言设置:浏览器所使用的语言偏好。

通过综合这些多维度的信息,FingerprintJS 能够生成一个高度独特的指纹,用于识别和跟踪用户(或爬虫)的身份,即使在使用代理、清除 cookie 等常规反追踪手段的情况下,仍然能够准确地识别出同一来源的访问。

Selenium 基础与应对思路

Selenium 是一个强大的自动化测试工具,它可以模拟用户在浏览器中的各种操作,如点击、输入、浏览页面等。在应对 FingerprintJS 反爬时,我们的核心思路是利用 Selenium 来操控浏览器,对浏览器的指纹相关信息进行伪装或干扰,使网站无法准确识别出我们的爬虫身份。

代码实现

去除webdriver特征

from selenium.webdriver import ChromeOptions  from selenium import webdriver  option = ChromeOptions()  option.add_experimental_option('excludeSwitches', ['enable-automation'])  option.add_argument('--disable-blink-features=AutomationControlled')  driver = webdriver.Chrome(options=option)driver.get("https://www.example.com")

使用Undetected_chromedriver

import undetected_chromedriver as uc  driver = uc.Chrome(use_subprocess=True)  driver.get("https://www.example.com")

实战(结合Selenium 和 Undetected Chromedriver绕过FingerprintJS

import undetected_chromedriver as uc  from selenium.webdriver.common.by import By  from selenium.webdriver.support.ui import WebDriverWait  from selenium.webdriver.support import expected_conditions as EC  def fetch_website_data(url):  # 初始化Undetected Chromedriver  driver = uc.Chrome(use_subprocess=True)  try:  # 打开网页  driver.get(url)  # 等待页面加载完成(可选,根据实际情况调整)  WebDriverWait(driver, 10).until(  EC.presence_of_element_located((By.ID, "some-element-id"))  )  # 假设我们需要抓取某个元素的文本内容  element = driver.find_element(By.ID, "some-element-id")  data = element.text  print(data)  finally:  # 关闭浏览器  driver.quit()  # 调用函数  fetch_website_data("https://www.example.com")

Canvas指纹随机化

# 在Selenium中注入JavaScript代码  canvas_randomizer_script = """  var oldDrawImage = CanvasRenderingContext2D.prototype.drawImage;  CanvasRenderingContext2D.prototype.drawImage = function(image, sx, sy, sWidth, sHeight, dx, dy, dWidth, dHeight) {  // 在这里添加一些随机化逻辑,比如随机修改图像的颜色或像素// 注意:这只是一个示例,实际实现需要详细分析Canvas的使用情况  // 调用原始的drawImage方法  oldDrawImage.apply(this, arguments);  };  """  driver.execute_script(canvas_randomizer_script)

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com