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

2024-07-30 13:22:15 浏览数 (1)

未通过浏览器 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 指纹的验证)等等。

个人简介

0 人点赞