MTrans
MTrans copied to clipboard
关于sign和Cookie的计算
你好,我写了一个NodeJS版本的hexo标题自动翻译插件,里面也涉及了调用有关百度翻译,有道翻译,和Google翻译的接口,但是百度翻译接口自升级后,已经无法直接使用了,必须使用appid和appsecret的方式调用。
看到你的项目中对百度翻译接口中的sign和Cookie值是直接指定的,是什么原理呢?另外是否有动态设置的方式?谢谢
你好,直接指定的 sign 和 Cookie 只能正常使用一段时间,因为 gtk 和 token 隔一段时间就会改变,Cookie 也会失效。一种万无一失的办法是:每次请求前先更新有效的 sign、token 和 Cookie。 动态获取 sign、token 和 Cookie 方式的思路:可以通过抓取 http://fanyi.baidu.com/ 的 HTML 源码,从该源码中提取出 gtk 和 token;另外,Cookie 也是能够获取到的。 希望能够解答你的疑惑!先记下,后续我会修复这个问题。
谢谢答复,token值按照这篇文章中作者的方式,可以直接抓取到,但是对于sign的计算还有Cookie的计算方式,在POST提交到http://fanyi.baidu.com/v2transapi时,对端总会报998错误-cookie失效。这几天我再试验下
错误代码 998 是 Cookie 失效,在README的末尾注意处,你可以先手动获取 Cookie,并添加到 POST 请求头中试一下,目前我是用的这种简单办法。另外,sign 的 js 计算代码在 ./tk/Baidu.js 有提供。
sign的算法及POST提交方法可参看 python 版,亲测可用 https://github.com/yucongo/mgoogle_translate/blob/master/bd_fanyi.py 源于上面提到的简书博文 https://www.jianshu.com/p/38a65d8d3e80
用 node的话 OBSTR应该是可以直接执行的
@yucongo 你这个也是固定的 GTK 和 Cookie,通常 Cookie 是需要自动获取的,GTK 也会更新,上面的兄弟 @cometlj 是因为 Cookie 失效引起的,他的 sign 应该是正确的。
sign值可以计算得出,但是cookie值经常会变化,确实不清楚里面的构成有哪些key和value
https://github.com/yucongo/mgoogle_translate/blob/master/bd_fanyi.py 确实是固定cookies,但用这个cookies 用了几个月了,貌似不会过时。每次只需签字就可以用。OBSTR那地方还可以用 js2python转换成 python 码,提高速度(python里用 js 环境比较慢)。
腾讯翻译的cookies 会过时,同一个cookies 及相关的 gtk 第二天就不能用了。
https://github.com/yucongo/mgoogle_translate/blob/master/bd_fanyi.py 确实是固定cookies,但用这个cookies 用了几个月了,貌似不会过时。每次只需签字就可以用。OBSTR那地方还可以用 js2python转换成 python 码,提高速度(python里用 js 环境比较慢)。
腾讯翻译的cookies 会过时,同一个cookies 及相关的 gtk 第二天就不能用了。
大神,腾讯cookies过时有什么解决办法吗?
大神, 快速查询20左右就没有数据返回了,这个有办法解决吗? 可以留下联系方式吗VX或QQ
@712762160 可以使用ip代理
代码具体要怎么做呢?
我试了一下网页,无论网页点多少次也不会失效。