突破API限制:GPT4Free中HAR文件对接ChatGPT的实战指南
你是否还在为ChatGPT API的高昂费用和访问限制而烦恼?是否希望找到一种无需官方API密钥就能使用ChatGPT功能的方法?本文将为你揭示GPT4Free项目中一个强大而实用的技术——使用HAR(HTTP Archive)文件对接ChatGPT,让你轻松绕过API限制,免费使用AI对话功能。读完本文,你将了解HAR文件的工作原理、在GPT4Free中的应用流程以及如何实际操作实现对接。
HAR文件是什么?
HAR(HTTP Archive)文件是一种用于记录HTTP请求和响应数据的标准格式,它可以捕获浏览器与服务器之间的所有交互信息,包括请求头、响应头、Cookie、POST数据等。简单来说,HAR文件就像是浏览器与网站通信的"黑匣子",记录了所有关键的交互细节。
在GPT4Free项目中,HAR文件被用来模拟浏览器与ChatGPT网站的交互过程,从而绕过官方API的限制。通过分析和复用HAR文件中的请求信息,我们可以直接与ChatGPT服务器建立通信,实现免费使用AI对话功能的目的。
GPT4Free中HAR文件的工作流程
GPT4Free项目通过专门的模块来处理HAR文件,实现与ChatGPT的对接。其核心工作流程如下:
- 收集HAR文件:用户需要在浏览器中访问ChatGPT网站并完成一次对话,然后导出HAR文件。
- 解析HAR文件:项目中的HAR文件解析模块会从HAR文件中提取关键信息,如访问令牌(access token)、请求头(headers)、Cookie等。
- 生成请求配置:解析得到的信息会被用来构建与ChatGPT服务器通信所需的请求配置。
- 发送请求:使用生成的请求配置模拟浏览器发送请求,与ChatGPT服务器进行交互。
下面我们来详细了解GPT4Free中处理HAR文件的核心代码实现。
HAR文件解析核心代码
GPT4Free项目中负责HAR文件解析的核心代码位于g4f/Provider/openai/har_file.py文件中。该文件实现了从HAR文件中提取关键信息并生成请求配置的功能。
其中,readHAR函数是解析HAR文件的核心,它会遍历HAR文件中的所有HTTP请求条目,提取访问令牌、请求头、Cookie等关键信息:
def readHAR(request_config: RequestConfig):
for path in get_har_files():
with open(path, 'rb') as file:
try:
harFile = json.loads(file.read())
except json.JSONDecodeError:
# Error: not a HAR file!
continue
for v in harFile['log']['entries']:
v_headers = get_headers(v)
if arkose_url == v['request']['url']:
request_config.arkose_request = parseHAREntry(v)
elif v['request']['url'].startswith(start_url):
try:
match = re.search(r'"accessToken":"(.*?)"', v["response"]["content"]["text"])
if match:
request_config.access_token = match.group(1)
except KeyError:
pass
try:
if "openai-sentinel-proof-token" in v_headers:
request_config.headers = v_headers
request_config.proof_token = json.loads(base64.b64decode(
v_headers["openai-sentinel-proof-token"].split("gAAAAAB", 1)[-1].encode()
).decode())
if "openai-sentinel-turnstile-token" in v_headers:
request_config.turnstile_token = v_headers["openai-sentinel-turnstile-token"]
if "authorization" in v_headers:
request_config.access_token = v_headers["authorization"].split(" ")[1]
request_config.cookies = {c['name']: c['value'] for c in v['request']['cookies']}
except Exception as e:
debug.log(f"Error on read headers: {e}")
这段代码会遍历HAR文件中的所有请求条目,当找到ChatGPT的相关请求时,会提取其中的访问令牌、请求头、Cookie等信息,并将其存储到请求配置对象中。
请求配置生成
解析HAR文件后,下一步是生成与ChatGPT服务器通信所需的请求配置。get_request_config函数实现了这一功能:
async def get_request_config(request_config: RequestConfig, proxy: str) -> RequestConfig:
readHAR(request_config)
if request_config.arkose_request is not None:
request_config.arkose_token = await sendRequest(genArkReq(request_config.arkose_request), proxy)
if request_config.proof_token is None:
raise NoValidHarFileError("No proof_token found in .har files")
return request_config
该函数首先调用readHAR函数解析HAR文件,然后生成arkose令牌(如果需要),最后返回完整的请求配置。
实际操作:使用HAR文件对接ChatGPT
下面我们来详细介绍如何在实际中使用HAR文件对接ChatGPT。
步骤一:导出HAR文件
- 打开Chrome或Firefox浏览器,访问ChatGPT网站并登录。
- 打开开发者工具(F12或Ctrl+Shift+I),切换到"网络"(Network)选项卡。
- 在ChatGPT网站上进行一次完整的对话。
- 对话完成后,右键点击网络请求列表,选择"导出HAR文件",将文件保存到本地。
步骤二:配置GPT4Free项目
-
首先,克隆GPT4Free项目仓库:
git clone https://gitcode.com/GitHub_Trending/gp/gpt4free -
进入项目目录并安装依赖:
cd gpt4free pip install -r requirements.txt
步骤三:使用HAR文件对接ChatGPT
-
将导出的HAR文件复制到GPT4Free项目的Cookie目录中(通常位于
~/.cache/g4f/cookies/)。 -
使用以下代码示例来使用HAR文件对接ChatGPT:
from g4f import ChatCompletion
from g4f.Provider import OpenAI
response = ChatCompletion.create(
model="gpt-3.5-turbo",
messages=[{"role": "user", "content": "Hello, how are you?"}],
provider=OpenAI,
har_file_path="/path/to/your/chatgpt.har" # 指定HAR文件路径
)
print(response)
这段代码会使用指定的HAR文件来配置请求,与ChatGPT服务器建立通信并获取响应。
HAR文件处理中的关键技术点
在GPT4Free项目中,处理HAR文件涉及到一些关键的技术点,下面我们来逐一介绍。
动态参数生成
为了成功模拟浏览器请求,需要动态生成一些参数,如时间戳、UUID等。在getBDA函数中实现了这一功能:
def getBDA(arkReq: arkReq):
bx = arkReq.arkBx
bx = re.sub(r'"key":"n","value":"\S*?"', f'"key":"n","value":"{getN()}"', bx)
oldUUID_search = re.search(r'"key":"4b4b269e68","value":"(\S*?)"', bx)
if oldUUID_search:
oldUUID = oldUUID_search.group(1)
newUUID = str(uuid.uuid4())
bx = bx.replace(oldUUID, newUUID)
bw = getBw(getBt())
encrypted_bx = encrypt(bx, arkReq.userAgent + bw)
return encrypted_bx, bw
该函数会动态生成时间戳(通过getN函数)和UUID,替换HAR文件中的静态值,以确保请求的有效性。
加密与解密
为了模拟浏览器请求,GPT4Free项目还实现了对某些参数的加密和解密功能。相关代码位于g4f/Provider/openai/crypt.py文件中,实现了对请求参数的加密和解密,以匹配ChatGPT服务器的要求。
可能遇到的问题及解决方法
在使用HAR文件对接ChatGPT的过程中,可能会遇到一些问题,下面我们来介绍常见的问题及解决方法。
问题一:HAR文件解析失败
如果HAR文件解析失败,可能是由于HAR文件格式不正确或不完整。解决方法:
- 确保在导出HAR文件前完成了一次完整的ChatGPT对话。
- 尝试使用不同的浏览器导出HAR文件(Chrome和Firefox的导出功能可能有所不同)。
- 检查HAR文件是否损坏,可以尝试重新导出。
问题二:访问令牌过期
HAR文件中的访问令牌(access token)有一定的有效期,过期后需要重新导出HAR文件。解决方法:
- 定期重新导出HAR文件,更新访问令牌。
- 可以编写脚本自动化导出HAR文件的过程。
问题三:请求被拒绝
如果请求被ChatGPT服务器拒绝,可能是由于请求参数不正确或服务器检测到了非浏览器请求。解决方法:
- 检查HAR文件是否包含完整的请求信息。
- 尝试在不同的时间导出HAR文件,避免服务器的反爬虫机制。
- 检查GPT4Free项目是否为最新版本,可能需要更新到最新代码。
总结与展望
通过本文的介绍,我们了解了HAR文件在GPT4Free项目中对接ChatGPT的应用。HAR文件作为一种记录HTTP请求和响应的标准格式,为我们提供了一种绕过官方API限制的方法。GPT4Free项目通过解析HAR文件,提取关键信息并动态生成请求参数,实现了与ChatGPT服务器的直接通信。
未来,随着ChatGPT服务器端的更新,HAR文件的格式和内容可能会发生变化,需要持续关注和更新解析代码。同时,我们也期待GPT4Free项目能够支持更多的AI模型,为用户提供更多免费、便捷的AI服务。
如果你觉得本文对你有帮助,请点赞、收藏并关注我们,以获取更多关于GPT4Free项目的实用教程和技术解析。下期我们将介绍如何使用GPT4Free项目中的本地模型,敬请期待!
GLM-5.1GLM-5.1是智谱迄今最智能的旗舰模型,也是目前全球最强的开源模型。GLM-5.1大大提高了代码能力,在完成长程任务方面提升尤为显著。和此前分钟级交互的模型不同,它能够在一次任务中独立、持续工作超过8小时,期间自主规划、执行、自我进化,最终交付完整的工程级成果。Jinja00
MiniMax-M2.7MiniMax-M2.7 是我们首个深度参与自身进化过程的模型。M2.7 具备构建复杂智能体应用框架的能力,能够借助智能体团队、复杂技能以及动态工具搜索,完成高度精细的生产力任务。Python00- QQwen3.5-397B-A17BQwen3.5 实现了重大飞跃,整合了多模态学习、架构效率、强化学习规模以及全球可访问性等方面的突破性进展,旨在为开发者和企业赋予前所未有的能力与效率。Jinja00
HY-Embodied-0.5这是一套专为现实世界具身智能打造的基础模型。该系列模型采用创新的混合Transformer(Mixture-of-Transformers, MoT) 架构,通过潜在令牌实现模态特异性计算,显著提升了细粒度感知能力。Jinja00
LongCat-AudioDiT-1BLongCat-AudioDiT 是一款基于扩散模型的文本转语音(TTS)模型,代表了当前该领域的最高水平(SOTA),它直接在波形潜空间中进行操作。00
ERNIE-ImageERNIE-Image 是由百度 ERNIE-Image 团队开发的开源文本到图像生成模型。它基于单流扩散 Transformer(DiT)构建,并配备了轻量级的提示增强器,可将用户的简短输入扩展为更丰富的结构化描述。凭借仅 80 亿的 DiT 参数,它在开源文本到图像模型中达到了最先进的性能。该模型的设计不仅追求强大的视觉质量,还注重实际生成场景中的可控性,在这些场景中,准确的内容呈现与美观同等重要。特别是,ERNIE-Image 在复杂指令遵循、文本渲染和结构化图像生成方面表现出色,使其非常适合商业海报、漫画、多格布局以及其他需要兼具视觉质量和精确控制的内容创作任务。它还支持广泛的视觉风格,包括写实摄影、设计导向图像以及更多风格化的美学输出。Jinja00