Skip to content

Commit 40366ff

Browse files
committed
fix: continuous 403 error caused by still requesting the official website when using reverse proxy (#207)
1 parent 1ab53b4 commit 40366ff

File tree

5 files changed

+13
-68
lines changed

5 files changed

+13
-68
lines changed

package-lock.json

Lines changed: 0 additions & 31 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,6 @@
2424
"@primer/octicons-react": "^18.2.0",
2525
"countries-list": "^2.6.1",
2626
"eventsource-parser": "^0.1.0",
27-
"expiry-map": "^2.0.0",
2827
"file-saver": "^2.0.5",
2928
"github-markdown-css": "^5.2.0",
3029
"gpt-3-encoder": "^1.1.4",

src/background/apis/openai-api.mjs

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -73,9 +73,6 @@ export async function generateAnswersWithGptCompletionApi(
7373
async onError(resp) {
7474
port.onMessage.removeListener(messageListener)
7575
if (resp instanceof Error) throw resp
76-
if (resp.status === 403) {
77-
throw new Error('CLOUDFLARE')
78-
}
7976
const error = await resp.json().catch(() => ({}))
8077
throw new Error(!isEmpty(error) ? JSON.stringify(error) : `${resp.status} ${resp.statusText}`)
8178
},
@@ -139,9 +136,6 @@ export async function generateAnswersWithChatgptApi(port, question, session, api
139136
async onError(resp) {
140137
port.onMessage.removeListener(messageListener)
141138
if (resp instanceof Error) throw resp
142-
if (resp.status === 403) {
143-
throw new Error('CLOUDFLARE')
144-
}
145139
const error = await resp.json().catch(() => ({}))
146140
throw new Error(!isEmpty(error) ? JSON.stringify(error) : `${resp.status} ${resp.statusText}`)
147141
},

src/background/index.mjs

Lines changed: 8 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
import Browser from 'webextension-polyfill'
2-
import ExpiryMap from 'expiry-map'
32
import {
43
deleteConversation,
54
generateAnswersWithChatgptWebApi,
@@ -18,34 +17,26 @@ import {
1817
bingWebModelKeys,
1918
chatgptApiModelKeys,
2019
chatgptWebModelKeys,
20+
clearOldAccessToken,
2121
customApiModelKeys,
2222
defaultConfig,
2323
getPreferredLanguageKey,
2424
getUserConfig,
2525
githubThirdPartyApiModelKeys,
2626
gptApiModelKeys,
2727
Models,
28+
setAccessToken,
2829
} from '../config/index.mjs'
29-
import { isSafari } from '../utils/is-safari'
3030
import { config as menuConfig } from '../content-script/menu-tools'
3131
import { t, changeLanguage } from 'i18next'
3232
import '../_locales/i18n'
3333
import { openUrl } from '../utils/open-url'
3434

35-
const KEY_ACCESS_TOKEN = 'accessToken'
36-
const cache = new ExpiryMap(10 * 1000)
37-
3835
async function getChatGptAccessToken() {
39-
if (cache.get(KEY_ACCESS_TOKEN)) {
40-
return cache.get(KEY_ACCESS_TOKEN)
41-
}
42-
if (isSafari()) {
43-
const userConfig = await getUserConfig()
44-
if (userConfig.accessToken) {
45-
cache.set(KEY_ACCESS_TOKEN, userConfig.accessToken)
46-
} else {
47-
throw new Error('UNAUTHORIZED')
48-
}
36+
await clearOldAccessToken()
37+
const userConfig = await getUserConfig()
38+
if (userConfig.accessToken) {
39+
return userConfig.accessToken
4940
} else {
5041
const resp = await fetch('https://chat.openai.com/api/auth/session')
5142
if (resp.status === 403) {
@@ -55,9 +46,9 @@ async function getChatGptAccessToken() {
5546
if (!data.accessToken) {
5647
throw new Error('UNAUTHORIZED')
5748
}
58-
cache.set(KEY_ACCESS_TOKEN, data.accessToken)
49+
await setAccessToken(data.accessToken)
50+
return data.accessToken
5951
}
60-
return cache.get(KEY_ACCESS_TOKEN)
6152
}
6253

6354
async function getBingAccessToken() {
@@ -118,8 +109,6 @@ Browser.runtime.onConnect.addListener((port) => {
118109
} catch (err) {
119110
console.error(err)
120111
if (!err.message.includes('aborted')) {
121-
cache.delete(KEY_ACCESS_TOKEN)
122-
123112
if (
124113
['message you submitted was too long', 'maximum context length'].some((m) =>
125114
err.message.includes(m),

src/content-script/index.jsx

Lines changed: 5 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -5,19 +5,13 @@ import DecisionCard from '../components/DecisionCard'
55
import { config as siteConfig } from './site-adapters'
66
import { config as toolsConfig } from './selection-tools'
77
import { config as menuConfig } from './menu-tools'
8-
import {
9-
clearOldAccessToken,
10-
getPreferredLanguageKey,
11-
getUserConfig,
12-
setAccessToken,
13-
} from '../config/index.mjs'
8+
import { getPreferredLanguageKey, getUserConfig, setAccessToken } from '../config/index.mjs'
149
import {
1510
createElementAtPosition,
1611
cropText,
1712
getClientPosition,
1813
getPossibleElementByQuerySelector,
1914
initSession,
20-
isSafari,
2115
} from '../utils'
2216
import FloatingToolbar from '../components/FloatingToolbar'
2317
import Browser from 'webextension-polyfill'
@@ -100,9 +94,7 @@ async function getInput(inputQuery) {
10094
}
10195
}
10296

103-
async function prepareForSafari() {
104-
await clearOldAccessToken()
105-
97+
async function overwriteAccessToken() {
10698
if (location.hostname !== 'chat.openai.com' || location.pathname !== '/api/auth/session') return
10799

108100
const response = document.querySelector('pre').textContent
@@ -116,6 +108,7 @@ async function prepareForSafari() {
116108
}
117109
if (data.accessToken) {
118110
await setAccessToken(data.accessToken)
111+
console.log(data.accessToken)
119112
}
120113
}
121114

@@ -308,7 +301,8 @@ async function run() {
308301
}
309302
})
310303

311-
if (isSafari()) await prepareForSafari()
304+
await overwriteAccessToken()
305+
312306
prepareForSelectionTools()
313307
prepareForSelectionToolsTouch()
314308
prepareForStaticCard()

0 commit comments

Comments
 (0)