Mike Wang
Mike Wang
这样不是很妥当。这个 Error 是我主动打出来的,而不是服务端返回的,因此不需要这样处理。 另外,如果服务端打出的 error code 为 `0`,则表示请求成功,单纯的字符串匹配则不能判断这点。 造成这个 Error 的原因,是以前服务端在会话过期时会返回 `"errors": [{"code": 400}]` 类似的 JSON 内容,现在是直接返回空响应,自然会导致 JSON 解析失败。 毕业后这个脚本我已不再维护,因此服务端升级后产生新的异常也是难以避免的。这种情况,你可以先判断是否为空响应。
#4 重复 > 如果您使用 [Requests](http://github.com/requests/requests) 库,请使用`requests.Session()`维持会话。 每隔一段时间,使用同一 session 向 api 发起请求。 当 cookie 临界过期时,会收到来自 api 的`Set-Cookie` 头部,包含新的 cookie,原 cookie 作废。 requests 库的 Session 会自动维护更新 cookie 值。
> 也就是说我如果用别的语言和普通的post请求的话,是需要手动将set-cookie头部取出来的吗? 是的。如果使用其他语言自行处理会话,需要严格按照服务器发来header中Set-Cookie的指示,调整下一次请求header中的Cookie值。
> 安装好jdk后,配置完毕环境变量,cmd java正常,打开使用提示fail to luanch jvm 使用以下命令运行: ```bash java -jar ./ChxGUI-1.0.jar ``` **需要注意的是,JDK 版本应该为 11 。** 由于本人已经毕业,这个工具的开发已经趋于停滞,超星的登录接口可能已经发生了改变,推荐使用类似的其他工具。 当然,也欢迎提PR,检查通过后我会合并到主分支。
我还是写个demo吧。有空更新。
请参考`keep_session.py`。
@56luffy 感谢反馈。是由于我的脚本中最初设置的 cookie 没有指定 `domain` 因此未被成功覆盖更新。 目前采用去重的方法解决了这个问题,脚本文件已经更新。 https://github.com/MikeWang000000/GoLibCookie/blob/8c25e685f9dc5facbdf34697b88f20e395674cb7/keep_session.py#L15-L16
请给出更详细的说明? 这里是服务端的代码。
如果您使用 [Requests](http://github.com/requests/requests) 库,请使用`requests.Session()`维持会话。
您在手机屏幕上看到的可视为垃圾数据,无需关心。如果没有出现`Access Denied!`,表示微信本地 session 有效,与获取 Cookie 没有关联。 “请重试”可能触发了服务器安全策略,请减少请求次数。