QQ登录

只需一步,快速开始

登录 | 立即注册 | 找回密码

主题

帖子

荣誉

资深鱼友Ⅰ

Rank: 8Rank: 8Rank: 8Rank: 8

积分
1828
查看: 209|回复: 1

有道翻译JS的疑问

[复制链接]
最佳答案
155 
累计签到:28 天
连续签到:1 天
gopythoner 发表于 2018-3-14 10:26:57 2091 | 显示全部楼层 |阅读模式

马上注册加入鱼C,享用更多服务吧^_^

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
很多人都试过去爬有道翻译,然后得到了{"errorcode":50}的回复
当然,我不是来问这个的,因为我知道请求的提交的data有加密参数
我的问题是,我看了很多关于sign这个参数的获取方式,都是使用的这个js片段获取的:
  1. var t = e.i,
  2.                         i = "" + ((new Date).getTime() + parseInt(10 * Math.random(), 10)),
  3.                         o = n.md5("fanyideskweb" + t + i + "ebSeFb%=XZ%T[KZ)c(sy!");
  4.                 r && r.abort(), r = n.ajax({
  5.                         type: "POST",
  6.                         contentType: "application/x-www-form-urlencoded; charset=UTF-8",
  7.                         url: "/bbk/translate_m.do",
  8.                         data: {
  9.                                 i: e.i,
  10.                                 client: "fanyideskweb",
  11.                                 salt: i,
  12.                                 sign: o,
  13.                                 tgt: e.tgt,
  14.                                 from: e.from,
  15.                                 to: e.to,
  16.                                 doctype: "json",
  17.                                 version: "3.0",
  18.                                 cache: !0
  19.                         },
复制代码

其中的重点就是o = n.md5("fanyideskweb" + t + i + "ebSeFb%=XZ%T[KZ)c(sy!");
但是我的疑问是,这个data分明跟我们在页面中看到的请求需要传入的data不一样啊
我看到的是下面这个:
  1. r = "" + ((new Date).getTime() + parseInt(10 * Math.random(), 10)),
  2.                         o = u.md5(S + n + r + D),
  3.                         a = n.length;
  4.                 if (L(), w.text(a), a > 5e3) {
  5.                         var l = n;
  6.                         n = l.substr(0, 5e3), o = u.md5(S + n + r + D);
  7.                         var c = l.substr(5e3);
  8.                         c = (c = c.trim()).substr(0, 3), u("#inputTargetError").text("有道翻译字数限制为5000字,“" + c + "”及其后面没有被翻译!").show(), w.addClass("fonts__overed")
  9.                 } else w.removeClass("fonts__overed"), u("#inputTargetError").hide();
  10.                 f.isWeb(n) ? i() : s({
  11.                         i: n,
  12.                         from: _,
  13.                         to: C,
  14.                         smartresult: "dict",
  15.                         client: S,
  16.                         salt: r,
  17.                         sign: o,
  18.                         doctype: "json",
  19.                         version: "2.1",
  20.                         keyfrom: "fanyi.web",
  21.                         action: e || "FY_BY_DEFAULT",
  22.                         typoResult: !1
复制代码


这个里面的sign是这样算的o = u.md5(S + n + r + D),
但是我一直都找不到这个D是什么参数,
所以问题来了,为什么大家都在用第一个方式去获取sign?js里面调用的明明是我发的第二段js片段才对
楼层
跳转到指定楼层
最佳答案
155 
累计签到:28 天
连续签到:1 天
gopythoner  楼主| 发表于 2018-3-14 10:33:16 | 显示全部楼层
附上有道翻译的请求参数的key:
  1. i:我是小苹果
  2. from:AUTO
  3. to:AUTO
  4. smartresult:dict
  5. client:fanyideskweb
  6. salt:1520993791615
  7. sign:abde633a1a1d286b65eac9fb55c99527
  8. doctype:json
  9. version:2.1
  10. keyfrom:fanyi.web
  11. action:FY_BY_CLICKBUTTION
  12. typoResult:false
复制代码

这个请求的key明明是跟我发的第二段里面的js一致,我不知道为什么那么多人用的第一段的js
当然,我没有试过第一段是不是可行,我相信既然都在用应该是可行的
但是,问题终究要回归到本质上面来,为什么不是第二段js代码

发表回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

小甲鱼强烈推荐 上一条 /1 下一条

    移动客户端下载(未启用)
    微信公众号

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备11014136号

Copyright 2018 鱼C论坛 版权所有 All Rights Reserved.

Powered by Discuz! X3.3 Copyright
© 2001-2018 Comsenz Inc.    All Rights Reserved.

小黑屋|手机版|Archiver|鱼C工作室 ( 粤公网安备 44051102000370号 | 粤ICP备11014136号

GMT+8, 2018-6-18 15:21

快速回复 返回顶部 返回列表