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

关于sign和Cookie的计算 #1

Open
cometlj opened this issue May 9, 2018 · 11 comments
Open

关于sign和Cookie的计算 #1

cometlj opened this issue May 9, 2018 · 11 comments

Comments

@cometlj
Copy link

cometlj commented May 9, 2018

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

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

@hujingshuang
Copy link
Owner

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

@cometlj
Copy link
Author

cometlj commented May 9, 2018

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

@hujingshuang
Copy link
Owner

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

@yucongo
Copy link

yucongo commented May 15, 2018

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

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

@hujingshuang
Copy link
Owner

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

@cometlj
Copy link
Author

cometlj commented May 15, 2018

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

@yucongo
Copy link

yucongo commented May 16, 2018

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

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

@boncwangzehua
Copy link

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

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

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

@712762160
Copy link

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

@hujingshuang
Copy link
Owner

@712762160 可以使用ip代理

@712762160
Copy link

代码具体要怎么做呢?

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

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

No branches or pull requests

5 participants