MTrans icon indicating copy to clipboard operation
MTrans copied to clipboard

关于sign和Cookie的计算

Open cometlj opened this issue 6 years ago • 11 comments

你好,我写了一个NodeJS版本的hexo标题自动翻译插件,里面也涉及了调用有关百度翻译,有道翻译,和Google翻译的接口,但是百度翻译接口自升级后,已经无法直接使用了,必须使用appid和appsecret的方式调用。

看到你的项目中对百度翻译接口中的sign和Cookie值是直接指定的,是什么原理呢?另外是否有动态设置的方式?谢谢

cometlj avatar May 09 '18 08:05 cometlj

你好,直接指定的 sign 和 Cookie 只能正常使用一段时间,因为 gtk 和 token 隔一段时间就会改变,Cookie 也会失效。一种万无一失的办法是:每次请求前先更新有效的 sign、token 和 Cookie。 动态获取 sign、token 和 Cookie 方式的思路:可以通过抓取 http://fanyi.baidu.com/ 的 HTML 源码,从该源码中提取出 gtk 和 token;另外,Cookie 也是能够获取到的。 希望能够解答你的疑惑!先记下,后续我会修复这个问题。

hujingshuang avatar May 09 '18 08:05 hujingshuang

谢谢答复,token值按照这篇文章中作者的方式,可以直接抓取到,但是对于sign的计算还有Cookie的计算方式,在POST提交到http://fanyi.baidu.com/v2transapi时,对端总会报998错误-cookie失效。这几天我再试验下

cometlj avatar May 09 '18 08:05 cometlj

错误代码 998 是 Cookie 失效,在README的末尾注意处,你可以先手动获取 Cookie,并添加到 POST 请求头中试一下,目前我是用的这种简单办法。另外,sign 的 js 计算代码在 ./tk/Baidu.js 有提供。

hujingshuang avatar May 09 '18 09:05 hujingshuang

sign的算法及POST提交方法可参看 python 版,亲测可用 https://github.com/yucongo/mgoogle_translate/blob/master/bd_fanyi.py 源于上面提到的简书博文 https://www.jianshu.com/p/38a65d8d3e80

用 node的话 OBSTR应该是可以直接执行的

yucongo avatar May 15 '18 05:05 yucongo

@yucongo 你这个也是固定的 GTK 和 Cookie,通常 Cookie 是需要自动获取的,GTK 也会更新,上面的兄弟 @cometlj 是因为 Cookie 失效引起的,他的 sign 应该是正确的。

hujingshuang avatar May 15 '18 07:05 hujingshuang

sign值可以计算得出,但是cookie值经常会变化,确实不清楚里面的构成有哪些key和value

cometlj avatar May 15 '18 16:05 cometlj

https://github.com/yucongo/mgoogle_translate/blob/master/bd_fanyi.py 确实是固定cookies,但用这个cookies 用了几个月了,貌似不会过时。每次只需签字就可以用。OBSTR那地方还可以用 js2python转换成 python 码,提高速度(python里用 js 环境比较慢)。

腾讯翻译的cookies 会过时,同一个cookies 及相关的 gtk 第二天就不能用了。

yucongo avatar May 16 '18 01:05 yucongo

https://github.com/yucongo/mgoogle_translate/blob/master/bd_fanyi.py 确实是固定cookies,但用这个cookies 用了几个月了,貌似不会过时。每次只需签字就可以用。OBSTR那地方还可以用 js2python转换成 python 码,提高速度(python里用 js 环境比较慢)。

腾讯翻译的cookies 会过时,同一个cookies 及相关的 gtk 第二天就不能用了。

大神,腾讯cookies过时有什么解决办法吗?

boncwangzehua avatar Jan 07 '19 08:01 boncwangzehua

大神, 快速查询20左右就没有数据返回了,这个有办法解决吗? 可以留下联系方式吗VX或QQ

712762160 avatar Jun 22 '19 08:06 712762160

@712762160 可以使用ip代理

hujingshuang avatar Jun 24 '19 06:06 hujingshuang

代码具体要怎么做呢?

我试了一下网页,无论网页点多少次也不会失效。

712762160 avatar Jun 24 '19 06:06 712762160