鱼C论坛

 找回密码
 立即注册
查看: 34161|回复: 287

[作品展示] 有道翻译最新版爬虫,解析反爬虫了,不要再问{"errorCode":50}错误怎么办了

  [复制链接]
发表于 2018-3-15 10:46:27 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

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

x
本帖最后由 gopythoner 于 2018-4-16 16:43 编辑

昨天(2018年3月14日晚)刚写的有道翻译爬虫,新鲜出炉,拿到就可以用了

其实有道翻译的反爬虫就是sign的md5加密

具体的js代码如下:
  1. var n = b.val(),
  2.             r = "" + ((new Date).getTime() + parseInt(10 * Math.random(), 10)),
  3.             o = u.md5(S + n + r + D),
  4.             a = n.length;
  5.         if (L(), w.text(a), a > 5e3) {
  6.             var l = n;
  7.             n = l.substr(0, 5e3), o = u.md5(S + n + r + D);
  8.             var c = l.substr(5e3);
  9.             c = (c = c.trim()).substr(0, 3), u("#inputTargetError").text("有道翻译字数限制为5000字,“" + c + "”及其后面没有被翻译!").show(), w.addClass("fonts__overed")
  10.         } else w.removeClass("fonts__overed"), u("#inputTargetError").hide();
  11.         f.isWeb(n) ? i() : s({
  12.             i: n,
  13.             from: _,
  14.             to: C,
  15.             smartresult: "dict",
  16.             client: S,
  17.             salt: r,
  18.             sign: o,
  19.             doctype: "json",
  20.             version: "2.1",
  21.             keyfrom: "fanyi.web",
  22.             action: e || "FY_BY_DEFAULT",
  23.             typoResult: !1
复制代码


使用Python实现salt和sign参数的获取代码:
  1. def get_md(self, value):
  2.         '''md5加密'''
  3.         m = hashlib.md5()
  4.         # m.update(value)
  5.         m.update(value.encode('utf-8'))
  6.         return m.hexdigest()

  7.     def get_salt(self):
  8.         '''根据当前时间戳获取salt参数'''
  9.         s = int(time.time() * 1000) + random.randint(0, 10)
  10.         return str(s)

  11.     def get_sign(self):
  12.         '''使用md5函数和其他参数,得到sign参数'''
  13.         s = "fanyideskweb" + self.msg + self.salt + self.D
  14.         return self.get_md(s)
复制代码


得到关键参数,data就有了:
  1. data = {
  2.             'i': self.msg,
  3.             'from': 'AUTO',
  4.             'to': 'AUTO',
  5.             'smartresult': 'dict',
  6.             'client': 'fanyideskweb',
  7.             'salt': self.salt,
  8.             'sign': self.sign,
  9.             'doctype': 'json',
  10.             'version': '2.1',
  11.             'keyfrom': 'fanyi.web',
  12.             'action': 'FY_BY_CL1CKBUTTON',
  13.             'typoResult': 'true'
  14.         }
复制代码


最后还要加上headers才行,然而我经过试探,发现headers里面有几个参数是必须的,其他的是非必须的:
  1. headers = {
  2.             # 'Accept': 'application/json, text/javascript, */*; q=0.01',
  3.             # 'Accept-Encoding': 'gzip, deflate',
  4.             # 'Accept-Language': 'zh-CN,zh;q=0.9,mt;q=0.8',
  5.             # 'Connection': 'keep-alive',
  6.             # 'Content-Length': '240',
  7.             # 'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8',
  8.             'Cookie': 'OUTFOX_SEARCH_USER_ID=-2022895048@10.168.8.76;',
  9.             # 'Host': 'fanyi.youdao.com',
  10.             # 'Origin': 'http://fanyi.youdao.com',
  11.             'Referer': 'http://fanyi.youdao.com/',
  12.             'User-Agent': 'Mozilla/5.0 (Windows NT 6.2; rv:51.0) Gecko/20100101 Firefox/51.0',
  13.             # 'X-Requested-With': 'XMLHttpRequest'
  14.         }
复制代码


算上这些,就可以去请求了,看看运行的效果,直接翻译,妥妥的
Snipaste_2018-03-15_10-42-33.png

查看完整代码需要回复,我隐藏了爬虫的分析过程和完整代码请查看http://www.tendcode.com/article/youdao-spider/

煎蛋网的爬虫在这里煎蛋网妹子图爬虫
顺便说一下,大家爬别人的网站,如果不是特别的原因,尽量设置延时时间,不要过于频繁的爬取

评分

参与人数 3荣誉 +14 鱼币 +14 贡献 +9 收起 理由
solardo + 4 + 4 + 3
jermey1994 + 5 + 5 + 3 学习了!!!
louxinghao + 5 + 5 + 3 感谢楼主无私奉献!

查看全部评分

小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2021-2-18 08:52:35 | 显示全部楼层
大佬们,JS文件是怎么打开的,怎么看里面的内容
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-2-18 00:42:29 | 显示全部楼层
本帖最后由 大脑袋硕鼠 于 2024-5-15 21:38 编辑

ttt
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2020-6-26 17:23:43 | 显示全部楼层
。。。
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2020-5-2 17:47:39 | 显示全部楼层
厉害厉害
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-3-19 13:28:28 | 显示全部楼层
试试看
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-2-19 19:30:39 | 显示全部楼层
大佬,挖坟

雪地跪求,第一段js的代码,是如何获得的呢?

小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-2-10 15:27:48 | 显示全部楼层
好像现在有道fanyi.min.js代码又变了。。定义了一个generateSaltSign方法。。不知道在哪里能找到方法的源码。。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-1-18 03:49:14 | 显示全部楼层
666
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2019-10-29 23:14:08 | 显示全部楼层
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2019-10-1 22:16:37 | 显示全部楼层
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2019-8-28 14:25:56 | 显示全部楼层
膜拜
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2019-8-1 17:24:16 | 显示全部楼层
大佬  我想问一下我在network没有看到有js文件,是在哪里找呢 Elements吗? 现在有道又加了一个form data
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-7-24 12:00:40 | 显示全部楼层
好像把我的url里面的‘_o’去掉也可以的,和小甲鱼演示出来的结果就一样了
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-7-23 09:44:32 | 显示全部楼层
学习
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2019-7-10 23:18:06 | 显示全部楼层
19年 python v3.6,那套代码已经不行了,修修补补还是error code:50
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-7-10 22:47:53 | 显示全部楼层
    我的第一个爬虫程序就死在了error code:50上了
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-7-10 17:04:11 | 显示全部楼层
学到了,感谢
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-7-1 18:57:45 | 显示全部楼层
这个厉害了,谢谢楼主
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-6-29 20:02:05 | 显示全部楼层
看看完整代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-6-17 17:00:26 | 显示全部楼层
感谢老哥分享!!
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2026-4-1 10:53

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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