【2020-11-02】JS逆向入门之有道翻译


前言

有道翻译地址:http://fanyi.youdao.com/


一、页面分析


1.按F12,进入调试输入爬虫两个字

在这里插入图片描述

2.参数解析


  1. salt:13位时间戳+一个随机数
  2. sign:加密参数
  3. lts:13位时间戳
  4. bv:浏览器版本的加密参数

在这里插入图片描述


二、参数破解


1.参数加密位置查找

1.1 老规矩直接搜索sign,出来一个直接点进去

在这里插入图片描述

1.2 点进去后再搜寻sign,找到加密的位置

在这里插入图片描述

1.3 下断点调试,即可获取加密方式

  1. salt:13位时间戳+一个随机数
  2. sign:MD5(‘fanyideskweb’+翻译参数+salt+’]BjuETDhU)zqSxf-=B#7m’)
  3. lts:13位时间戳
  4. bv:MD5(浏览器版本)

在这里插入图片描述


2.参数破解测试

2.1 可以看出是成功的~

在这里插入图片描述


三、代码

import requests
import execjs

cookies = {
    
    
    'OUTFOX_SEARCH_USER_ID': '[email protected]', # 这个必须要加,随便构造一个就行 格式:[email protected]
}

headers = {
    
    
    'Connection': 'keep-alive',
    'Accept': 'application/json, text/javascript, */*; q=0.01',
    'X-Requested-With': 'XMLHttpRequest',
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.111 Safari/537.36',
    'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8',
    'Origin': 'http://fanyi.youdao.com',
    'Referer': 'http://fanyi.youdao.com/',
    'Accept-Language': 'zh-CN,zh;q=0.9',
}


with open('code.js', encoding='utf8') as f:
    js = f.read()
js_func = execjs.compile(js) # JS读取编译

translation_key = '爬虫'
encode_params = js_func.call('get_params',translation_key) # 获取加密参数
print(encode_params,'\n')

data = {
    
    
  'i': translation_key,
  'from': 'AUTO',
  'to': 'AUTO',
  'smartresult': 'dict',
  'client': 'fanyideskweb',
  'salt': encode_params['salt'],
  'sign': encode_params['sign'],
  'lts': encode_params['ts'],
  'bv': encode_params['bv'],
  'doctype': 'json',
  'version': '2.1',
  'keyfrom': 'fanyi.web',
  'action': 'FY_BY_REALTlME'
}

response = requests.post('http://fanyi.youdao.com/translate_o?smartresult=dict&smartresult=rule', headers=headers,cookies=cookies, data=data, verify=False)

print(response.text)
var CryptoJS = require('crypto-js'); //这里用的是nodeJS的加密包

function get_params(data) {
    
    
    var useragent = "5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.111 Safari/537.36";
    var bv = CryptoJS.MD5(useragent).toString()
        , ts = "" + (new Date).getTime()
        , salt = ts + parseInt(10 * Math.random(), 10);
    var sign = CryptoJS.MD5('fanyideskweb'+data+salt+']BjuETDhU)zqSxf-=B#7m').toString();
    return {
    
    bv: bv, ts: ts, salt: salt, sign: sign}
}

console.log(get_params('爬虫'));

猜你喜欢

转载自blog.csdn.net/qq_26079939/article/details/109444794