IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Python知识库 -> python爬虫_简单js逆向md5解析 -> 正文阅读

[Python知识库]python爬虫_简单js逆向md5解析

本文借鉴有道翻译网站进行学习,借助有道翻译,输入要翻译文字,输出翻译后文字

有道翻译

进入网址F12进行分析
在这里插入图片描述
用常用方法在源码中查找不到需要的翻译后单词,点击控制台,进行抓包尝试
在这里插入图片描述
发现运行一次就有一个人translate的文件产生,点击查看是post请求,不难猜出,有道翻译是在用户输入需翻译文字后,以表单的形式提交给服务器,服务器在回以翻译后的信息,因此,我们需要访问这个表单文件,来获取翻译功能。

以表单形式访问,需要headers和data两个信息,headers可直接复制此网址的头文件,data也可以复制,但可以发现有三个元素在变化
在这里插入图片描述
可以看到 i对应的就是我们需要翻译的文字,在传参的时候只需要将想翻译的文字传给“i”就可以实现翻译功能了。
而后三个在每次的翻译时都会变化,因此,这就是有道翻译的js加密的地方,我们需要破解这其中的规律,就可以实现其功能了。
在这里插入图片描述
1、点击右上角search,进行收缩,可收缩变化的三个值
2、点击搜索结果,即可跳转到详情页
3、ctrl+f继续在详情页搜索,我搜索的时sign
4、找搜索结果,看哪里与想要结果相识

在这里插入图片描述
最后发现,这一段文字便是data的加密格式,

r = "" + (new Date).getTime()

可以去终端运行,发现他返回的是一顿数字,
而这个数字就是 时间戳

时间戳:一个能表示一份数据在某个特定时间之前已经存在的、 完整的、 可验证的数据,通常是一个字符序列,唯一地标识某一刻的时间。

可以查询一下作用。
知道后我们就可以得到ts的值,对应python中的time库方法time()

i = r + parseInt(10 * Math.random(), 10);

得到了r,就可以得到i,i是r加上一个随机数组成

最后把重点放在sign: n.md5("fanyideskweb" + e + i + "Y2FYu%TNSbMCxc3t2u^XT")

sign: n.md5("fanyideskweb" + e + i + "Y2FYu%TNSbMCxc3t2u^XT")

出现了MD5,以此可以肯定是MD5加密的,加密的这段文字我们只有 e 不知道是什么东西,所以我们可以去加断点进行运行
在这里插入图片描述
我把断点加载了8393,只要在要运行代码后面就可以了,可以看到,后面显示的e就是我们输入的要翻译文字,以此,我们只需要把这一段字符串连接起来,然后进行MD5翻译处理,就可以得到完整的data了!!!!

完整代码在这里。

import requests
import time
import random
from hashlib import md5

def get_data():
    ts = str(int((time.time()) * 1000))

    salt = ts + str(random.randint(0,9))

    # "fanyideskweb" + e + i + "Y2FYu%TNSbMCxc3t2u^XT"
    string = "fanyideskweb" + word + salt + "Y2FYu%TNSbMCxc3t2u^XT"
    m = md5()
    m.update(string.encode())
    sign = m.hexdigest()

    return salt, sign, ts


if __name__ == '__main__':

    word = input("请输入需要翻译的数据:")

    url = "https://fanyi.youdao.com/translate_o?smartresult=dict&smartresult=rule"

    headers = {
        "Accept": "application/json, text/javascript, */*; q=0.01",
        "Accept-Encoding": "gzip, deflate, br",
        "Accept-Language": "zh-CN,zh;q=0.9",
        "Connection": "keep-alive",
        "Content-Length": "252",
        "Content-Type": "application/x-www-form-urlencoded; charset=UTF-8",
        "Cookie": "OUTFOX_SEARCH_USER_ID=-275613969@10.108.160.102; OUTFOX_SEARCH_USER_ID_NCOO=1272265741.437904; _ntes_nnid=af38c620d14400c61a92c25ce9ff4e36,1626854456046; fanyi-ad-id=115021; fanyi-ad-closed=1; JSESSIONID=aaag1Z9Xzl8dG6_vPljVx; ___rl__test__cookies=1631172142666",
        "Host": "fanyi.youdao.com",
        "Origin": "https://fanyi.youdao.com",
        "Referer": "https://fanyi.youdao.com/",
        "sec-ch-ua": '"Google Chrome";v="93", " Not;A Brand";v="99", "Chromium";v="93"',
        'sec-ch-ua-mobile': "?0",
        "sec-ch-ua-platform": '"Windows"',
        "Sec-Fetch-Dest": "empty",
        "Sec-Fetch-Mode": "cors",
        "Sec-Fetch-Site": "same-origin",
        "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/93.0.4577.63 Safari/537.36",
        "X-Requested-With": "XMLHttpRequest",
    }

    salt, sign, ts = get_data()

    data = {
        "i": word,
        "from": "AUTO",
        "to": "AUTO",
        "smartresult": "dict",
        "client": "fanyideskweb",
        "salt": salt,
        "sign": sign,
        "lts": ts,
        "bv": "c494f72cba54a5d5ec07a78b3a85e4c8",
        "doctype": "json",
        "version": "2.1",
        "keyfrom": "fanyi.web",
        "action": "FY_BY_REALTlME",
    }
    response = requests.post(url=url, data=data, headers=headers).json()
    print(response['translateResult'][0][0]["tgt"])

结果
在这里插入图片描述

  Python知识库 最新文章
Python中String模块
【Python】 14-CVS文件操作
python的panda库读写文件
使用Nordic的nrf52840实现蓝牙DFU过程
【Python学习记录】numpy数组用法整理
Python学习笔记
python字符串和列表
python如何从txt文件中解析出有效的数据
Python编程从入门到实践自学/3.1-3.2
python变量
上一篇文章      下一篇文章      查看所有文章
加:2021-09-10 10:48:01  更:2021-09-10 10:48:41 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/15 14:05:10-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码