欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

python爬虫爬取有道翻译(破解js加密)

程序员文章站 2022-03-28 15:34:59
1.分析有的数据是通过加密解密得到的。加密:把明文变成密文解密:把密文变成明文常见的加密方式:js加密css加密base64加密尝试一下:import requests# url = "http://www.httpbin.org/post"url = "http://fanyi.youdao.com/translate_o?smartresult=dict&smartresult=rule"headers = { 'X-Requested-With': 'XM...

1.分析

有的数据是通过加密解密得到的。
加密:把明文变成密文
解密:把密文变成明文

常见的加密方式:
js加密
css加密
base64加密
python爬虫爬取有道翻译(破解js加密)
python爬虫爬取有道翻译(破解js加密)
尝试一下:

import requests # url = "http://www.httpbin.org/post" url = "http://fanyi.youdao.com/translate_o?smartresult=dict&smartresult=rule" headers = { 'X-Requested-With': 'XMLHttpRequest', 'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.75 Safari/537.36', 'Origin': 'http://fanyi.youdao.com', 'Referer': 'http://fanyi.youdao.com/', 'Cookie': 'OUTFOX_SEARCH_USER_ID=-1808168645@10.108.160.208; JSESSIONID=aaaRyVJv8oEwg7dPaWrux; OUTFOX_SEARCH_USER_ID_NCOO=704285648.1294403; ___rl__test__cookies=1602406917270' } data = {'action': 'FY_BY_CLICKBUTTION', 'bv': '9caf244986fe6d1de38207408302e500', 'client': 'fanyideskweb', 'doctype': 'json', 'from': 'AUTO', 'i': '你好', 'keyfrom': 'fanyi.web', 'lts': '1602406480004', 'salt': '16024064800043', 'sign': '726a3e12c15fcb8fda7dbd722a80f94b', 'smartresult': 'dict', 'to': 'AUTO', 'version': '2.1' } response = requests.post(url=url,headers=headers,data=data) print(response.content.decode("utf-8")) 

python爬虫爬取有道翻译(破解js加密)
发现,当修改翻译内容的时候,得不到想要的结果。其实做为一个合格的爬虫开发者,应该有敏感性。
python爬虫爬取有道翻译(破解js加密)
断点调试js,查看变量值,再次确认。
python爬虫爬取有道翻译(破解js加密)

var r = function(e) { var t = n.md5(navigator.appVersion)![在这里插入图片描述](https://img-blog.csdnimg.cn/20201012090429630.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl81MDg0MzUyMg==,size_16,color_FFFFFF,t_70#pic_center) , r = "" + (new Date).getTime() , i = r + parseInt(10 * Math.random(), 10); return { ts: r, bv: t, salt: i, sign: n.md5("fanyideskweb" + e + i + "]BjuETDhU)zqSxf-=B#7m") } }; 

经过分析,确认参数:
ts是当前时间戳
bv是使用md5加密navigator.appVersion,只要浏览器不变,其实可以是固定的
python爬虫爬取有道翻译(破解js加密)
salt是时间戳拼接0-9的随机整数字符串
sgin是md5加密的
这里的e通过断点调试确认e就是翻译的内容

接下来需要使用python来模拟这些信息:
python爬虫爬取有道翻译(破解js加密)

import time import random

its = str(round(time.time(),3)).replace(".","") salt = its+str(random.randint(0,9)) print(its,salt) 

md5算法一般用来做加密,不可逆的。
python爬虫爬取有道翻译(破解js加密)

import hashlib

content = "diyisiifudsifhidfhsdhfsdkhfsdkhfksdhfkshkjdhjskhfksdhfkshfdh哈哈哈哈哈哈哈一hdd" md5 = hashlib.md5() md5.update(content.encode("utf-8")) ret = md5.hexdigest() print(ret,len(ret)) 

2.完整代码

import requests import time import random import hashlib from pprint import pprint def main(): """主程序""" url = "http://fanyi.youdao.com/translate_o?smartresult=dict&smartresult=rule" headers = { 'X-Requested-With': 'XMLHttpRequest', 'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.75 Safari/537.36', 'Origin': 'http://fanyi.youdao.com', 'Referer': 'http://fanyi.youdao.com/', 'Cookie': 'OUTFOX_SEARCH_USER_ID=-1808168645@10.108.160.208; JSESSIONID=aaaRyVJv8oEwg7dPaWrux; OUTFOX_SEARCH_USER_ID_NCOO=704285648.1294403; ___rl__test__cookies=1602406917270' } i = input(">") data = get_data(i) response = requests.post(url=url,headers=headers,data=data) print(response.json()["translateResult"][0][0]["tgt"]) def do_md5(content): """md5方法""" md5 = hashlib.md5() md5.update(content.encode("utf-8")) return md5.hexdigest() def get_data(i): """获取参数""" lts = str(round(time.time(), 3)).replace(".", "") salt = lts + str(random.randint(0, 9)) sign = do_md5("fanyideskweb" + i + salt + "]BjuETDhU)zqSxf-=B#7m") data = { 'action': 'FY_BY_CLICKBUTTION', 'bv': '9caf244986fe6d1de38207408302e500', 'client': 'fanyideskweb', 'doctype': 'json', 'from': 'AUTO', 'i': i, 'keyfrom': 'fanyi.web', 'lts': lts, 'salt': salt, 'sign': sign, 'smartresult': 'dict', 'to': 'AUTO', 'version': '2.1' } return data if __name__ == '__main__': main() 

3.结果

python爬虫爬取有道翻译(破解js加密)

本文地址:https://blog.csdn.net/weixin_50843522/article/details/109020970

相关标签: python 爬虫