马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
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'
}
算上这些,就可以去请求了,看看运行的效果,直接翻译,妥妥的
查看完整代码需要回复,我隐藏了爬虫的分析过程和完整代码请查看http://www.tendcode.com/article/youdao-spider/
煎蛋网的爬虫在这里煎蛋网妹子图爬虫
顺便说一下,大家爬别人的网站,如果不是特别的原因,尽量设置延时时间,不要过于频繁的爬取 |