关于cookie过期问题
Closed this issue · 9 comments
问题描述
之前的cookie半个小时更新一次,只要在响应的时候拿到最新的cookie,也就是luma_session,就可以保持账号的登录状态。但是这两天好像14个小时(不是准确值,估计值)后会自动掉线。cookie过期前,请求里也没有吐最新的cookie,不知道你们这边是否有发现了这种情况。
复现步骤
无
预期结果
无
把cookie應用到bot之後,應該保持bot一直在心跳,同時不要繼續在瀏覽器裡面使用luma,因為如果瀏覽器裡面更新了cookie的話,這個更新信號會被bot錯過,bot就回被踢了。
使用匿名窗口乾淨登錄一次luma,的到cookie之後,關掉瀏覽器匿名窗口,只在bot裡面用,然後保證bot一直在工作,在心跳。這樣才可以讓bot的session一直存活。最長可以活7天。
把cookie應用到bot之後,應該保持bot一直在心跳,同時不要繼續在瀏覽器裡面使用luma,因為如果瀏覽器裡面更新了cookie的話,這個更新信號會被bot錯過,bot就回被踢了。
使用匿名窗口乾淨登錄一次luma,的到cookie之後,關掉瀏覽器匿名窗口,只在bot裡面用,然後保證bot一直在工作,在心跳。這樣才可以讓bot的session一直存活。最長可以活7天。
嗯,您说的最长可以保活7天,是否有测试过。我在项目中实现了和你这个commit差不多的代码,但是在十几个小时后,还是会出现cookie过期且luma接口没有给最新的cookie的情况。
`
func HandleRespCookies(resp *http.Response) {
setCookies := resp.Header.Values("Set-Cookie")
if len(setCookies) == 0 {
return
}
mu.Lock()
defer mu.Unlock()
common.Logger.Infow("Luma账号触发返回cookie")
//get old cookies
cookies := make(map[string]string)
for _, cookie := range strings.Split(common.COOKIE, ";") {
kv := strings.Split(cookie, "=")
if len(kv) == 2 {
cookies[strings.TrimSpace(kv[0])] = strings.TrimSpace(kv[1])
}
}
for _, cookie := range setCookies {
names := strings.Split(cookie, "; ")
kv := strings.Split(names[0], "=")
if len(kv) == 2 {
cookies[strings.TrimSpace(kv[0])] = strings.TrimSpace(kv[1])
}
}
var cookieArr []string
for k, v := range cookies {
cookieArr = append(cookieArr, k+"="+v)
}
common.COOKIE = strings.Join(cookieArr, "; ")
return
}`
还有,我想问一下您的common.COOKIE现在的格式是这样吗?
luma_session=SkMABQUEQBc6TA4PUVoaD0ERUEsvDFFxUFl6Cyl4Zk14UC8PLxJ6CjcNAid9AnFeEWtjcS9dHVNKek8GNHhaeF8SCAI-L18HCQFQAGNYU3wLXFx8Dy0De2dpTS83eEdtZSBRPA9RAykybggoYF9PbDZmQWsfNQd4Xn0GLzdkA3plLFAvDxZaPVdAET5jAQhtU19eew8URlJkSEYEMEZabWkJFi8MDksqH3EYKl5hDHsLVAdUNEpnZl1XYgAmdlwGWAcmIyciWycVbDsOdkdPWyYCelccLn5bZ28EFBBJZ1h4Q01GRBNWAhddEgxrQFdeBF0XCEVGVk95WFclAFh8XnsoNBwvUH0NLEsoCmYBW3YoBXxZFTxldXkJGwcae0lTZigIKQgSWgA9dg0HWA0JUTZfXnsPC1p4WXkFLzdoS3plKBU8MiADPgwIUSljYlF5NVhCazIxR29JYQEsDnwAemU0USsyLAItDE8IPQZMSG82BgVqVwhYf1lAQAY0SUBRYhYIPD4JRC0PVxkqTn1CeAtqTXwPAwFQYh5-Ji5ueGh2DgwtCAd8IBNVAhIDDVZ5VlJkeVJUZhtWBlRaE0VsY3cYNREVQx9ER1sNDVFaTGoIVxcIRQpGWl9N; access_token=""; refresh_token=""
cookie没事的,我给的是个已经过期的cookie,主要还是想知道你这边的cookie格式是否和我一样,不过应该是一样的。
我看到你这边通过/me接口做10s频率的心跳来获取cookie,我这边也是这样做的。但是昨天北京时间凌晨5点还是掉线了。
再问一下,你一般一个节点同时跑多少个账号,然后你执行视频生成任务的时候支持多个任务并发吗
格式一樣的,好幾個吧,是併發推任務的,現在還是測試,其實我們也還沒大規模跑。今提納已經快週了,我的還活著。所以我覺得7天應該是ok的。
你最好在所有的http請求中檢測cookie變動,而不是僅僅在心跳的時候。我覺得可能這部分你的實現有問題。
嗯,我这边也是这样做的,三天了也没有掉线,我觉得可能是luma官方某个时间点有强制过期的机制,或者我的账号可能触发了风控,先这样吧,谢谢啦
😇不客氣