【那些反爬和反反爬】JA3指纹

简介: 【那些反爬和反反爬】JA3指纹

requests库请求某小说网站:

import requests
url = "mark一下"
headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/116.0.0.0 Safari/537.36 Edg/116.0.1938.81',
    'Referer': 'mark一下'
}
sess = requests.Session()
resp = sess.get(url, headers=headers)
print(resp)
print(resp.text)

报错:

<Response [403]>
<!DOCTYPE html><html lang="en-US"><head><title>Just a moment...</title><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=Edge"><meta name="robots" content="noindex,nofollow"><meta name="viewport" content="width=device-width,initial-scale=1"><link href="/cdn-cgi/styles/challenges.css" rel="stylesheet"></head><body class="no-js"><div class="main-wrapper" role="main"><div class="main-content"><noscript><div id="challenge-error-title"><div class="h2"><span class="icon-wrapper"><div class="heading-icon warning-icon"></div></span><span id="challenge-error-text">Enable JavaScript and cookies to continue</span></div></div></noscript></div></div><script>(function(){window._cf_chl_opt={cvId: '2',cZone: "www.beqege.com",cType: 'managed',cNounce: '61665',cRay: '806eb7ea5a9823e7',cHash: '7d18640ffcd5900',cUPMDTk: "\/?__cf_chl_tk=TLS8hS8609oDXpvjWaGInhKbUU0FD8pAYGydVnq5Fa4-1694758350-0-gaNycGzNC1A",cFPWv: 'g',cTTimeMs: '1000',cMTimeMs: '0',cTplV: 5,cTplB: 'cf',cK: "visitor-time",fa: "\/?__cf_chl_f_tk=TLS8hS8609oDXpvjWaGInhKbUU0FD8pAYGydVnq5Fa4-1694758350-0-gaNycGzNC1A",md: "ze4P_s0YNvx6EbGkb2pleOaUnAd08jX_l1zcG8S1qDE-1694758350-0-AYRdt8Z41miFDroGBltr08Q-9VVlwFQVXGevmSdVdWI8n0FJk8g3Rob8XI_1PcANiXKVuXuQlW7_dB1y7uGreckLoSTU440GI5X6WRbPyrNukjRWwOlBI5gTN1niKBAfaEGQUkRd04984HAEmepexaOA5Ju9pK2PhFKDiczyht4SDSAM9kBKC3BkyxIV378ZsPyNwnAB10T_YOEAj45NAt5_R88DY99N0LK9rh4ZIqYZPu-gqKSxDfIIDr6r5K1qb63DGD45UzrZuNAlPKMx_p_SCuQv9f0phzdKfy5pcEQp22AxFPrqL2xLS4TNKU3u3m4KpyI_6hgAi3AbWtGzxHUfxEg5XwZUPP5eOd8bsGlV6w1_NsSfElIyiw9IayC7W7qfaxbrmmLKz0tW-CW6uvhK9Neruc_0BcB1Gds7R0W8jzc8GmWHKgzvB4GVZRKNYbX5NBtMZoLZufmpWFECIE4yeykhLeZht4Q96Mw0U17yohOH5cHJ_LcPlusPsScZ_MKtJx45fmUZ8mA0nsQXrxLymdZ4q1GHbmrpJjKdTiNgmgEQsYdOrVPo-uTjyVcH2GVLX-xQVeJIFIOybjs9CrEgcothrzlDWWyUQ32DJuv7sjc8GQ5dG19lCg4oOCvaBEa9GZ9lh22Tc1Alf7FGRzqQYA1G1lJhE98_Krsf-xJY73I9PZf-b4wHmBSMLlczS6BTUWaP5PI7CfMpPQhT8FfeiQdoo7EMe--G_2CNJnTeHOCnGhasI1SACdCqmOJIaX0BDlTNShyoHxhIo-YH7P9uKRkmMpSExb19osxERGPUL-IQ-0RNu9Fs-h5iba7Qemk2AIrR5OgmM8vzMKUWkil0cL_fpEzFjZTjs4KVZC9dxNvkZfSmL84doLhFAtLhoNHi6QO1Pt1LBF22Vv7op4ftTvBSaclttJUMfdYD5KRhwzq4A3o2R5xJy8AWqUx8BfDrkfm2ZzD2XjQBBZeL2Fu9sSk6ZW9urgZXZswTKt-N259LjY0UvZW7eDWdrBdhmX7dj8SxzPrYylshyKdMUktOCI9FqnETuqzm3ExYlqzqrTbpF6xH_6tXrzv64VUb4Nfud7Et9ZhAn3Q7UPL8YsFjHwVWgJ3-hp3ORmtShjYzRfL2K6c8nVHFCFOrc5-Do_FfBO-B6Ayth__xVbXWN4VJpjb0W6LLa-SDq5rCNrpKkK5ZZwjaq8mRppSRCUR0BuQbTWHteWL3tqtAbtluO-UrWU8ytBanjqucJYHqUncUXJdJq90vYy7J46jSSZrhLDmKNb9vpdKJD-VCy9lvS93FQPgJmB9r7WS5F_F4pPEd-X3An6NpKCHQPOh1eGpEBThoAbx-YZ3BUNTbIv6CdksMhNh9lP0UhtvU-nfEpJMdpkt8jo2guyKfglhnZxoRtVFXdH1RaKRQKaaFcDubHHuBAm6AokjE3ve6DPyGoLPt3EkKAN5EH4Z7CelSVtBkhe_2uUgXg0dDP41x7ktA9nV55ZDetyDA5SzwWu3E6C5UtQf2ikDstyKXj0hwv6jMFqspzJojSzVymO97-mmLZy3X0HCwDjIZrXSUXzGwuNQsUFU-70LFCFKob_UgtsuBi-rTceGtpRh99Mv-AxZtJE-Kx5N38or9pbTeQ0n47eeYbGdNmmc0WU5tNlATpGONShTfYr6QWmgUnsjmSoSreLI92WN5bmXngxtkUYhDVh1LsdYyvDnp3LZowXEtbYyGTp1xFqVViOYkOkccpnwQAYfPStmZCP4ZkCebd5WFpyjxC9G3SobpqSZhD7-odOr3h4hN4vbTbqxzx4KKJcbrNuhBTtBlNGyKOZP7vqH7Tu6hDtq0JPXN7AEiMAPdWPmehLZ61FBptLiQZN9dbeZ-84M13B5n5tcuEybuHTXWJUuVRNJkYYG9Qalv-3LYCKQXDZ7BTw7b75RZ6tV_b0VvNEB4yp_RXpqptXhVXsfu4LSc35HAh0MC1esZaGrjdKJprkmbjhafrT8yRe-_Ilt2OHgAyZHbG5nkZ7K87Jyp0uXl3vLR1VP_KZ1GJnksDgjhNsKq_-Hu-e07pvKPmLuzo9mjv10ELM-1so0FVNcc8RAPlwrhqHjeROMf8_bWRZmyDMKwUSOShksCmIskkgL_C1UzjQ7O-31hNgRbOiZ-neTkamTL1xjvW4Je7e9k0IVLjVcNAPHysK5ahd6itscFZpjPFr4wIbiQU3l__mlntVyxDUAlY2S2tAbhwDuIr4wUFMmTYybr1qIk47BBk6JLZDBW3QFSgPK_7EkT_01S0h5fwelo8OsiOjqIqOwKGAlvMDHumv-w0_CZoFY2JEQwiAUSXtxoN-TZnxIg6e2SV6oOssCrwDEoLjfYF37RqYPmkl5fU05KUnRuDthLloIy5aJrOw296Ii4DqgRferl3M2o6ystfcFi9MHzQL0D4LYaTtLmWKD-GhgEAKyi2uM-XpYXukFTq1HBR5qxB1zynJTC08P0j70AzbsSEFxrdcAiTLQyqW98b5yaJmqWxgIqrpgIhYeBTspBduPrL9HzgtTTZ_kcquDfRp93cQNzMmTAjdHcWpa_kXz1el1PgJuJrIOL7XhsIQyul1_ho0CJf8wMusvKjWdbmNFsciSQpvtBKnGbBV-KkbeHgOFnrnmak1MsjO_wDq6pimGu6PmLH808LTQrKf6lwXCO2_UKUjWSfUfAc7XNNmy6AJYMBUU_Uq0FGFSY2cNCkk5bnwNwZ26dsjb11D7olBXDU9iIhwjDHrCKUO0Jna55gBECnsR2Y4rQG0L6N7KmjklcYFLuQyR2wkapXG4sM-Prqbxz6iDTYJHRCKEuuQc6CZ1pxDlNSVM",cRq: {ru: 'aHR0cHM6Ly93d3cuYmVxZWdlLmNvbS8=',ra: 'TW96aWxsYS81LjAgKFdpbmRvd3MgTlQgMTAuMDsgV2luNjQ7IHg2NCkgQXBwbGVXZWJLaXQvNTM3LjM2IChLSFRNTCwgbGlrZSBHZWNrbykgQ2hyb21lLzExNi4wLjAuMCBTYWZhcmkvNTM3LjM2IEVkZy8xMTYuMC4xOTM4Ljgx',rm: 'R0VU',d: 'VltJoUpli1+czO7H6nqAJaETtqnku1TO2GlnCLusWYnn3/nybgtlSYvKYyS2D2hvJ+otuoTXqAY6v66VZLJO6slSoQfOEybT05O2rXGW3ed71433vz/e2Lj3OB8Z7U9yddAoVQOCLB8n6YbLYDJLapDATsWaB62ozHxtTD8l7rzh2xZNvTexqEmDnbS63P7wBH+Iqf1Tk1kWfaqNvNYzJSqZNGnkRYDJO2feWVZeptWulyozb2lYW+FOhnAKN1fQi2KhSixkBBeVS0uZINKZ48V4oTjR17HmRts+dl5yXWC1rbJPpBU3w8bOj+d4p6xXkYu9Qm12TO0coS1d/KG+VedM1Vu6hDJmZb7IcA68GK0zn6UL7WnMYdRyLJvuSUtVC4DPxlXl4RvaL60+xdcEFq0jz2GqHXyzIN6HhjCBfospYnB0kHkjvpbLCUZUNa59/WCQigcPgksq8FKCMIMMFAXipx5mYQvmJuaOPwbkT6GoIUe/mI259WkyZdDWACOEa1V5N5Sx31AmRMtSukUvRbp2Z/yIz2LqEULAOQLLh043gE5/Fy0JpH1W3CraTLZh',t: 'MTY5NDc1ODM1MC40NjMwMDA=',cT: Math.floor(Date.now() / 1000),m: 'rvb739DpNLTX6kG24Di5j7W5Qkks+Wl7cZHb1rwE0aU=',i1: 'yDtFiyAZu1s4k6IEIi/32w==',i2: 'Wonf4Ff/8uAHGK2V+z7uSw==',zh: 'aytt6gqKlZuxo0gMULYb5X9u7zCP8aU8L7xja7lcX08=',uh: 'iXxJpef7gV4j0aSGyr5KJxUwpN3qlYZ3VFbqtfzo5sI=',hh: '11PjS9IApaQUuFbbNwjvhK/gP5826EKq4kUg/4hdNlI=',}};var cpo = document.createElement('script');cpo.src = '/cdn-cgi/challenge-platform/h/g/orchestrate/chl_page/v1?ray=806eb7ea5a9823e7';window._cf_chl_opt.cOgUHash = location.hash === '' && location.href.indexOf('#') !== -1 ? '#' : location.hash;window._cf_chl_opt.cOgUQuery = location.search === '' && location.href.slice(0, location.href.length - window._cf_chl_opt.cOgUHash.length).indexOf('?') !== -1 ? '?' : location.search;if (window.history && window.history.replaceState) {var ogU = location.pathname + window._cf_chl_opt.cOgUQuery + window._cf_chl_opt.cOgUHash;history.replaceState(null, null, "\/?__cf_chl_rt_tk=TLS8hS8609oDXpvjWaGInhKbUU0FD8pAYGydVnq5Fa4-1694758350-0-gaNycGzNC1A" + window._cf_chl_opt.cOgUHash);cpo.onload = function() {history.replaceState(null, null, ogU);}}document.getElementsByTagName('head')[0].appendChild(cpo);}());</script></body></html>

可以看到,打印出来的resp.text中包含Just a moment...字样。

某佬告诉我,这是典型的TLS/JA3指纹,算是一种新的反爬手段。

浏览器地址栏输入https://tls.browserleaks.com/json可以查看浏览器的JA3指纹。同样,使用requests库、httpx库或者别的什么库,都可以查看通过这类库从客户端发出请求的JA3指纹。

参考:https://zhuanlan.zhihu.com/p/601474166

import requests
r=requests.get('https://tls.browserleaks.com/json')
r.json()

参考:https://baijiahao.baidu.com/s?id=1760958257477378891&wfr=spider&for=pc

浏览器指纹是指通过收集一个设备或浏览器的特定信息,以识别其唯一身份的技术。这些信息可以包括:浏览器类型、版本、语言设置、操作系统类型、屏幕分辨率、字体、插件等。

JA3指纹是一种用于识别 TLS/SSL 客户端的技术。它通过分析 TLS/SSL 客户端的特定特征来识别和跟踪客户端。这些特征包括客户端支持的加密算法、协议版本、扩展字段等。通过分析这些特征,网络安全专业人员可以识别和跟踪客户端,并识别可疑的恶意软件和攻击行为。JA3 指纹是一种高效且简单易用的识别 TLS/SSL 客户端的方法,广泛用于网络安全监测和威胁情报研究等领域。

具体来说,JA3指纹是由客户端发送的ClientHello消息中的TLS版本、密码套件以及一些其他参数生成的一个32字节的哈希值。通过观察和分析网络流量中的TLS握手消息,可以提取并计算出相应的JA3指纹。不同的TLS客户端实现、配置和版本可能会生成不同的JA3指纹,因此可以将其用作识别不同客户端的一种方法。

TLS/JA3指纹可以被用于以下目的:

  • 安全审核和追踪:通过分析和识别不同客户端的JA3指纹,可以对TLS连接进行安全审核和追踪,识别异常或不受信任的客户端。
  • 威胁情报和恶意行为检测:将已知的恶意客户端的JA3指纹加入黑名单,并监控网络中的JA3指纹,以便检测到类似的恶意行为或攻击。
  • 身份验证和防范欺骗:通过比对客户端的JA3指纹与其宣称的握手参数是否一致,可以用于检测假冒客户端、恶意代理等欺骗行为。

需要注意的是,由于JA3指纹是基于客户端发送的握手消息生成的,因此可能会受到一些因素的影响,例如中间人攻击、网络代理等。此外,随着TLS客户端实现的更新和演进,JA3指纹也可能发生变化,因此在使用和分析JA3指纹时要保持及时的更新和验证。

解决办法:

  1. 直接用selenium模拟浏览器进行爬取(不太喜欢用这个就没跑)
  2. 换用pyhttpx
import pyhttpx
url = "mark一下"
headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/116.0.0.0 Safari/537.36 Edg/116.0.1938.81',
    'Referer': 'mark一下'
}
sess = pyhttpx.HttpSession(browser_type='chrome', http2=True)
resp = sess.get(url, headers=headers, allow_redirects=False)  # allow_redirects设置是否允许自动重定向
print(resp)
print(resp.text)

用Wireshark和Fiddler配合使用可以分析网络协议和JA3(没看大懂,回头研究)

Wireshark和Fiddler都是流行的网络分析工具,用于捕获和分析网络数据流。

  1. Wireshark是一个免费的开源网络协议分析工具。它能够在网络上捕获流经网卡的数据包,并对这些数据包进行详细的解析和分析。Wireshark支持多种网络协议,可以帮助你分析网络流量、排查网络问题、监控网络性能等。它提供强大的过滤和搜索功能,可视化展示数据包信息,并提供各种统计和报告。
  2. Fiddler是一款强大的Web调试代理工具,用于截取、检查和修改网络流量。当你使用Fiddler作为代理时,它会拦截应用程序发送的HTTP/HTTPS请求,并将其转发到目标服务器。同时,Fiddler也会拦截来自目标服务器的响应,并返回给应用程序。这使得你可以轻松监视和修改请求和响应,进行网络调试和分析。Fiddler提供了很多功能,如请求修改、自定义脚本、性能分析等。

虽然Wireshark和Fiddler都可以用于网络数据分析,但它们的应用场景略有不同。Wireshark主要关注网络协议的全面解析和分析,适用于对底层协议和整个网络流量进行深入研究。而Fiddler则更侧重于Web应用程序的调试和分析,它提供了更高级的功能,可以拦截、修改和监控特定的HTTP/HTTPS请求和响应。

总结来说,Wireshark和Fiddler是两个功能强大的网络分析工具,Wireshark适用于全面的网络协议分析,而Fiddler更适合于Web应用程序的调试和分析。

参考资料:

https://blog.csdn.net/Y_morph/article/details/121893114

https://blog.csdn.net/weixin_45080737/article/details/131580439

目录
相关文章
|
1月前
|
数据采集 JSON 算法
模拟 TLS 指纹实现反反爬
模拟 TLS 指纹实现反反爬
69 3
|
1月前
|
数据采集 安全 Java
Burpsuite Intruder 暴力破jie实战
Burpsuite Intruder 暴力破jie实战
|
3月前
|
数据采集 存储 JavaScript
基于Python 爬书旗网小说数据并可视化,通过js逆向对抗网站反爬,想爬啥就爬啥
本文介绍了如何使用Python编写网络爬虫程序爬取书旗网上的小说数据,并通过逆向工程对抗网站的反爬机制,最后对采集的数据进行可视化分析。
193 2
基于Python 爬书旗网小说数据并可视化,通过js逆向对抗网站反爬,想爬啥就爬啥
|
4月前
|
数据采集 前端开发 JavaScript
被爬网站用fingerprintjs来对selenium进行反爬,怎么破?
闲暇时看到一个问题关于如何应对FingerprintJS的唯一标记技术。FingerprintJS通过收集浏览器特性如Canvas、音频、字体及插件信息生成唯一标识符,用于识别和追踪用户。常见应对策略如使用`stealth.min.js`脚本或虚拟指纹插件有局限性。高级解决方案包括: - **浏览器特征随机化**:如Canvas和音频指纹随机化,动态替换插件和字体。 - **真实用户流量模拟**:模拟自然的鼠标移动与点击、键盘输入节奏。 - **服务端策略**:使用高质量代理IP服务,如青果网络提供的代理IP,结合IP地址轮换、会话管理和合理的切换频率设置。
|
3月前
|
数据采集 JSON 数据处理
基于Python的B站(哔哩哔哩)视频评论采集,可破解反爬手段,想爬几条爬几条
本文介绍了一个基于Python的B站(哔哩哔哩)视频评论采集工具,能够通过输入视频的av号、BV号或链接,并使用特定的cookie和请求头信息来绕过反爬手段,实现大规模的评论数据采集,并支持将数据解析并保存为CSV格式。
|
5月前
【那些反爬与反反爬】网页中嵌入随机不可见字符的解决方法
【那些反爬与反反爬】网页中嵌入随机不可见字符的解决方法
36 2
|
6月前
|
数据采集 前端开发 JavaScript
Python爬虫零基础到爬啥都行
Python爬虫项目实战全程实录,你想要什么数据能随意的爬,不管抓多少数据几分钟就能爬到你的硬盘,需要会基本的前端技术(HTML、CSS、JAVASCRIPT)和LINUX、MYSQL、REDIS基础。
46 1
Python爬虫零基础到爬啥都行
|
6月前
|
SQL 关系型数据库 MySQL
【sqli靶场】第二关和第三关通关思路
【sqli靶场】第二关和第三关通关思路
88 0
|
数据采集 Python
python网络爬虫,爬百度的示例
python网络爬虫,爬百度的示例
160 2
|
Web App开发 小程序 程序员
【每周一坑】暴力计算圆周率 +【解答】生成/识别二维码
上一次的题目 生成/识别二维码,包括两部分,生成和识别。这两个步骤都可以通过第三方库实现。