ChatGPT的access_token获取(最新!!!)
序言
最近在搞移动应用开发,心血来潮写了个chatGPT的app,但是接口只能用官网提供的,我自己的号没有免费额度,朋友的号也就5$的额度,用不了几下就没有了,于是我准备会一会这个chatGPT!
登录流程分析
1.准备工作
首先复制下面这个链接并进入,并打开抓包工具(F12),如图所示,把Cookie给删除掉
https://chat.openai.com/auth/login?iss=https%3A%2F%2Fauth0.openai.com%2F
删除完成以后点击Log in按钮,此时查看网络抓包数据如下所示:
我们观察到请求的内容有这些:csrf, auth0?prompt=login, authorize?client_id=..., identifier?state=hKF...
,至此我们准备工作已经完毕。
2.获取csrfToken
我们就按顺序看一下,首先是csrf,这时候肯定有人问为什么不看providers?哈,因为它没什么用。
观察发现里面就是GET请求,但是这时候我点击预览却看不到数据,于是我就去ApiFox上测了一下这个接口,发现请求到的是个csrfToken,如下图:
好家伙,你小子深藏不露,浏览器抓包都看不见你,给我逮到了!
3.获取authorize_url
在上一步中我们拿到了csrfToken,那么他有什么用呢?这时候我们该看下一个了auth0?prompt=login
,点击这个请求,我们可以看到如下图所示:
注意,这里是POST方法了,我们查看载荷,发现它带着如下参数:
惊喜这不就来了?大大的csrfToken在这摆着,懂了吧?这时候我点预览想查看响应数据,好家伙,又是无法加载响应数据,于是我只好去ApiFox里请求,但是我发现返回的是一大串html,嘶,怎么回事?经过我的比对,headers都一样了还是请求不到,于是我抱着试一试的心态用python来请求,打印结果惊喜的发现,有返回值,还是个url!
此时我们可以对比一下抓包抓到的url,发现这个url就是authorize那一大串那个,nice!又近了一步。
4.获取identify_url
有了上一步得到的authorize那个url,我们在抓包工具点击查看他的内容如下图:
可以看到,他的状态代码是302,这是什么意思呢?302状态码代表了重定向,可以看到响应标头里面有个键的名称叫Location:
,后面那个值就是重定向所指向的url。我们看左侧的列表名称里面,发现authorize下面就有个identifier,对比一下发现,这就是重定向后的链接,所以这一步我们需要拿到的就是响应头里面的Location
的值。在python中实现后经过拼接url可以得到如图所示:
到这里为止,我们已经完成了一半的工作量噢~惊不惊喜?
5.获取password_url
上一步我们得到了identifier_url,此时页面的内容如图所示
此时我们输入自己账号,点击continue,与此同时查看抓包内容,如下图所示:
可以发现这个identifier(我们刚刚拿到的链接)进行了302重定向!我查看载荷发现,他带上了如下的参数:
我们发现这个链接带上了自己url后面那一大串state参数,还有我们输入的username,以及其他的参数(我也不知道有什么用,不用管照着填就行)。参数看完了,那看看响应头吧。此时可以看到,响应头里有个Location
参数,后面那一串就是重定向后的url,可以发现这就是下面的password那一串url的地址,讲