• 【那些反爬和反反爬】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)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    报错:

    
    Just a moment...
    • 1
    • 2

    可以看到,打印出来的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()
    
    • 1
    • 2
    • 3

    参考: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)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    用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

  • 相关阅读:
    vs code添加C51关键字及C51头文件
    奇怪的bug
    山东大学图书馆《乡村振兴战略下传统村落文化旅游设计》许少辉八一新著
    2023年【四川省安全员A证】模拟试题及四川省安全员A证作业模拟考试
    ROS 语音交互(三) tts
    黑马点评--优惠卷秒杀
    AIGC(生成式AI)试用 9 -- 完整的程序
    2.03_python+Django+mysql实现pdf转word项目_项目开发-创建base.html
    CATIA环境编辑器用不了时创建项目快捷方式
    每日三题 11.22
  • 原文地址:https://blog.csdn.net/weixin_44624036/article/details/132901034