前言
之前我搭建了一个ChatGptQQ机器人给群友们使用,但是因为OpenaiAPI定价和账户难注册的问题暂停了,我就想能不能使用第三方的API来调用ChatGpt
之后有一个朋友送了我一个Notion的会员,我一看,他自带AI写作助手,我就想能不能把这个API抓下来用呢?
验证猜想
我先创建了一个文档,使用AI助手创建了一段文字,并打开F12开发者工具开始抓包:
我一看确实是抓到了,之后就是脱离浏览器看看能不能返回了
我先查看了发送的post请求的参数:
有一个spaceID和id,我们直接给数据先看看能不能返回
返回了401,Must be authenticated.
我一想,没带上Cookie
之后我去试了试,发现只要带上token_v2这个Cookie就可以了,我们再来试一遍:
成功返回了!
使用PHP实现
之后我们化简json体就可以了
经过我的测试,json体的ID可以随便填,于是我化简为了这样:
之后我们使用PHP实现就可以了
我使用了curl来实现,具体代码如下:
<?php
function notionai($Cookie,$spaceId,$Text) {
$url = 'https://www.notion.so/api/v3/getCompletion';
$headers = [
'Accept: application/x-ndjson',
'Content-Type: application/json',
'Cookie: token_v2='.$Cookie
];
$data = [
"id" => "ByMxmilu",
"context" => [
"type" => "helpMeWrite",
"pageTitle" => "AI",
"previousContent" => "",
"restContent" => "",
"prompt" => $Text,
],
"model" => "openai-3",
"spaceId" => $spaceId,
"isSpacePermission" => false,
"inferenceReason" => "writer",
];
$data = json_encode($data);
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($ch);
curl_close($ch);
$pattern = '/"completion":"(.*?)"/';
preg_match_all($pattern, $response, $matches);
$completions = $matches[1];
$output = implode("", $completions);
return $output;
}
之后调用函数就可以返回了
后言
代码已经在Github开源,喜欢的可以点个star QWQ
另外我用MDUI写了一个简单的前端,可以来试试:gpt.appleblock.cn
发表回复