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

news2024/12/24 8:35:14

前言

嗨喽,大家好呀~这里是爱看美女的茜茜呐

课程亮点:

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:pytho8987获取,记得验证备注“777”
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:pytho8987获取,记得验证备注“777”
# 应该是在一个时间段内 会进行参数的校验
response = requests.post('https://dict.youdao.com/webtranslate', 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)

尾语

感谢你观看我的文章呐~本次航班到这里就结束啦 🛬

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

躲起来的星星🍥也在努力发光,你也要努力加油(让我们一起努力叭)。

最后,宣传一下呀~👇👇👇更多源码、资料、素材、解答、交流皆点击下方名片获取呀👇👇

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/654108.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Vue 配置正向代理的使用

浏览器对于用户的安全考虑,设置了同源策略。同源策略就是指协议、域名、端口都要相同的情况下,才能请求资源。 跨域: 跨域指的是:在浏览器中,从一个域名去请求另一个域名的资源时,如果协议、域名、端口任意…

深入理解 SpringBoot 日志框架:从入门到高级应用——(六)Log4j2 输出日志到 QQ邮箱

文章目录 获取 QQ 邮箱授权码添加依赖编写 SMTPAppender运行结果 要实现将 log4j2 输出日志到 QQ 邮箱,需按照以下步骤进行: 在 QQ 邮箱中设置 SMTP 服务,开启 POP3/SMTP 服务,获取 SMTP 服务地址、端口号、登录邮箱账号和密码。 …

拿捏指针(二)---对指针的进阶认识(中级)

文章目录 字符指针指针数组数组指针数组指针的定义&数组名与数组名的区别数组指针的使用 数组参数、指针参数一维数组传参二维数组传参一级指针传参二级指针传参 字符指针 我们知道,在指针的类型中有一种指针类型叫字符指针char * 。 字符指针的一般使用方法为…

Pytest自动化测试的三种运行方式

目录 1、主函数模式 2、命令行模式 3、通过读取pytest ini配置文件运行 (最主要运用的方式) 总结: Pytest 运行方式共有三种: 1、主函数模式 运行所有 pytest.main() 指定模块 pytest.main([-vs],,./testcase/test_day1.py)…

组合逻辑电路设计---多路选择器

目录 1、多路选择器简介 2、硬件设计 3、实验任务 4、程序设计 4.1、模块设计 4.2、绘制波形图 4.3、编写代码 (1)assign 中条件运算符(三目运算符)实现方法: (2)always 语句块中使用 …

逍遥自在学C语言 | 指针的基础用法

前言 在C语言中,指针是一项重要的概念,它允许我们直接访问和操作内存地址。 可以说,指针是C语言一大优势。用得好,你写程序如同赵子龙百万军中取上将首级;用得不好,则各种问题层出不穷,有种双…

.gitignore 忽略文件和目录

1. .gitignore 简介2. .gitignore 注释3. / 开头或结尾的忽略4. glob 模式匹配忽略5. .gitignore 全局忽略6. 忽略已提交到远程仓库的内容7. 使用各种框架下的忽略规则 1. .gitignore 简介 .gitignore 文件的作用就是告诉 git 哪些文件不需要添加到版本管理中(定义…

Python如何制作图标点选验证码

本文讲解如何使用python中的opencv库来制作图标点选验证码 图标点选验证码制作起来非常简单,你只需要准备两部分数据集,数据集数量都不用很多,背景图我选择了20个左右,大小为(300, 500)左右,图标我抓取了100多个,图标大小为(40,40)左右,图标由不同大小的透明度构成…

html实现好看的个人介绍,个人主页模板1(附源码)

文章目录 1.设计来源1.1 主界面1.2 关于我界面1.3 自我介绍界面1.4 项目演示界面1.5 个人成就界面1.6 联系我界面 2.效果和源码2.1 动态效果2.2 源代码 源码下载 作者:xcLeigh 文章地址:https://blog.csdn.net/weixin_43151418/article/details/13125310…

01-Maven 安装

一. 下载 apache官网下载 Maven:Maven – Download Apache Maven ,根据需要下载不同压缩包。 二. 安装和配置 因为是压缩包不是可执行文件,直接将压缩包进行解压即可,最好放在无中文目录下解压。 1. 配置maven本地仓库 打开解压…

自然语言处理从入门到应用——静态词向量预训练模型:神经网络语言模型(Neural Network Language Model)

分类目录:《自然语言处理从入门到应用》总目录 《自然语言处理从入门到应用——自然语言处理的语言模型(Language Model,LM)》中介绍了语言模型的基本概念,以及经典的基于离散符号表示的N元语言模型(N-gram…

每日一道算法---数组中出现次数超过一半的数字

数组中出现次数超过一半的数字 1.题目2.思路3.代码 1.题目 链接: 数组中出现次数超过一半的数字 2.思路 【解题思路1】: 思路一:数组排序后,如果符合条件的数存在,则一定是数组中间那个数。这种方法虽然容易理解,但…

gcov的使用

什么是代码覆盖率? 代码覆盖率是对整个测试过程中被执行的代码的衡量,它能测量源代码中的哪些语句在测试中被执行,哪些语句尚未被执行。 代码覆盖率的指标种类 代码覆盖率工具通常使用一个或多个标准来确定你的代码在被自动化测试后是否得…

SQL注入第一章节

SQL注入第一章节 1.1 什么是SQL注入 SQL 注入(Injection) 概述 SQL注入即是指web应用程序对用户输入数据的合法性没有判断或过滤不严,攻击者可以在web应用程序中事先定义好的查询语句的结尾上添加额外的SQL语句,在管理员不知情…

合并表格的指定列按序号排序

这里有一个Excel需求: 如下图所示,需要在序号那一列自动排序下去。 但是是合并的行,而且合并的行数还是不确定的,那怎么给他自动排序下去呢? 解决方法可供参考:使用筛选和COUNT函数完成。 1.第一步筛选 首…

Collection集合

Collection集合面试题 导学 这次课程主要涉及到的是List和Map相关的面试题,比较高频就是 ArrayList LinkedList HashMap ConcurrentHashMap ArrayList底层实现是数组LinkedList底层实现是双向链表HashMap的底层实现使用了众多数据结构,包含了数组、…

5.MySQL索引事务

文章目录 🐾1. 索引🐾💐1.1 概念💐🌸1.2 作用与缺点🌸🌷1.2.1作用🌷🍀1.2.2缺点🍀 🌹1.3 使用场景🌹🌻1.4 使用&#x1f3…

阿里云服务器官网

阿里云服务器官网:https://www.aliyun.com/product/ecs 阿里云服务器分为云服务器ECS、轻量应用服务器、GPU云服务器等,云服务器ECS是阿里云明星级产品,专业级云服务器,如下图: 阿里云服务器ECS 阿里云服务器网分享阿…

【论文阅读】Learing to summarize from human feedback

前言 更多关于大模型的文章可见:ShiyuNee/Awesome-Large-Language-Models: Papers about large language models (github.com) 该仓库持续更新 Abs 通过训练模型来向着人类偏好优化可以显著提高摘要质量。 Method High-level methodology 从一个在摘要数据集上…

剑指offer(C++)-JZ3:数组中重复的数字(算法-排序)

作者:翟天保Steven 版权声明:著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处 题目描述: 在一个长度为n的数组里的所有数字都在0到n-1的范围内。 数组中某些数字是重复的,但不知道有几…