【python】js逆向基础案例——有道翻译

前言

大家好 我是小曼呐!
在这里插入图片描述

课程亮点:

1、爬虫的基本流程

2、反爬的基本原理

3、nodejs的使用

4、抠代码基本思路

环境介绍:

  • python 3.8
  • pycharm 2022专业版 >>> 免费使用教程文末名片获取
  • requests >>> pip install requests
  • nodejs

思路流程:

apple

  1. 请求加密

    我们传过去的 内容 经过了一段js加密(在浏览器执行的) 变成了密文 再到服务器 对比

    如果对比结果一致 返回内容

  2. 响应加密
    返回的这个内容 有可能会经过加密(在服务器)

    返回给浏览器(我们是能够看到明文/苹果的)

    所以在浏览器端 是肯定有解密方法的 我们只需要 找到这个解密方法 的来源 把加密方法抠出来本地调用即可

请求是啥样子: 翻译接口的请求

代码展示:

import hashlib
import time
import requests
import execjs
import json
import base64

f = open('demo.js', mode='r', encoding='utf-8').read()
ctx = execjs.compile(f)
ts = int(time.time() * 1000)
arg1 = f'client=fanyideskweb&mysticTime={ts}&product=webfanyi&key=fsdsogkndfokasodnaso'
完整源码、解答、教程皆+VX:xiaoyuanllsll 获取,记得验证备注“M”
sign = hashlib.md5(arg1.encode()).digest().hex()

cookies = {
    'OUTFOX_SEARCH_USER_ID_NCOO': '1036908156.9092367',
    'OUTFOX_SEARCH_USER_ID': '-1116526953@175.0.62.184',
}
headers = {
    'Accept': 'application/json, text/plain, */*',
    'Accept-Language': 'zh-CN,zh;q=0.9',
    'Cache-Control': 'no-cache',
    'Connection': 'keep-alive',
    # Requests sorts cookies= alphabetically
    # 'Cookie': 'OUTFOX_SEARCH_USER_ID_NCOO=1036908156.9092367; OUTFOX_SEARCH_USER_ID=-1116526953@175.0.62.184',
    'Origin': 'https://fanyi.youdao.com',
    'Pragma': 'no-cache',
    'Referer': 'https://fanyi.youdao.com/',
    'Sec-Fetch-Dest': 'empty',
    'Sec-Fetch-Mode': 'cors',
    'Sec-Fetch-Site': 'same-site',
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36',
    'sec-ch-ua': '"Not.A/Brand";v="8", "Chromium";v="114", "Google Chrome";v="114"',
    'sec-ch-ua-mobile': '?0',
    'sec-ch-ua-platform': '"Windows"',
}

data = {
    'i': '苹果',
    'from': 'auto',
    'to': '',
    'domain': '0',
    'dictResult': 'true',
    'keyid': 'webfanyi',
    'sign': sign,
    'client': 'fanyideskweb',
    'product': 'webfanyi',
    'appVersion': '1.0.0',
    'vendor': 'web',
    'pointParam': 'client,mysticTime,product',
    'mysticTime': ts,
    'keyfrom': 'fanyi.web',
}
# 完整源码、解答、教程皆+VX:xiaoyuanllsll 获取,记得验证备注“M”
# 应该是在一个时间段内 会进行参数的校验
response = requests.post(', cookies=cookies, headers=headers, data=data)
text = response.content.decode('utf-8')
json_str = ctx.call('deSign', text)
json_data = json.loads(base64.b64decode(json_str).decode())
print(json_data)

尾语
感谢你观看我的文章呐~

希望本篇文章有对你带来帮助 🎉,有学习到一点知识~

学无止境,期待你变成更好的自己。(让我们一起努力叭)。

在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值