Skip to content

Commit

Permalink
fix(dicts): update sogou token
Browse files Browse the repository at this point in the history
  • Loading branch information
crimx committed Mar 19, 2019
1 parent 56990aa commit 570dc90
Showing 1 changed file with 24 additions and 18 deletions.
42 changes: 24 additions & 18 deletions src/components/dictionaries/sogou/engine.ts
Original file line number Diff line number Diff line change
Expand Up @@ -63,22 +63,13 @@ export const search: SearchFunction<SogouSearchResult, MachineTranslatePayload>
text = text.replace(/\n+/g, ' ')
}

let { dict_sogou } = await storage.local.get<{'dict_sogou': SogouStorage}>('dict_sogou')
if (!dict_sogou || (Date.now() - dict_sogou.tokenDate > 24 * 3600 * 1000)) {
dict_sogou = {
token: (await getSogouToken().catch(() => '')) || 'b33bf8c58706155663d1ad5dba4192dc',
tokenDate: Date.now()
}
storage.local.set({ dict_sogou })
}

return fetch('https://fanyi.sogou.com/reventondc/translate', {
method: 'POST',
headers: {
'Content-Type': 'application/x-www-form-urlencoded',
'X-Requested-With': 'XMLHttpRequest',
},
body: `from=${sl}&to=${tl}&text=${encodeURIComponent(text).replace(/%20/g, '+')}&uuid=${getUUID()}&s=${md5('' + sl + tl + text + dict_sogou.token)}&client=pc&fr=browser_pc&useDetect=on&useDetectResult=on&needQc=1&oxford=on&isReturnSugg=on`
body: `from=${sl}&to=${tl}&text=${encodeURIComponent(text).replace(/%20/g, '+')}&uuid=${getUUID()}&s=${md5('' + sl + tl + text + await getSogouToken())}&client=pc&fr=browser_pc&useDetect=on&useDetectResult=on&needQc=1&oxford=on&isReturnSugg=on`
})
.then(r => r.json())
.catch(handleNetWorkError)
Expand Down Expand Up @@ -130,13 +121,28 @@ function getUUID () {
}

async function getSogouToken (): Promise<string> {
const homepage = await fetch('https://fanyi.sogou.com').then(r => r.text())

const appjsMatcher = /dlweb\.sogoucdn\.com\/translate\/pc\/static\/js\/app\.\S+\.js/
const appjsPath = (homepage.match(appjsMatcher) || [''])[0]
if (!appjsPath) { return '' }

const appjs = await fetch('https://' + appjsPath).then(r => r.text())
let { dict_sogou } = await storage.local.get<{'dict_sogou': SogouStorage}>('dict_sogou')
if (!dict_sogou || (Date.now() - dict_sogou.tokenDate > 5 * 60000)) {
let token = '72da1dc662daf182c4f7671ec884074b'
try {
const homepage = await fetch('https://fanyi.sogou.com').then(r => r.text())

const appjsMatcher = /dlweb\.sogoucdn\.com\/translate\/pc\/static\/js\/app\.\S+\.js/
const appjsPath = (homepage.match(appjsMatcher) || [''])[0]
if (appjsPath) {
const appjs = await fetch('https://' + appjsPath).then(r => r.text())
const matchRes = appjs.match(/"(\w{32})"/)
if (matchRes) {
token = matchRes[1]
}
}
} catch (e) {/* nothing */}
dict_sogou = {
token,
tokenDate: Date.now()
}
storage.local.set({ dict_sogou })
}

return (appjs.match(/"(\w{32})"/) || ['', ''])[1]
return dict_sogou.token
}

0 comments on commit 570dc90

Please sign in to comment.