鱼C论坛

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

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

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

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

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

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

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

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

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

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

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

    def get_sign(self):
        '''使用md5函数和其他参数,得到sign参数'''
        s = "fanyideskweb" + self.msg + self.salt + self.D
        return self.get_md(s)

得到关键参数,data就有了:
data = {
            'i': self.msg,
            'from': 'AUTO',
            'to': 'AUTO',
            'smartresult': 'dict',
            'client': 'fanyideskweb',
            'salt': self.salt,
            'sign': self.sign,
            'doctype': 'json',
            'version': '2.1',
            'keyfrom': 'fanyi.web',
            'action': 'FY_BY_CL1CKBUTTON',
            'typoResult': 'true'
        }

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

算上这些,就可以去请求了,看看运行的效果,直接翻译,妥妥的
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 感谢楼主无私奉献!

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-3-15 11:22:10 | 显示全部楼层
膜拜
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-3-15 11:39:58 | 显示全部楼层
前来学习
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-3-15 13:05:56 | 显示全部楼层
一定要顶一个
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-3-15 13:40:25 | 显示全部楼层
大佬
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2018-3-15 13:44:50 | 显示全部楼层

我在研究煎蛋网的妹子图的js加密,但是发现对JS太不熟悉了,还没有转化成Python的方式
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-3-15 13:45:31 | 显示全部楼层

这个加密其实还挺基本的,至少没有转太多玩,JS写的也很清晰,看得懂
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

 楼主| 发表于 2018-3-15 13:46:01 | 显示全部楼层

可以可以
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-3-15 15:34:37 | 显示全部楼层
回复
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-3-15 18:04:01 | 显示全部楼层
哈哈
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-3-15 21:12:48 | 显示全部楼层
前来学习
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-3-15 21:32:05 | 显示全部楼层
sda
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2018-3-16 08:50:12 | 显示全部楼层

互相学习
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-3-16 10:55:45 | 显示全部楼层
查看
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-3-16 14:41:57 | 显示全部楼层
学习下,还没有学到爬虫,先保存资源
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-3-16 14:48:25 | 显示全部楼层
有道反爬虫了= =?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-3-16 14:55:53 | 显示全部楼层
JacksonHome 发表于 2018-3-16 14:48
有道反爬虫了= =?

是了是了,可以sign的获取方式是关键,知道获取的方式就好办了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-3-16 21:13:53 | 显示全部楼层
1
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-3-18 11:06:28 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-3-18 11:26:46 | 显示全部楼层
woo
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-6-11 03:06

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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