文章目录
未通过浏览器 TLS/JA3 指纹的验证
- 在一次使用
python requests库
访问某个地址时,返回了403
错误,起初以为是 IP 被加入了黑名单,但经过测试后发现,切换 IP 后仍然返回403
。 - 测试过程中偶然发现浏览器和
postman
可以正常访问,经过搜索资料知道,大概率是因为没有通过浏览器 TLS/JA3 指纹的验证
被识别为爬虫,从而被禁止访问,可以通过以下三种常用方式解决。
使用httpx库(极力推荐)
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 库(推荐)
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 库(使用较少)
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编程。
🌐 我鼓励互动和建立社区,因此请留下你的问题、建议或主题请求,让我知道你感兴趣的内容。此外,我将分享最新的互联网和技术资讯,以确保你与技术世界的最新发展保持联系。我期待与你一起在技术之路上前进,一起探讨技术世界的无限可能性。
📖 保持关注我的博客,让我们共同追求技术卓越。