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

64 篇文章 97 订阅


前言

有道翻译地址: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': '1@1.1.1.1', # 这个必须要加,随便构造一个就行 格式:XXX@X.X.X.X
}

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('爬虫'));
  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

阿J~

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值