Skip to content

Commit e46ea9f

Browse files
committed
SessionData now stores _cfuvid cookie
1 parent 697071c commit e46ea9f

File tree

3 files changed

+13
-1
lines changed

3 files changed

+13
-1
lines changed

src/chatgpt_gui/network/client/auth.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -338,7 +338,7 @@ def set_cookies(message: dict[str, Any]) -> None:
338338

339339
cookie_values: dict[str, str] = {}
340340

341-
for cookie_name in ('__cf_bm', 'cf_clearance',):
341+
for cookie_name in ('__cf_bm', '_cfuvid', 'cf_clearance'):
342342
# Use regex to get the cookies
343343
pattern = re.compile(f'{cookie_name}=.*?;')
344344
if match := pattern.match(set_cookie_header):
@@ -354,6 +354,8 @@ def set_cookies(message: dict[str, Any]) -> None:
354354

355355
if cookie_name == '__cf_bm':
356356
self.session_data.cf_bm = value
357+
elif cookie_name == '_cfuvid':
358+
self.session_data.cf_unique_visitor_id = value
357359
elif cookie_name == 'cf_clearance':
358360
self.session_data.cf_clearance = value
359361
self.session_data.cf_expires = dt.datetime.now() + dt.timedelta(hours=1)

src/chatgpt_gui/network/client/chatgpt.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -110,6 +110,9 @@ def __init__(self, parent: QObject, **kwargs) -> None:
110110
if self.session_data.cf_bm:
111111
self.set_cookie('__cf_bm', self.session_data.cf_bm)
112112

113+
if self.session_data.cf_unique_visitor_id:
114+
self.set_cookie('_cfuvid', self.session_data.cf_unique_visitor_id)
115+
113116
if self.session_data.cf_clearance:
114117
self.set_cookie('cf_clearance', self.session_data.cf_clearance)
115118

@@ -427,6 +430,9 @@ def refresh_auth(self) -> bool:
427430
if cf_bm := self.session.cookies.get('__cf_bm'):
428431
self.session_data.cf_bm = cf_bm
429432

433+
if cf_unique_visitor_id := self.session.cookies.get('_cfuvid'):
434+
self.session_data.cf_unique_visitor_id = cf_unique_visitor_id
435+
430436
if cf_clearance := self.session.cookies.get('cf_clearance'):
431437
self.session_data.cf_clearance = cf_clearance
432438

src/chatgpt_gui/network/client/structures.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -151,6 +151,7 @@ class Session:
151151

152152
user: User | None = field(default=None)
153153
cf_bm: str | None = field(default=None)
154+
cf_unique_visitor_id: str | None = field(default=None)
154155
cf_clearance: str | None = field(default=None)
155156
cf_expires: dt.datetime | None = field(default=None)
156157
session_expires: dt.datetime | None = field(default=None)
@@ -177,6 +178,7 @@ def from_json(cls, data: dict[str, Any]) -> Session:
177178
return cls(
178179
user=user,
179180
cf_bm=cf_data.get('bm'),
181+
cf_unique_visitor_id=cf_data.get('unique_visitor_id'),
180182
cf_clearance=cf_data.get('clearance'),
181183
cf_expires=cf_expires,
182184
session_expires=session_expires,
@@ -188,6 +190,7 @@ def clear(self) -> None:
188190
"""Clear data while keeping object reference."""
189191
self.user = None
190192
self.cf_bm = None
193+
self.cf_unique_visitor_id = None
191194
self.cf_clearance = None
192195
self.cf_expires = None
193196
self.session_expires = None
@@ -207,6 +210,7 @@ def to_json(self) -> dict[str, Any]:
207210
'user': self.user.to_json() if self.user else {},
208211
'cloudflare': {
209212
'bm': self.cf_bm,
213+
'unique_visitor_id': self.cf_unique_visitor_id,
210214
'clearance': self.cf_clearance,
211215
'expires': self.cf_expires.strftime(CG_DATE_FORMAT) if self.cf_expires is not None else None
212216
},

0 commit comments

Comments
 (0)