Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

登录12小时之后就会收掉线 #31

Closed
lichongsw opened this issue Sep 30, 2017 · 3 comments
Closed

登录12小时之后就会收掉线 #31

lichongsw opened this issue Sep 30, 2017 · 3 comments

Comments

@lichongsw
Copy link

linux (16.04)上测试只能保持在线12小时,之后就会接受不到消息

细节

  1. SyncCheck会收到1102返回码,再也接受不到消息。

  2. 尝试在收到1102后切换到其他可用的服务也无法重连 。
    SyncSrv: "webpush.wx.qq.com",
    SyncSrv: "wx2.qq.com",

  3. 然后尝试使用定时器每隔3分钟在上面两个服务之间切换也没有作用。

  4. 新号老号测试结果都这样。

有没有人遇到一样的情况呢?谢谢指教。

@lanybass
Copy link

lanybass commented Oct 1, 2017

在无法登陆之后,立即用浏览器去登录web版微信,会看到提示无法登陆的原因。
一般是:“为了你的账号安全……”

@lichongsw
Copy link
Author

尝试各种更改和测试之后,推测12小时后准时掉线是因为cookies的问题。

曾经在swingcoder的一篇文章里看到过
“webwxnewloginpage登录时设置的cookie超期时间是12小时,如果保持一直在登录状态在后台运行是个问题”
https://my.oschina.net/swingcoder/blog/846324

最近同时测试一款基于Itchat的的版本,已经能够做到稳定在线几天,暂时还没有最长在线时间的记录。(期间由于没有给登录客户端的手机充电导致客户端长时间离线,网页版退出过一次)
https://github.com/youfou/wxpy

目前正在分析两份代码之间的差异,由webwxnewloginpage获取cookies确实不一样。但是一番更改之后也没有效果

Itchat 获取cookies在这里,有使用agent和禁止重定向。
https://github.com/littlecodersh/ItChat/blob/bbcb8173b611137a6fd6ac8a4d0a96cb8892fbd6/itchat/components/login.py#L155
用于获取的cookies的url以及header和返回值如下:

https://wx2.qq.com/cgi-bin/mmwebwx-bin/webwxnewloginpage?ticket=A0SDusp2BS5bDUK5anHLxG3_@qrticket_0&uuid=wctca-zidQ==&lang=zh_CN&scan=1507635953, headers {'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.71 Safari/537.36'}
<RequestsCookieJar[<Cookie webwx_data_ticket=gSfPzkiPgY6AOraNlSPg0OCT for .qq.com/>, <Cookie mm_lang=zh_CN for .wx2.qq.com/>, <Cookie webwx_auth_ticket=CIsBEISA2rwIGoABQrMB8HLjAyY+tU2hXXaUkKXDfLsVdMGC+9Bp6H6gsOisukWtGlkKtVFUvmXcDldxOYYVFlszt94PSG+E3uGB4ugySujDph7XNZBIGPmGqCf/i9pCuDY3rReyPkUQB238w/ghKuqKLwORkYDbBQFMSVd+jRzpyjXimCVxvW+UHlU= for .wx2.qq.com/>, <Cookie webwxuvid=63c07c6419b7a7715dcaad0dc0c5db08f61b5954a4d5be37b3620923746d29daf4160550da82e548353b8e560d4a85b7 for .wx2.qq.com/>, <Cookie wxloadtime=1507635956 for .wx2.qq.com/>, <Cookie wxsid=35D2iIbg0ukKuRnK for .wx2.qq.com/>, <Cookie wxuin=1723220544 for .wx2.qq.com/>]>

在wechat里面也尝试使用agent和禁止重定向

req, err := http.NewRequest("GET", uri, nil)
req.Header.Add("User-Agent", common.UserAgent)

client := &http.Client{}

client.CheckRedirect = func(req *http.Request, via []*http.Request) error { 
	return http.ErrUseLastResponse
}
resp, err := client.Do(req)
if err != nil {
	return nil, err
}

用于获取的cookies的url以及header和返回值如下

https://wx2.qq.com/cgi-bin/mmwebwx-bin/webwxnewloginpage?fun=new&lang=zh_CN&scan=1507687863&ticket=AyNMMOHzFrz43QUK8EMwYU25%40qrticket_0&uuid=Iekd0qFZRA%3D%3D
{200 OK 200 HTTP/1.1 1 1 map[Set-Cookie:[wxuin=1726265714; Domain=wx2.qq.com; Path=/; Expires=Wed, 11-Oct-2017 14:11:07 GMT wxsid=96T1xEYbLjNG1aLT; Domain=wx2.qq.com; Path=/; Expires=Wed, 11-Oct-2017 14:11:07 GMT wxloadtime=1507687867; Domain=wx2.qq.com; Path=/; Expires=Wed, 11-Oct-2017 14:11:07 GMT mm_lang=zh_CN; Domain=wx2.qq.com; Path=/; Expires=Wed, 11-Oct-2017 14:11:07 GMT webwx_data_ticket=gSfdmOPkrNmf7LaAXPXB5qKO; Domain=.qq.com; Path=/; Expires=Wed, 11-Oct-2017 14:11:07 GMT webwxuvid=e406bc7b10dea4018895f36a0280b173eb655d21c12c4a529dc33bf97dd1f860b851925714d7358fd03e6389096dd836; Domain=wx2.qq.com; Path=/; Expires=Sat, 09-Oct-2027 02:11:07 GMT webwx_auth_ticket=CIsBEPDxp44JGoABWvu4yxffpXuED1uzTly5TtGVWW40hOUopQ86ilfb9NBm6bhETU4t4e1Io69qql5VwzgaaGDf8viD95sBtKLeaO26AdD4ZKxD1ptpVAMKWc4SvBBJr6QwFJcrHyU4CCEecF1fTvjrtuGjN31MilxEKyj7P7DUtFAc5sK86NYKrRE=; Domain=wx2.qq.com; Path=/; Expires=Sat, 09-Oct-2027 02:11:07 GMT] Content-Type:[text/plain;charset=utf-8]] 0xc4201bdea0 -1 [] true true map[] 0xc420119000 0xc4203bc420}

如果强制使用与Itchat一样的url(去掉func=new以及各种编码),结果如下,但任然是12小时退出

2017/10/11 10:37:25 [I] https://wx2.qq.com/cgi-bin/mmwebwx-bin/webwxnewloginpage?ticket=A0ufx-hRz7tqHeqT_svQ6Gd7@qrticket_0&uuid=AePQEjbbnQ==&lang=zh_CN&scan=1507689441
2017/10/11 10:37:25 [I] &{301 Moved Permanently 301 HTTP/1.1 1 1 map[Set-Cookie:[wxuin=1726265714; Domain=wx2.qq.com; Path=/; Expires=Wed, 11-Oct-2017 14:37:25 GMT wxsid=wjwcXefGO2o89I+v; Domain=wx2.qq.com; Path=/; Expires=Wed, 11-Oct-2017 14:37:25 GMT wxloadtime=1507689445; Domain=wx2.qq.com; Path=/; Expires=Wed, 11-Oct-2017 14:37:25 GMT mm_lang=zh_CN; Domain=wx2.qq.com; Path=/; Expires=Wed, 11-Oct-2017 14:37:25 GMT webwx_data_ticket=gSeQIas0NSwawJgOI8FtQaAb; Domain=.qq.com; Path=/; Expires=Wed, 11-Oct-2017 14:37:25 GMT webwxuvid=e406bc7b10dea4018895f36a0280b173eb655d21c12c4a529dc33bf97dd1f860b683ae7ef972e0cd821a3506a0d4a435; Domain=wx2.qq.com; Path=/; Expires=Sat, 09-Oct-2027 02:37:25 GMT webwx_auth_ticket=CIsBEKX177ENGoABcABzTKabULxH5RsmJhyUQtGVWW40hOUopQ86ilfb9NBm6bhETU4t4e1Io69qql5VwzgaaGDf8viD95sBtKLeaMxXMio8y0j7hhowHAjyPg+3rj69yaquXHwiwtO5GeCDZLCENLk2jtAO38qC6EjdqCj7P7DUtFAc5sK86NYKrRE=; Domain=wx2.qq.com; Path=/; Expires=Sat, 09-Oct-2027 02:37:25 GMT] Location:[/] Content-Type:[text/plain;charset=utf-8]] 0xc420198da0 -1 [] true true map[] 0xc4201ca000 0xc4203a4420}

@lanybass @songtianyi 求教有没有什么办法避开这个cookies的问题?也许思路一开始就不对,还请指教。

有没有能够超过12个小时的稳定在线的同学吱个声帮帮忙。由于对在线稳定性有要求,所以必须解决这个12小时掉线的问题。还请各位大神指点,再次感激不尽。

@lichongsw
Copy link
Author

目前基于itchat进行的调试(修改默认的agent,采用旧版本的requests,在python3.5的环境中已经能够稳定使用2周左右)。稳定性已经不是问题,但更严重的问题是长期大量使用群消息之后被微信各种封号和限制网页版登录。

目前这种使用环境确实非常苛刻,自己研究一下还好,不能用在需要可靠工作的场合。
web协议的研究基本达到目的,开始转入其他协议的研究。就此关闭问题,@lanybass @songtianyi和其他对微信有兴趣的朋友保持联系哦。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

3 participants