ja3指纹 笔记

news2024/11/15 5:34:44

通过给openssl和nginx打补丁获取ja3指纹:

https://github.com/phuslu/nginx-ssl-fingerprint
在这里插入图片描述

这个项目算出来的ja3指纹和wireshark的不完全一致,wireshark后面的是“-21,29-23-24,0”, 小小不同,👀。。

通过wireshark查看ja3指纹

ssl.handshake.type == 1过滤出 Client Hello
在这里插入图片描述

如何绕过 JA3 指纹校验?
https://cn-sec.com/archives/1358869.html

【粉丝投稿】Aiohttp 与 Scrapy 如何绕过 JA3指纹反爬机制
https://mp.weixin.qq.com/s/tuZScT0qVwPl6bQewqz0zg

【粉丝投稿】scrapy 如何突破 ja3指纹
https://mp.weixin.qq.com/s/Zi26P1bAO85jOlEmSAZRgg

middlewares.py

import random
from scrapy.core.downloader.handlers.http import HTTPDownloadHandler
from scrapy.core.downloader.contextfactory import ScrapyClientContextFactory
ORIGIN_CIPHERS = 'TLS13-AES-256-GCM-SHA384:TLS13-CHACHA20-POLY1305-SHA256:TLS13-AES-128-GCM-SHA256:ECDH+AESGCM:ECDH+CHACHA20:DH+AESGCM:DH+CHACHA20:ECDH+AES256:DH+AES256:ECDH+AES128:DH+AES:RSA+AESGCM:RSA+AES'
def shuffle_ciphers():
    ciphers = ORIGIN_CIPHERS.split(":")
    random.shuffle(ciphers)
    ciphers = ":".join(ciphers)
    return ciphers + ":!aNULL:!MD5:!DSS"


class MyHTTPDownloadHandler(HTTPDownloadHandler):
    def download_request(self, request, spider):
        tls_cliphers = shuffle_ciphers()
        self._contextFactory = ScrapyClientContextFactory(tls_ciphers=tls_cliphers)
        return super().download_request(request, spider)


settings.py

XIGUA_APP["DOWNLOAD_HANDLERS"].update({
        "https": "crawler.toutiao_luban.middlewares.MyHTTPDownloadHandler",
        "http": "crawler.toutiao_luban.middlewares.MyHTTPDownloadHandler",
    }
)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/83403.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Selenium Grid 分布式 | 介绍与实战

一. 介绍 Selenium 包含 3 大组件,分别是:Selenium IDE、Selenium WebDriver、Selenium Grid 其中,Selenium IDE 负责录制、回放脚本,模拟用户对页面的真实操作 Selenium WebDriver 提供 API 来操作浏览器,比如&…

vue面试考察知识点全梳理

一、简介 vue几个核心思想: 数据驱动组件化虚拟dom、diff局部最优更新 源码目录介绍 Vue.js 的源码在 src 目录下,其目录结构如下。 src ├── compiler # 编译相关 ├── core # 核心代码 ├── platforms # 不同平台…

速度百倍提升,高性能 Python 编译器 Codon 火了

众所周知,Python 是一门简单易学、具有强大功能的编程语言,在各种用户使用统计榜单中总是名列前茅。相应地,围绕 Python,研究者开发了各种便捷工具,以更好的服务于这门语言。 编译器充当着高级语言与机器之间的翻译官…

4.19 Cadence Allegro软件中应该如何按照系统模板去创建PCB封装?异形表贴焊盘应该如何创建?

笔者电子信息专业硕士毕业,获得过多次电子设计大赛、大学生智能车、数学建模国奖,现就职于南京某半导体芯片公司,从事硬件研发,电路设计研究。对于学电子的小伙伴,深知入门的不易,特开次博客交流分享经验&a…

js常用函数

一、特常用函数以及功能解释(建议掌握) 1、alert()函数:显示一个警告对话,如: alert(1111) 2、eval()函数:计算表达式的结果,如: alert(eval(11)) 3、confirm()函数:显…

3 面蚂蚁,一路过关斩将 成功拿到 offer 定级 P6,大厂面试雀食有点难

线上服务 CPU 很高该怎么做&#xff1f;有哪些措施可以找到问题 JDK 中有哪几个线程池&#xff1f;顺带把线程池讲了个遍 应尽量避免在 where 子句中使用!或<>操作符&#xff0c;否则将引擎放弃使用索引而进行全表扫描 SQL 索引的顺序&#xff0c;字段的顺序 查看 SQ…

缓存一致性解决方案

文章目录常见的缓存一致性解决方案双写模式失效模式两种模式的总结上述模式的改进常见的缓存一致性解决方案 这里的缓存一致性其实就是缓存中的数据和数据库中的数据如何保持一致. 这个问题根据具体的业务场景和需要解决起来略有差异,但是总体看以分为两类,双写模式和失效模…

C-Frost安装及Cassie计算样例

本文运行环境为&#xff1a;Matlab2021b/Mathematic 13/Ubuntu18.04 matlab安装mathematic安装 一、 C-Frost安装 1、安装ipopt 安装参考 2、执行NLP例子验证是否安装成功 官方步骤 1&#xff09;修改create_problem.m文件中的 FROST_PATH路径 2&#xff09;修改CMakeL…

写代码时记录的小技巧

本文是记录自己写代码时候遇到的一些感觉比较有用/有意思的技巧&#xff0c;怕自己忘了记录一下。如果有想要分享的思路/纠正改进的地方欢迎交流。 如何输出结果 (Verbose Trick) 有关类的输出 1. 如果想在**模型的 forward 中输出相关变量**&#xff0c;但又不希望反复输出影…

Oracle如何删除归档日志文件?

Oracle如何删除归档日志文件&#xff1f; Oracle启用归档日志的状态下&#xff0c;会在指定的归档日志目录生成大量的日志文件&#xff0c;而且这些日志文件默认是不会定期清理。长时间运行下&#xff0c;会占用大量的存储空间&#xff0c;最终可能导致Oracle没有足够的空间维持…

Linux集成环境部署tomcat+Linux

Linux环境部署 tomcat redisTomcat 安装配置Redis安装配置Tomcat 安装配置 下载tomcat安装包&#xff0c;将安装包上传至自己的linux服务器中&#xff0c;将安装包传到linxu环境中的/usr/local/tomcat下&#xff0c;使用tar -xvf 命令解压 2. 进入到bin目录下&#xff0c;给所…

Allegro如何查找和高亮PAD Stack类型操作指导

Allegro如何查找和高亮PAD Stack类型操作指导 Allegro可以在板子上查找并且高亮PAD的类型,查找的范围包括器件的pad,以及过孔的pad,具体操作如下 用Allegro的was performance L模式下,并且勾选Allegro Productivity Toolbox选项 选择Tools-padstack finder 会出现padsta…

数字图像处理 - 图像采样和量化

1、 目标 获取图像的方法有很多种&#xff0c;但最终的目标是一致的&#xff1a;从传感数据生成数字图像。大多数传感器的输出是连续的电压波形&#xff0c;其幅度和空间行为与被感测的物理现象有关。要创建数字图像&#xff0c;我们需要将连续感测数据转换为数字格式。这就需要…

扩散模型的源码学习diffusion_model

1.diffusion_model有几个主要的部分&#xff0c; &#xff08;1&#xff09;Unet&#xff0c;主干网络。 &#xff08;2&#xff09;GaussianDiffusion&#xff0c;也就是主要的训练策略。 2. 生成一个测试用的tensor来进行实验。 3.进入到高斯模型的内部&#xff0c;发现…

(六) Redis缓存读写策略

一 引言 缓存的引入后极大的提高了服务器的访问速率,但是当持久化数据发生变化时,如何更新缓存成为了研发中不可规避的问题,不同的方案决定缓存的最终的一致性,本文就redis的缓存读写策略,以及其他的缓存读写策略做简要概述 二 Cache Aside Pattern&#xff08;旁路缓存模式&…

Vue学习:键盘事件

input表单占位符-显示输入先的提示文本-placeholder属性 键盘事件keydown——按下 不需要松手 keyup&#xff1a;按下松手 根据按键编码进行判断 --输出event上有一个属性-keyCode -按键编码--回车13 <!-- 准备容器 --><div idroot> <input type"text&quo…

Docker安装和使用

一&#xff1a;docker安装 链接: https://pan.baidu.com/s/1A1g7rSOMoV4__Me_zJoB3Q?pwd6bqi 提取码: 6bqi 复制这段内容后打开百度网盘手机App&#xff0c;操作更方便哦 --来自百度网盘超级会员v4的分享。 二&#xff1a;docker使用 1.docker和虚拟机的区别&#xff1a; …

Word文档如何设置成不可编辑的模式?

把Word文档设置成“不可编辑模式”&#xff0c;也就是“限制编辑”&#xff0c;可以防止意外更改文档内容&#xff1b;对于只想给他人读阅&#xff0c;禁止复制和更改的情况&#xff0c;也能起到一定的保护作用。 Word文档里自带设置限制保护的选项&#xff0c;在菜单中选择【…

【Uni-App】uniapp使用uview实现弹出键盘输入密码/验证码功能

目录&#xff08;一&#xff09;效果图&#xff08;二&#xff09;使用组件说明keyboard属性&#xff1a;keyboard事件&#xff1a;&#xff08;五&#xff09;js代码实现&#xff08;一&#xff09;效果图 &#xff08;二&#xff09;使用组件说明 组件使用的是uview组件&…

MATLB|多微电网及分布式能源交易

目录 一、概述 二、数学模型 三、结果可视化 四、Matlab代码实现 一、概述 在人类、工业和电动汽车的能源需求的推动下&#xff0c;全球能源需求预计将在未来几年稳步增长&#xff1b;更准确地说&#xff0c;预计到 2030 年增长将达到 40%。这种需求是由人类日益依赖能源的…