准备工作
第一步:注册OpenAI账号,如果搭建了科学还是提示不对你的国家提供服务的话,尝试清空浏览器缓存或者打开浏览器的无痕窗口。Chrome默认在右上角三个点打开就能找到“打开新的无痕式窗口”。
ChatGPT聊天库代码示例
我们需要三个东西:UserAgent,CfClearance,Session_token
我们需要先打开ChatGPT官方网站:https://chat.openai.com/chat 然后按下F12打开浏览器的开发者模式
UserAgent在网络里(只需要复制UserAgent:后面的值):
CfClearance和Session_token在应用程序->cookie里面
2.创建一个session用来表示一个会话
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
|
public OpenAISession(string session_token,string cfClearance,string userAgent) { Session_token = session_token; CfClearance = cfClearance; UserAgent = userAgent; Headers = new Dictionary<string, string>(); Cookies = new Dictionary<string, string>(); Proxies = new Dictionary<string, string>(); } Session可以刷新自己的AccessToken和Session_token public async Task RefreshSessionAsync() { if (string.IsNullOrEmpty(Session_token)) { throw new Exception( "No tokens provided" ); } / / Set cookies Cookies.Put( "__Secure-next-auth.session-token" , Session_token); Cookies.Put( "cf_clearance" , CfClearance); string cookiesString = GetCookiesString(); Dictionary<string, string> map = new Dictionary<string, string>(); Headers.Put( "User-Agent" , UserAgent); Headers.Put( "cookie" , cookiesString); Headers.Put( "Cookie" , cookiesString); var response = await GetAsync( "https://chat.openai.com/api/auth/session" ); if (!response.IsSuccessStatusCode) { Console.WriteLine( "err code: " + response.StatusCode); Console.WriteLine( "cf_clearance: " + CfClearance); Console.WriteLine( "token: " + Session_token); Console.WriteLine( "userAgent: " + UserAgent); Console.WriteLine( "请检查以上参数是否正确,是否过期。" ); throw new Exception( "无法获取token!请重试" ); } try { string name = "__Secure-next-auth.session-token=" ; var cookies = response.Headers.GetValues( "Set-Cookie" ); var stoken = cookies.FirstOrDefault(x = > x.StartsWith(name)); Session_token = stoken = = null ? Session_token : stoken.Substring(name.Length, stoken.IndexOf( ";" ) - name.Length); Cookies.Put( "__Secure-next-auth.session-token" , Session_token); var result = await response.Content.ReadAsStringAsync(); AccessToken = JsonSerializer.Deserialize<Profile>(result, _jsonSerializerOptions)?.AccessToken; RefreshHeaders(); } catch (Exception ex) { Console.WriteLine($ "Error {nameof(RefreshSessionAsync)}:{ex}" ); throw new Exception($ "Error {nameof(RefreshSessionAsync)}" , ex); } } |
文章声明:
1、本站文章来源于互联网,仅供学习交流参考使用,严禁用于商业用途,因此造成的一切法律后果自行承担。
2、本站不对文章内容的完整性和安全性负责,请自行辨别,如发现有问题,请及时联系我们进行处理。
3、如果你有比较好的文章需要发布,可以联系站长屋VPS小编,或者自行点击 投稿。
4、若文章中有侵权或不适当内容,请告知我们,本站会第一时间进行处理。 免责申明。
1、本站文章来源于互联网,仅供学习交流参考使用,严禁用于商业用途,因此造成的一切法律后果自行承担。
2、本站不对文章内容的完整性和安全性负责,请自行辨别,如发现有问题,请及时联系我们进行处理。
3、如果你有比较好的文章需要发布,可以联系站长屋VPS小编,或者自行点击 投稿。
4、若文章中有侵权或不适当内容,请告知我们,本站会第一时间进行处理。 免责申明。
评论