A-kirami / nonebot-plugin-chatgpt

MIT License
319 stars 37 forks source link

[BUG]: 无痕浏览器一直打开再关闭 #60

Closed homuraLan closed 1 year ago

homuraLan commented 1 year ago

报告清单

影响版本

目前最新的版本

问题描述

无痕浏览器不停地访问网站,似乎登录进去了,但是又自己关闭了 ,如此循环

复现步骤

1,更改了新的版本 2,安装了依赖

预期行为

正常运行

实际行为

浏览器无限闪退,谷歌浏览器

日志信息

12-13 20:00:27 [ERROR] nonebot_plugin_chatgpt | 刷新会话失败: <r>HTTP403</r> <!DOCTYPE html>
<html lang="en-US">
<head>
    <title>Just a moment...</title>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=Edge">
    <meta name="robots" content="noindex,nofollow">
    <meta name="viewport" content="width=device-width,initial-scale=1">
    <link href="/cdn-cgi/styles/challenges.css" rel="stylesheet">

</head>
<body class="no-js">
    <div class="main-wrapper" role="main">
    <div class="main-content">
        <h1 class="zone-name-title h1">
            <img class="heading-favicon" src="/favicon.ico"
                 onerror="this.onerror=null;this.parentNode.removeChild(this)">
            chat.openai.com
        </h1>
        <h2 class="h2" id="challenge-running">
            Checking if the site connection is secure
        </h2>
        <noscript>
            <div id="challenge-error-title">
                <div class="h2">
                    <span class="icon-wrapper">
                        <div class="heading-icon warning-icon"></div>
                    </span>
                    <span id="challenge-error-text">
                        Enable JavaScript and cookies to continue
                    </span>
                </div>
            </div>
        </noscript>
        <div id="trk_jschal_js" style="display:none;background-image:url('/cdn-cgi/images/trace/managed/nojs/transparent.gif?ray=778e89db1898afe1')"></div>
        <div id="challenge-body-text" class="core-msg spacer">
            chat.openai.com needs to review the security of your connection before proceeding.
        </div>
        <form id="challenge-form" action="/api/auth/session?__cf_chl_f_tk=Xv9VV3oCdKN3UFqhJQJsvtQ1_5bUAXjEE4WESHQsJfI-1670932817-0-gaNycGzNEr0" method="POST" enctype="application/x-www-form-urlencoded">
            <input type="hidden" name="md" value="kU5LapJopg2kJ2lBLM3uZ8mn0kd43fiv5sF67fri35M-1670932817-0-Ad9ihwUNMKK9hSOZm0MCN2_PB1zOIE_Y3XOOWtRCk6Q4w0lY_ZFexhoR3yHcjRnzKBPvcStR6b_4hUZn7G5iRrbzJN3-hijcucYAFUQ1UlYT_ni8RQgt3vt3XYaSYu-ponJJv0GwJ4sFvmACKHPbL_aFjX5nBqcf3fh2fvZCg3Kbo1l_kC0DPUAgkcKtx2ftlD8ra5gcFXkxNEypnbPTQXYzzoLdOTDjGs17e7ZxE7GwbUbwTqIupv8OILts-di69E_m6s5iPVs-kn3AEpXUTbxtur-2xrqU2R3dnk7SLbLNdxiuaL860I6NDwXjl0yytyy_vjr_KKGNGieKKADN59JMcPWGLObbwUP3WafPL_31DUnnitG-dqo3hRojnoTUyESlA4406eSMypIk7b-1lI6AwwZLHDUnFEIeTIFknS16UYVVffYhkXkSoc1v1WbG-16u9TeN9YCdVCYS1LB9sUi9OhHZXjE4BFvBcD5osBuLOKMnESGHVMl_MGT4JajAIY3lfRskMIg-cBLTrvLDh6_EnLWK_hTCa3wA1IkM0r8Usn3AHyC0vX04EY6kioan-Xu7Km_OfavVOeAAdAgRKhxbzBpTh0YtosSbTrPmcWrq-Nk3Iaop8lV9PZh8OTyW0Owdqx-ekAd3QzPVZZzAesibjO3bmORJ3X0rndBDL-apE3QYKshgHmoR4eojBKUcVA">
            <input type="hidden" name="r" value="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">
        </form>
    </div>
</div>
<script>
    (function(){
        window._cf_chl_opt={
            cvId: '2',
            cType: 'managed',
            cNounce: '95508',
            cRay: '778e89db1898afe1',
            cHash: '64ea0bd54c22486',
            cUPMDTk: "\/api\/auth\/session?__cf_chl_tk=Xv9VV3oCdKN3UFqhJQJsvtQ1_5bUAXjEE4WESHQsJfI-1670932817-0-gaNycGzNEr0",
            cFPWv: 'b',
            cTTimeMs: '1000',
            cTplV: 4,
            cTplB: 'cf',
            cRq: {
                ru: 'aHR0cHM6Ly9jaGF0Lm9wZW5haS5jb20vY2hhdC9mcm9udGVuZC8vYXBpL2F1dGgvc2Vzc2lvbg==',
                ra: 'TW96aWxsYS81LjAgKFgxMTsgTGludXggeDg2XzY0KSBBcHBsZVdlYktpdC81MzcuMzYgKEtIVE1MLCBsaWtlIEdlY2tvKSBDaHJvbWl1bS8xMDcuMC41MzA0LjE4IFNhZmFyaS81MzcuMzY=',
                rm: 'R0VU',
                d: 'eMkxHxR8H6c3ngDJLuo5HS1PkXxz9UczrRYpibkVim80i4dvwcvOZrYkxA6Et5Tztd5Wsao0iStrZ7XypHxFKRWHgbnOeUyNL6s41BU6WyLw0nlGtQl7My/sy5b84MCtw1mv0+bNK7qq9axDlPJmQzVGgk9tSc3t+XXXdj7gmrwR5NRUOgNpjsymHlxyRkMGJv82wYVjnZpWpTdMxeyhIfGART51+Y2H8vcpIO5GiX8/+LywB1MyVZA3wcvaZ5GWbz2h3KrDfX5P9AOnD7nIEcKaitY+VHW/KsxTUq7QXwcZPo5Amk7mHKaav1o/lNYvpHbdX6AcCayrPkyxH/f3Y5dxH8J809lmTIZbKQhjTdRSNzfNsuAejr9akPbFlgRPfc2S2Aub8rbvB1auE/N3NASugPGPc8TdOO/1YRJti6ZJZklMQYSTTaKpUvDyX7vMdKRzYpgGMLmOkK9QfP23+qjyORgQsw2NrXobTsnVJPVGhMY3/jfjR5/gNcGHN6QPbG+ZHoIRZdjk4B9B/2L2Yek5NJy3c0rGhvVT6M8bObLvBB+u56KAIPlOHhhoyoeOLyc7jiLicqCDVHKoxhxnzU7gO30EicxmsKlZZ9sGcSrwVkdyED8jmS3B4S6QomGZHGflul83BEW6N2rwsw6rLQ==',
                t: 'MTY3MDkzMjgxNy4xNDMwMDA=',
                m: '0eycBGGxbOOz6drd7LBb24TsP8a+ukmKTLWSuCS6Zno=',
                i1: 'PE6kKKniLZrm4GjS3LQKkA==',
                i2: 'D0TGMd73Ep7ZwvGWV60Fzg==',
                zh: 'iuyN59AGNgeBFFEOPj72EN+xtBfXXvoCyd1dJnIVFAc=',
                uh: 'voffhCpB/+YvUOGFnoTcV4dT1DvSdH3/F/Qf+7kfxOY=',
                hh: 'foaWmAUHGGlVCZaNUJIHhxzxFNzSPNnVe6rJjiQw728=',
            }
        };
        var trkjs = document.createElement('img');
        trkjs.setAttribute('src', '/cdn-cgi/images/trace/managed/js/transparent.gif?ray=778e89db1898afe1');
        trkjs.setAttribute('style', 'display: none');
        document.body.appendChild(trkjs);
        var cpo = document.createElement('script');
        cpo.src = '/cdn-cgi/challenge-platform/h/b/orchestrate/managed/v1?ray=778e89db1898afe1';
        window._cf_chl_opt.cOgUHash = location.hash === '' && location.href.indexOf('#') !== -1 ? '#' : location.hash;
        window._cf_chl_opt.cOgUQuery = location.search === '' && location.href.slice(0, -window._cf_chl_opt.cOgUHash.length).indexOf('?') !== -1 ? '?' : location.search;
        if (window.history && window.history.replaceState) {
            var ogU = location.pathname + window._cf_chl_opt.cOgUQuery + window._cf_chl_opt.cOgUHash;
            history.replaceState(null, null, "\/api\/auth\/session?__cf_chl_rt_tk=Xv9VV3oCdKN3UFqhJQJsvtQ1_5bUAXjEE4WESHQsJfI-1670932817-0-gaNycGzNEr0" + window._cf_chl_opt.cOgUHash);
            cpo.onload = function() {
                history.replaceState(null, null, ogU);
            };
        }
        document.getElementsByTagName('head')[0].appendChild(cpo);
    }());
</script>

    <div class="footer" role="contentinfo">
        <div class="footer-inner">
            <div class="clearfix diagnostic-wrapper">
                <div class="ray-id">Ray ID: <code>778e89db1898afe1</code></div>
            </div>
            <div class="text-center">Performance &amp; security by <a rel="noopener noreferrer" href="https://www.cloudflare.com?utm_source=challenge&utm_campaign=m" target="_blank">Cloudflare</a></div>
        </div>
    </div>
</body>
</html>

Traceback (most recent call last):
  File "D:\NoneBot2\homura\src\plugins\nonebot_plugin_chatgpt\chatgpt.py", line 199, in get_cf_cookies
    cf_clearance = next(filter(lambda x: x["name"] == "cf_clearance", cookies))
StopIteration

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "D:\NoneBot2\homura\bot.py", line 37, in <module>
    nonebot.run(app="__mp_main__:app")
  File "D:\conda_data\envs\Python3.8.15\lib\site-packages\nonebot\__init__.py", line 273, in run
    get_driver().run(*args, **kwargs)
  File "D:\conda_data\envs\Python3.8.15\lib\site-packages\nonebot\drivers\fastapi.py", line 172, in run
    uvicorn.run(
  File "D:\conda_data\envs\Python3.8.15\lib\site-packages\uvicorn\main.py", line 576, in run
    server.run()
  File "D:\conda_data\envs\Python3.8.15\lib\site-packages\uvicorn\server.py", line 60, in run
    return asyncio.run(self.serve(sockets=sockets))
  File "D:\conda_data\envs\Python3.8.15\lib\asyncio\runners.py", line 44, in run
    return loop.run_until_complete(main)
  File "D:\conda_data\envs\Python3.8.15\lib\asyncio\base_events.py", line 603, in run_until_complete
    self.run_forever()
  File "D:\conda_data\envs\Python3.8.15\lib\asyncio\windows_events.py", line 316, in run_forever
    super().run_forever()
  File "D:\conda_data\envs\Python3.8.15\lib\asyncio\base_events.py", line 570, in run_forever
    self._run_once()
  File "D:\conda_data\envs\Python3.8.15\lib\asyncio\base_events.py", line 1859, in _run_once
    handle._run()
  File "D:\conda_data\envs\Python3.8.15\lib\asyncio\events.py", line 81, in _run
    self._context.run(self._callback, *self._args)
  File "D:\conda_data\envs\Python3.8.15\lib\site-packages\nonebot\message.py", line 142, in _check_matcher
    await _run_matcher(Matcher, bot, event, state, stack, dependency_cache)
  File "D:\conda_data\envs\Python3.8.15\lib\site-packages\nonebot\message.py", line 186, in _run_matcher
    await matcher.run(bot, event, state, stack, dependency_cache)
  File "D:\conda_data\envs\Python3.8.15\lib\site-packages\nonebot\internal\matcher.py", line 716, in run
    await self.simple_run(bot, event, state, stack, dependency_cache)
  File "D:\conda_data\envs\Python3.8.15\lib\site-packages\nonebot\internal\matcher.py", line 688, in simple_run
    await handler(
  File "D:\conda_data\envs\Python3.8.15\lib\site-packages\nonebot\dependencies\__init__.py", line 108, in __call__
    return await cast(Callable[..., Awaitable[R]], self.call)(**values)
  File "D:\NoneBot2\homura\src\plugins\nonebot_plugin_chatgpt\__init__.py", line 60, in ai_chat
    msg = await chat_bot(**session[event]).get_chat_response(text)
  File "D:\NoneBot2\homura\src\plugins\nonebot_plugin_chatgpt\chatgpt.py", line 91, in get_chat_response
    await self.refresh_session()
  File "D:\NoneBot2\homura\src\plugins\nonebot_plugin_chatgpt\chatgpt.py", line 140, in refresh_session
    await self.refresh_session()
  File "D:\NoneBot2\homura\src\plugins\nonebot_plugin_chatgpt\chatgpt.py", line 140, in refresh_session
    await self.refresh_session()
  File "D:\NoneBot2\homura\src\plugins\nonebot_plugin_chatgpt\chatgpt.py", line 140, in refresh_session
    await self.refresh_session()
  [Previous line repeated 2 more times]
> File "D:\NoneBot2\homura\src\plugins\nonebot_plugin_chatgpt\chatgpt.py", line 139, in refresh_session
    await self.get_cf_cookies()
RuntimeError: coroutine raised StopIteration
12-13 20:00:28 [ERROR] nonebot_plugin_chatgpt | ChatGPT request failed: LocalProtocolError: Illegal header value b'Bearer '
Traceback (most recent call last):
  File "D:\conda_data\envs\Python3.8.15\lib\site-packages\httpcore\_exceptions.py", line 10, in map_exceptions
    yield
  File "D:\conda_data\envs\Python3.8.15\lib\site-packages\httpcore\_async\http11.py", line 121, in _send_request_headers
    event = h11.Request(
  File "D:\conda_data\envs\Python3.8.15\lib\site-packages\h11\_events.py", line 96, in __init__
    self, "headers", normalize_and_validate(headers, _parsed=_parsed)
  File "D:\conda_data\envs\Python3.8.15\lib\site-packages\h11\_headers.py", line 164, in normalize_and_validate
    validate(_field_value_re, value, "Illegal header value {!r}", value)
  File "D:\conda_data\envs\Python3.8.15\lib\site-packages\h11\_util.py", line 91, in validate
    raise LocalProtocolError(msg)
h11._util.LocalProtocolError: Illegal header value b'Bearer '

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "D:\conda_data\envs\Python3.8.15\lib\site-packages\httpx\_transports\default.py", line 60, in map_httpcore_exceptions
    yield
  File "D:\conda_data\envs\Python3.8.15\lib\site-packages\httpx\_transports\default.py", line 353, in handle_async_request
    resp = await self._pool.handle_async_request(req)
  File "D:\conda_data\envs\Python3.8.15\lib\site-packages\httpcore\_async\connection_pool.py", line 253, in handle_async_request
    raise exc
  File "D:\conda_data\envs\Python3.8.15\lib\site-packages\httpcore\_async\connection_pool.py", line 237, in handle_async_request
    response = await connection.handle_async_request(request)
  File "D:\conda_data\envs\Python3.8.15\lib\site-packages\httpcore\_async\connection.py", line 90, in handle_async_request
    return await self._connection.handle_async_request(request)
  File "D:\conda_data\envs\Python3.8.15\lib\site-packages\httpcore\_async\http11.py", line 112, in handle_async_request
    raise exc
  File "D:\conda_data\envs\Python3.8.15\lib\site-packages\httpcore\_async\http11.py", line 80, in handle_async_request
    await self._send_request_headers(**kwargs)
  File "D:\conda_data\envs\Python3.8.15\lib\site-packages\httpcore\_async\http11.py", line 121, in _send_request_headers
    event = h11.Request(
  File "D:\conda_data\envs\Python3.8.15\lib\contextlib.py", line 131, in __exit__
    self.gen.throw(type, value, traceback)
  File "D:\conda_data\envs\Python3.8.15\lib\site-packages\httpcore\_exceptions.py", line 14, in map_exceptions
    raise to_exc(exc)
httpcore.LocalProtocolError: Illegal header value b'Bearer '

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "D:\NoneBot2\homura\bot.py", line 37, in <module>
    nonebot.run(app="__mp_main__:app")
  File "D:\conda_data\envs\Python3.8.15\lib\site-packages\nonebot\__init__.py", line 273, in run
    get_driver().run(*args, **kwargs)
  File "D:\conda_data\envs\Python3.8.15\lib\site-packages\nonebot\drivers\fastapi.py", line 172, in run
    uvicorn.run(
  File "D:\conda_data\envs\Python3.8.15\lib\site-packages\uvicorn\main.py", line 576, in run
    server.run()
  File "D:\conda_data\envs\Python3.8.15\lib\site-packages\uvicorn\server.py", line 60, in run
    return asyncio.run(self.serve(sockets=sockets))
  File "D:\conda_data\envs\Python3.8.15\lib\asyncio\runners.py", line 44, in run
    return loop.run_until_complete(main)
  File "D:\conda_data\envs\Python3.8.15\lib\asyncio\base_events.py", line 603, in run_until_complete
    self.run_forever()
  File "D:\conda_data\envs\Python3.8.15\lib\asyncio\windows_events.py", line 316, in run_forever
    super().run_forever()
  File "D:\conda_data\envs\Python3.8.15\lib\asyncio\base_events.py", line 570, in run_forever
    self._run_once()
  File "D:\conda_data\envs\Python3.8.15\lib\asyncio\base_events.py", line 1859, in _run_once
    handle._run()
  File "D:\conda_data\envs\Python3.8.15\lib\asyncio\events.py", line 81, in _run
    self._context.run(self._callback, *self._args)
  File "D:\conda_data\envs\Python3.8.15\lib\site-packages\nonebot\message.py", line 142, in _check_matcher
    await _run_matcher(Matcher, bot, event, state, stack, dependency_cache)
  File "D:\conda_data\envs\Python3.8.15\lib\site-packages\nonebot\message.py", line 186, in _run_matcher
    await matcher.run(bot, event, state, stack, dependency_cache)
  File "D:\conda_data\envs\Python3.8.15\lib\site-packages\nonebot\internal\matcher.py", line 716, in run
    await self.simple_run(bot, event, state, stack, dependency_cache)
  File "D:\conda_data\envs\Python3.8.15\lib\site-packages\nonebot\internal\matcher.py", line 688, in simple_run
    await handler(
  File "D:\conda_data\envs\Python3.8.15\lib\site-packages\nonebot\dependencies\__init__.py", line 108, in __call__
    return await cast(Callable[..., Awaitable[R]], self.call)(**values)
> File "D:\NoneBot2\homura\src\plugins\nonebot_plugin_chatgpt\__init__.py", line 60, in ai_chat
    msg = await chat_bot(**session[event]).get_chat_response(text)
  File "D:\NoneBot2\homura\src\plugins\nonebot_plugin_chatgpt\chatgpt.py", line 96, in get_chat_response
    response = await client.post(
  File "D:\conda_data\envs\Python3.8.15\lib\site-packages\httpx\_client.py", line 1848, in post
    return await self.request(
  File "D:\conda_data\envs\Python3.8.15\lib\site-packages\httpx\_client.py", line 1533, in request
    return await self.send(request, auth=auth, follow_redirects=follow_redirects)
  File "D:\conda_data\envs\Python3.8.15\lib\site-packages\httpx\_client.py", line 1620, in send
    response = await self._send_handling_auth(
  File "D:\conda_data\envs\Python3.8.15\lib\site-packages\httpx\_client.py", line 1648, in _send_handling_auth
    response = await self._send_handling_redirects(
  File "D:\conda_data\envs\Python3.8.15\lib\site-packages\httpx\_client.py", line 1685, in _send_handling_redirects
    response = await self._send_single_request(request)
  File "D:\conda_data\envs\Python3.8.15\lib\site-packages\httpx\_client.py", line 1722, in _send_single_request
    response = await transport.handle_async_request(request)
  File "D:\conda_data\envs\Python3.8.15\lib\site-packages\httpx\_transports\default.py", line 353, in handle_async_request
    resp = await self._pool.handle_async_request(req)
  File "D:\conda_data\envs\Python3.8.15\lib\contextlib.py", line 131, in __exit__
    self.gen.throw(type, value, traceback)
  File "D:\conda_data\envs\Python3.8.15\lib\site-packages\httpx\_transports\default.py", line 77, in map_httpcore_exceptions
    raise mapped_exc(message) from exc
httpx.LocalProtocolError: Illegal header value b'Bearer '

额外补充

请帮我检查是否是文件更改错误谢谢: 以下是chatgpt.py:

import uuid
from typing import Any, Dict, Optional
from urllib.parse import urljoin
import asyncio
import httpx
from nonebot.log import logger
from nonebot.utils import escape_tag, run_sync
from typing_extensions import Self

try:
    import ujson as json
except ModuleNotFoundError:
    import json
from playwright.async_api import async_playwright

js = "Object.defineProperties(navigator, {webdriver:{get:()=>undefined}});"

SESSION_TOKEN_KEY = "__Secure-next-auth.session-token"
CF_CLEARANCE_KEY = "cf_clearance"

class Chatbot:
    def __init__(
        self,
        *,
        token: str = "",
        account: str = "",
        password: str = "",
        api: str = "https://chat.openai.com/",
        proxies: Optional[str] = None,
        timeout: int = 10,
    ) -> None:
        self.session_token = token
        self.account = account
        self.password = password
        self.api_url = api
        self.proxies = proxies
        self.timeout = timeout
        self.authorization = ""
        self.cf_clearance = ""
        self.user_agent = ""

        if self.session_token:
            self.auto_auth = False
        elif self.account and self.password:
            self.auto_auth = True
        else:
            raise ValueError("至少需要配置 session_token 或者 account 和 password")

    def __call__(
        self, conversation_id: Optional[str] = None, parent_id: Optional[str] = None
    ) -> Self:
        self.conversation_id = conversation_id[-1] if conversation_id else None
        self.parent_id = parent_id[-1] if parent_id else self.id
        return self

    @property
    def id(self) -> str:
        return str(uuid.uuid4())

    @property
    def headers(self) -> Dict[str, str]:
        return {
            "Host": "chat.openai.com",
            "Accept": "text/event-stream",
            "Authorization": f"Bearer {self.authorization}",
            "Content-Type": "application/json",
            "User-Agent": self.user_agent,
            "X-Openai-Assistant-App-Id": "",
            "Connection": "close",
            "Accept-Language": "en-US,en;q=0.9",
            "Referer": "https://chat.openai.com/chat",
        }

    def get_payload(self, prompt: str) -> Dict[str, Any]:
        return {
            "action": "next",
            "messages": [
                {
                    "id": self.id,
                    "role": "user",
                    "content": {"content_type": "text", "parts": [prompt]},
                }
            ],
            "conversation_id": self.conversation_id,
            "parent_message_id": self.parent_id,
            "model": "text-davinci-002-render",
        }

    async def get_chat_response(self, prompt: str) -> str:
        if not self.authorization:
            await self.refresh_session()
        cookies = {SESSION_TOKEN_KEY: self.session_token}
        if self.cf_clearance:
            cookies[CF_CLEARANCE_KEY] = self.cf_clearance
        async with httpx.AsyncClient(proxies=self.proxies) as client:
            response = await client.post(
                urljoin(self.api_url, "backend-api/conversation"),
                headers=self.headers,
                cookies=cookies,
                json=self.get_payload(prompt),
                timeout=self.timeout,
            )
        if response.status_code == 429:
            return "请求过多,请放慢速度"
        if response.status_code == 401:
            return "token失效,请重新设置token"
        if response.is_error:
            logger.error(
                f"非预期的响应内容: <r>HTTP{response.status_code}</r> {response.text}"
            )
            return f"ChatGPT 服务器返回了非预期的内容: HTTP{response.status_code}\n{response.text}"
        lines = response.text.splitlines()
        data = lines[-4][6:]
        response = json.loads(data)
        self.parent_id = response["message"]["id"]
        self.conversation_id = response["conversation_id"]
        return response["message"]["content"]["parts"][0]

    async def refresh_session(self) -> None:
        if self.auto_auth:
            await self.login()
        else:
            cookies = {SESSION_TOKEN_KEY: self.session_token}
            if self.cf_clearance:
                cookies[CF_CLEARANCE_KEY] = self.cf_clearance
            async with httpx.AsyncClient(
                cookies=cookies,
                proxies=self.proxies,
                timeout=self.timeout,
            ) as client:
                response = await client.get(
                    urljoin(self.api_url, "api/auth/session"),
                    headers={
                        "User-Agent": self.user_agent,
                    },
                )
            try:
                if response.status_code == 403:
                    await self.get_cf_cookies()
                    await self.refresh_session()
                    return
                self.session_token = (
                    response.cookies.get(SESSION_TOKEN_KEY) or self.session_token
                )
                self.authorization = response.json()["accessToken"]
            except Exception as e:
                logger.opt(exception=e).error(
                    f"刷新会话失败: <r>HTTP{response.status_code}</r> {response.text}"
                )

    @run_sync
    def login(self) -> None:
        from OpenAIAuth.OpenAIAuth import OpenAIAuth

        auth = OpenAIAuth(self.account, self.password, bool(self.proxies), self.proxies)  # type: ignore
        try:
            auth.begin()
        except Exception as e:
            if str(e) == "Captcha detected":
                logger.error("不支持验证码, 请使用 session token")
            raise e
        if not auth.access_token:
            logger.error("ChatGPT 登陆错误!")
        self.authorization = auth.access_token
        if auth.session_token:
            self.session_token = auth.session_token
        elif possible_tokens := auth.session.cookies.get(SESSION_TOKEN_KEY):
            if len(possible_tokens) > 1:
                self.session_token = possible_tokens[0]
            else:
                try:
                    self.session_token = possible_tokens
                except Exception as e:
                    logger.opt(exception=e).error("ChatGPT 登陆错误!")
        else:
            logger.error("ChatGPT 登陆错误!")

    async def get_cf_cookies(self) -> None:
        async with async_playwright() as p:
            browser = await p.chromium.launch(
                headless=False,
                args=[
                    "--disable-extensions",
                    "--disable-application-cache",
                    "--disable-gpu",
                    "--disable-setuid-sandbox",
                    "--disable-dev-shm-usage",
                    "--incognito",
                ],
                proxy={"server": self.proxies} if self.proxies else None,  # your proxy
            )
            ua = f"Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chromium/{browser.version} Safari/537.36"
            content = await browser.new_context(user_agent=ua)
            page = await content.new_page()
            await page.add_init_script(js)
            await page.goto("https://chat.openai.com/chat")
            await asyncio.sleep(5)
            cookies = await content.cookies()
            cf_clearance = next(filter(lambda x: x["name"] == "cf_clearance", cookies))
            self.cf_clearance = cf_clearance["value"]
            self.user_agent=ua
            await page.close()
            await content.close()
            await browser.close()
homuraLan commented 1 year ago

我并没有运行:刷新会话

homuraLan commented 1 year ago

使用的是prod模式 image image

homuraLan commented 1 year ago

windows 11

sena-nana commented 1 year ago

关闭代理

homuraLan commented 1 year ago

关闭代理

。。。。。。。。

homuraLan commented 1 year ago

关闭代理

66666

Jerry-FaGe commented 1 year ago

不管开关代理都会稳定触发人机验证可咋办呐