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 & 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 '
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()