前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >网络请求 403 :未通过浏览器 TLS JA3 指纹的验证

网络请求 403 :未通过浏览器 TLS JA3 指纹的验证

原创
作者头像
Lorin 洛林
发布2024-07-30 13:22:15
1440
发布2024-07-30 13:22:15
举报
文章被收录于专栏:计算机网络

未通过浏览器 TLS/JA3 指纹的验证

  • 在一次使用 python requests库 访问某个地址时,返回了 403 错误,起初以为是 IP 被加入了黑名单,但经过测试后发现,切换 IP 后仍然返回 403
  • 测试过程中偶然发现浏览器和 postman 可以正常访问,经过搜索资料知道,大概率是因为没有通过 浏览器 TLS/JA3 指纹的验证 被识别为爬虫,从而被禁止访问,可以通过以下三种常用方式解决。

使用httpx库(极力推荐)

代码语言:pyhton
复制
import httpx

headers = {
    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/104.0.0.0 Safari/537.36",
}

res = httpx.get(url='https://www.baidu.com/', headers=headers, timeout=10, verify=False)
print(res.text)

使用 pyhttpx 库(推荐)

代码语言:pyhton
复制
import pyhttpx

headers = {
    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/104.0.0.0 Safari/537.36",
}
session = pyhttpx.HttpSession()
res = session.get(url='https://www.baidu.com/',headers=headers)
print(res.text)

使用 curl_cffi 库(使用较少)

代码语言:pyhton
复制
from curl_cffi import requests
res = requests.get(url='https://www.baidu.com/',impersonate="chrome101")
print(res.text)

什么是 403 错误

  • 在我们使用互联网浏览网站或进行网络请求时,有时会遇到一个称为“403 Forbidden”错误。这意味着服务器可以处理请求,但拒绝执行它。简而言之,没有权限访问所请求的资源。对于开发者和用户来说,了解这一错误及其解决方法非常重要。

造成 403 可能的原因

未授权的第三方访问

  • 某些API和资源可能要求特定的API密钥或认证令牌,如果未提供或提供错误,则会返回403错误。

目录浏览被禁用

  • 服务器配置禁止了目录浏览。如果请求的URL指向一个目录而不是具体文件,并且目录浏览被禁用,也会返回403错误。

黑名单和白名单设置

  • 服务器可能使用黑名单或白名单来控制访问。请求的来源可能在黑名单上,因此被拒绝访问。
  • 黑名单常见比如 IP 被加入黑名单、被识别为爬虫(频繁访问、未通过浏览器 TLS/JA3 指纹的验证)等等。

个人简介

👋 你好,我是 Lorin 洛林,一位 Java 后端技术开发者!座右铭:Technology has the power to make the world a better place.

🚀 我对技术的热情是我不断学习和分享的动力。我的博客是一个关于Java生态系统、后端开发和最新技术趋势的地方。

🧠 作为一个 Java 后端技术爱好者,我不仅热衷于探索语言的新特性和技术的深度,还热衷于分享我的见解和最佳实践。我相信知识的分享和社区合作可以帮助我们共同成长。

💡 在我的博客上,你将找到关于Java核心概念、JVM 底层技术、常用框架如Spring和Mybatis 、MySQL等数据库管理、RabbitMQ、Rocketmq等消息中间件、性能优化等内容的深入文章。我也将分享一些编程技巧和解决问题的方法,以帮助你更好地掌握Java编程。

🌐 我鼓励互动和建立社区,因此请留下你的问题、建议或主题请求,让我知道你感兴趣的内容。此外,我将分享最新的互联网和技术资讯,以确保你与技术世界的最新发展保持联系。我期待与你一起在技术之路上前进,一起探讨技术世界的无限可能性。

📖 保持关注我的博客,让我们共同追求技术卓越。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 未通过浏览器 TLS/JA3 指纹的验证
    • 使用httpx库(极力推荐)
      • 使用 pyhttpx 库(推荐)
        • 使用 curl_cffi 库(使用较少)
        • 什么是 403 错误
        • 造成 403 可能的原因
          • 未授权的第三方访问
            • 目录浏览被禁用
              • 黑名单和白名单设置
              • 个人简介
              相关产品与服务
              云数据库 MySQL
              腾讯云数据库 MySQL(TencentDB for MySQL)为用户提供安全可靠,性能卓越、易于维护的企业级云数据库服务。其具备6大企业级特性,包括企业级定制内核、企业级高可用、企业级高可靠、企业级安全、企业级扩展以及企业级智能运维。通过使用腾讯云数据库 MySQL,可实现分钟级别的数据库部署、弹性扩展以及全自动化的运维管理,不仅经济实惠,而且稳定可靠,易于运维。
              领券
              问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档