当前位置: 首页 > news >正文

什么是浏览器标识?

浏览器标识

层面一:网络层指纹 (HTTP/TLS)

这是最基础的指纹,即使不用浏览器,只用Go的 net/http 发请求也会留下。

  1. HTTP Headers (请求头):

    • User-Agent: 最著名的标识,声明自己是什么浏览器。很容易伪造,但也很容易被识破(比如你的其他头信息和这个UA对不上)。
    • Accept-*: Accept, Accept-Language, Accept-Encoding 等。不同浏览器、不同版本的默认值和顺序都可能不同。
    • Sec-Ch-Ua (Client Hints): 这是非常、非常关键的新一代标识。它详细描述了浏览器品牌、版本、平台等信息,比如 Sec-Ch-Ua: "Not/A)Brand";v="99", "Google Chrome";v="121", "Chromium";v="121"。如果你只伪造了User-Agent而没有这个头,几乎立刻就会被识破。
  2. TLS/SSL 指纹 (JA3/JA3S):

    • 当你和网站建立HTTPS连接时,你的客户端(浏览器或Go程序)会告诉服务器它支持哪些加密算法、扩展等。这些信息的组合会形成一个独特的哈希值,即JA3指纹。
    • Go程序的默认JA3指纹和Chrome浏览器的完全不同。这是高级反爬虫系统识别非浏览器请求的“杀手锏”
层面二:浏览器环境指纹 (JavaScript)

这是最致命的指纹,只有在能够执行JavaScript的真实浏览器环境中才能获取。网站会运行一段JS代码来采集这些信息。

  1. navigator.webdriver:

    • 这是最常见、最简单的检测方法! 当浏览器被自动化工具(如Selenium、Puppeteer、chromedp)控制时,这个JS变量的值会是 true。普通用户访问时,这个值是 falseundefined。网站只要检查 if (navigator.webdriver) 就能抓到大部分初级爬虫。
  2. Canvas 指纹:

    • 网站会命令你的浏览器在后台画一幅看不见的图像,然后读取这幅图像的像素数据并生成一个哈希值。由于操作系统、显卡、字体渲染等细微差别,不同电脑生成的哈希值几乎都是独一无二的。这是一个非常强大的、用于识别独立用户的指纹。
  3. WebGL 指纹:

    • 与Canvas类似,但利用3D图形API (WebGL) 来获取更详细的显卡、驱动等信息,指纹更精确。
  4. 字体指纹 (Fonts):

    • 通过JS检测你的电脑上安装了哪些字体。不同用户安装的字体列表不同,可以作为标识之一。
  5. 浏览器特性检测:

    • 检查是否存在特定的浏览器API、navigator对象的属性 (platform, vendor, plugins.length)、屏幕分辨率 (screen.width, screen.height)、时区等。
层面三:行为指纹
  1. 鼠标轨迹: 真人用户移动鼠标是有特定轨迹和速度的,而自动化程序通常是瞬移。
  2. 点击位置: 真人点击按钮时,位置通常在按钮中心附近,而程序可以精确点击(0,0)像素点。
  3. 交互时间: 自动化程序在页面间的跳转、输入速度都快得不正常。

无头浏览器

没有图形用户界面、在后台运行的完整浏览器,可以用编程代码控制

可以访问网址、加载网页、执行JavaScript、点击按钮、填写表单,甚至可以“看到”网页渲染后的样子。

没有用户界面 (UI),看不到窗口。它在后台默默运行,像一个看不见的幽灵。

http://www.dtcms.com/a/324726.html

相关文章:

  • 【Docker进阶实战】从多容器编排到集群部署
  • TSF应用开发与运维部署
  • 个人笔记Mybatis2
  • 医学统计(现况调查的统计分析策略1)
  • 电脑使用“碎片整理”程序的作用
  • 基于ECharts的智慧社区数据可视化
  • 【npm、yarn、pnpm】特点对比,按需选择
  • Java设计模式之开闭原则介绍与说明
  • 【RocketMQ 生产者和消费者】- ConsumeMessageOrderlyService 顺序消费消息
  • Vue.js设计于实现 - 概览(二)
  • 跑酷小游戏2.0
  • C语言(长期更新)第10讲:操作符详解(二)
  • 麻溜启动Oracle实例demo
  • 【渲染流水线】[几何阶段]-[归一化NDC]以UnityURP为例
  • 基于Spring Boot和WebSocket的实时聊天系统
  • Openlayers基础教程|从前端框架到GIS开发系列课程(21)geojson实现线要素和区要素
  • git merge的原理和过程,merge conflict产生的原因、处理的逻辑
  • 【话题讨论】GPT-5 发布全解读:参数升级、长上下文与多领域能力提升
  • MCP学习与实践
  • ESP32安装于配置
  • [激光原理与应用-216]:设计 - 皮秒紫外激光器 - 热管理设计,多维策略保障高效稳定运行
  • 腾讯云EdgeOne Pages深度使用指南
  • 计算机网络:什么是AD域
  • 线程的sleep、wait、join、yield如何使用?
  • 随想记——excel报表
  • XGBoost参数evals的作用及使用方法
  • 【图像算法 - 11】基于深度学习 YOLO 与 ByteTrack 的目标检测与多目标跟踪系统(系统设计 + 算法实现 + 代码详解 + 扩展调优)
  • 什么是缓存击穿、缓存穿透、缓存雪崩及其解决方案
  • Oracle lgwr触发条件
  • Docker 容器化工具及常用操作